【问题标题】:Why is the Paypal Sandbox not processing payments?为什么 Paypal 沙盒不处理付款?
【发布时间】:2011-09-27 03:41:38
【问题描述】:

我正在创建一个电子商务网站,并且与 paypal 的集成似乎正在运行。我有一个购物车,将里面的所有物品加起来,加上运费,然后用这些行将该数字发送到贝宝。

string address = "https://api-3t.sandbox.paypal.com/nvp?USER=<username>&PWD=<password>&VERSION=71.0&SIGNATURE=<signature>&METHOD=SetExpressCheckout&PAYMENTREQUEST_0_AMT=" + lblTotal.Text + "&PAYMENTREQUEST_0_CURRENCYCODE=USD&RETURNURL=http://www.secretskeletonminiatures.com/checkout.aspx&CANCELURL=http://www.secretskeletonminiatures.com/cart.aspx&PAYMENTREQUEST_0_PAYMENTACTION=Sale";

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);

然后我使用 HTTPWebResponse 从 paypal 获取响应并解析出令牌并将用户重定向到

Response.Redirect("https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=" + token);

当用户访问贝宝时,登录并点击“立即付款”按钮,然后被重定向到我网站的结帐页面。

所以一切看起来都很好。但是当我检查沙盒账户时,实际上并没有转移任何资金。

最常见的原因是重定向 url 中缺少 useraction=commit 参数,但它存在,所以这不是问题。

【问题讨论】:

    标签: c# paypal-sandbox


    【解决方案1】:

    致以后偶然发现这个问题的其他人。 我确实解决了。一旦用户在贝宝上确认付款后返回您的网站,您仍然需要向贝宝服务器发送 DoExpressCheckoutPayment 请求以处理付款。

    您需要将 PayerID 和 TOKEN 提供给 DoExpressCheckoutPayment 进行处理。 PayerID 附加在您的 RETURNURL 的 URL 中,或者可以通过使用 TOKEN 调用 GetExpressCheckoutDetails 来检索。

    【讨论】:

    • 在被重定向到成功 URL 后,我确实调用了 DoExpressCheckoutPayment。我重新获取了付款详细信息,它显示CHECKOUTSTATUSPaymentActionCompleted,但是当我检查仪表板时,交易选项卡中没有显示。
    【解决方案2】:

    我在集成 pay pal 时遇到了同样的问题,而且他们的系统似乎进行了一些修改。

    如果您转到您的买家帐户,您可能会看到您的付款处于待处理状态并在几天内获得批准,这与商家帐户的行为相同。

    【讨论】:

    • 我在这两个帐户上都没有看到任何待付款
    • 是从买家账户中扣除的金额并添加到卖家账户吗?
    • 不,它们的余额仍然与我开始时相同。
    • 这意味着它们是作为授权发送的,而不是“销售”类型的交易。这与 Brian 的问题不同,他只是缺少 DoExpressCheckoutPayment。
    猜你喜欢
    • 2016-10-27
    • 2016-07-18
    • 2015-07-01
    • 2021-08-31
    • 2020-07-24
    • 2017-03-09
    • 2015-11-30
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多