- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在尝试将 PayPal 与我的网站集成,一切都很顺利 - 直到我们进行 IPN 检查为止。
它一直到 if/elseif/else block ,这就是它结束的地方。它输出一条消息,内容如下:
“无效状态。form_charset=UTF8”
这是我的代码。
@using System.Collections.Generic
@using System.Text
@using System.Web
@using System.Web.UI
@using System.Web.UI.HtmlControls
@using System.Web.UI.WebControls
@using System.ComponentModel
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "Checkout | SSSSS";
string postUrl = "https://www.paypal.com/cgi-bin/webscr";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(postUrl);
//Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
string strRequest = System.Text.Encoding.UTF8.GetString(param);
string ipnPost = strRequest;
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;
//for proxy
//WebProxy proxy = new WebProxy(new Uri("http://url:port#"));
//req.Proxy = proxy;
//Send the request to PayPal and get the response
StreamWriter streamOut = new StreamWriter(req.GetRequestStream(),
System.Text.Encoding.UTF8);
streamOut.Write(strRequest);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close();
/*/ logging ipn messages... be sure that you give write
// permission to process executing this code
string logPathDir = ResolveUrl("Messages");
string logPath = string.Format("{0}\\{1}.txt",
Server.MapPath(logPathDir), DateTime.Now.Ticks);
File.WriteAllText(logPath, ipnPost);
/*/
}
@if (strResponse == "VERIFIED")
{
/*---------------- WILL DO OTHER CHECKS LATER ------------------*/
//check the payment_status is Completed
<p>status is verified</p>
//check that txn_id has not been previously processed
//check that receiver_email is your Primary PayPal email
//check that payment_amount/payment_currency are correct
//process payment
}
else if (strResponse == "INVALID")
{
//log for manual investigation
<p>status is invalid.</p>
<p>@ipnPost</p>
}
else
{
//log response/ipn data for manual investigation
<p>status is invalid.</p>
<p>@ipnPost</p>
}
我完全不知道为什么这没有按预期工作;如果有任何帮助,我将不胜感激。
最佳答案
我对 Razor 不是很流利,但这是我使用 asp.net webforms 的方法。我相信这是来自另一个网站(或者大部分),遗憾的是我不记得在哪里。因此,此代码的基础知识不是我的功劳。
string strLive = "https://www.paypal.com/cgi-bin/webscr";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strLive);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;
StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close();
NameValueCollection ppDetails = HttpUtility.ParseQueryString(strRequest);
if (strResponse == "VERIFIED"){
if (ppDetails["payment_status"] == "Completed"){
//yay, give them goodies
} else if (strResponse == "INVALID"){
//log IP and possibly block them from your web services if malicious
} else {
//log response/ipn data for manual investigation
}
}
主要区别似乎是您使用的是 UTF8,而我的有效代码使用的是 ASCII。我还添加了“ppDetails”部分,让您了解如何处理变量。
希望对您有所帮助。我花了很长时间才弄清楚 Paypal IPN,一旦我弄清楚了,我就觉得自己很傻。
关于c# - PayPal IPN 集成(快速结账 - Razor/C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7852848/
我正在为 WooCommerce 创建一个插件来修改结账页面。我想根据用户的购物车做一些条件过滤器。有没有办法查看购物车中的商品,并确定是否有任何商品不可下载/虚拟? 到目前为止,我有一个过滤器,并且
我必须检查一些代码并在我的 Eclipse 中运行它。我正在 Windows 上工作。我有网址: svn+ssh://somename1@subversion.host.com/GoogleCloud
我正在尝试删除 2 个结帐步骤。 我试图遵循站点中的文档http://guides.spreecommerce.com/checkout.html 但仍然没有任何 react 。 我在用 spree
我有一个未暂存的修改文件,我想放弃更改。 在 git 中它会是这样的 git checkout -- . 如何使用 JGit 模拟此行为? 提前致谢。 最佳答案 要恢复单个文件,您可以使用 Clean
所以我正在制作一个小型购物车应用程序。结帐项目是这样的:收集用户信息 -> 列出所有订单数据的订单确认页面 -> 用户点击 OK 并被重定向到 paypal -> 用户登录到他的 pp 帐户 -> 被
我正在尝试向大型卡特尔网站添加折扣代码字段。我在bigcartel设置了可用的折扣码,但是结账的时候没有显示折扣字段。这是因为我将用户发送到 PayPal 进行结帐。有没有办法在我的购物车中添加一个折
我有一个以通常方式集成 PayPal 的商店系统,即用户被重定向到 paypal.com 以登录并确认付款,之后用户被引导回到我的商店系统中的确认页面。 现在我的客户问是否可以在店内运行整个过程。 我
我正在尝试使用 checkout.com 从信用卡中扣款。我正在使用带卡 token 的费用。我已经使用 checkoutkit.js 生成了卡 token 。并将该 token 传递给我的 Cont
我已经设法让 Stripe Checkout 使用 PHP 工作。但我想摆脱最初的 Stripe Button,它通常显示“继续付款”或“用卡付款”。我只是想链接我网站上的按钮以直接转到结帐弹出窗口。
我需要设置 Magento 的订单成功页面 /checkout/onepage/success/ 的样式,但因为它在没有订单 session 时重定向,所以我无法刷新页面来检查我的更改! 有人知道如何
我必须检查一些代码并运行它。我有网址: svn+ssh://myuser@www.myclient.com/home/svn/project/trunk 我有一个包含他们私钥的文件。我该如何获取此代码
我带着一个我一直为之疯狂的问题来找你,我正在为客户构建一个 woocommerce,但是当我在购物车上并单击结账时,表单变为“白色”,然后去结账,结账时,当页面加载时,一个表单是“白色”,当我点击“进
我使用过 paypal 快速结账沙盒,但是当我点击购买某物时,paypal 中没有显示任何价格或商品名称。 在我的页面上,我放了这个表格: 我已经将来自 paypal 的这两个代码包含到我的脚本
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 3 年前。 Improve
我遇到了一个问题,我使用 tableview 作为侧边栏来显示应用程序中的某些 Controller 。尝试预设 Adyen 结帐付款时收到错误,提示我无法使用多重展示,我的问题是,我该如何解决此问题
在 WooCommerce 中,每当选择“送货到家”时,我都会尝试隐藏公司名称字段。我尝试了很多不同的事情。 这是我最近的尝试: add_filter('woocommerce_checkout_fi
我正在尝试设置 Stripe 结账,以便我可以将我的服务器端客户邮政编码/邮政编码传递给 Stripe 结账。看起来它应该很简单,但我无法让它工作! 最简单的是,我使用的代码是: 交易工作正常
对于 AJAX 来说是全新的,所以我很难找到适合我的具体情况的资源。 我正在尝试使用 MYSQL 数据库构建一个简单的结账系统,其表布局如下: 现在我的网站布局如下: 带有“ checkin ”或“
我需要在我的自定义表单中添加一个额外的字段,我想添加信用卡的名称。 我尝试了以下方式: var cardNameElement = elements.create('cardName', { st
我想在 Magento/checkout/onepage/中隐藏“小计”行,并仅显示“总计”行。 我怎样才能做到这一点? 非常感谢 最佳答案 我刚刚将位于 app/design/frontend/ba
我是一名优秀的程序员,十分优秀!