【问题标题】:Paypal displays one amount, but charges anotherPaypal 显示一个金额,但收取另一个金额
【发布时间】:2017-07-10 09:31:15
【问题描述】:

我正在尝试实施优惠券折扣。

我遇到的问题是,虽然 Paypal识别请求了折扣,但它忽略了它。有趣的是,Paypal 向买家显示一个金额,但收取另一个金额。这怎么可能?

请查看以下截图:

您可以清楚地观察到,正在使用优惠券,并且要收取的金额为3,20 GBP

但是,当用户继续时,他将被收取 4,00 英镑,全额:


以下是发送到 Paypal 的对应 NVP 字符串(在调用 curl_exec() 之前)的值:

METHOD=SetExpressCheckout
VERSION=76.0
PWD=*something*
USER=e-shop_api1.somesite.com
SIGNATURE=somesignature

ReturnUrl=http%3A%2F%2Fwww.example.com%2Fcheckout.php%3Faction%3Dnotify
CANCELURL=http%3A%2F%2Fwww.example.com%2Fshopping-bag%2F
PAYMENTACTION=Sale
CURRENCYCODE=GBP
PAYMENTREQUEST_0_CURRENCYCODE=GBP
ALLOWNOTE=1
PAYMENTREQUEST_0_SHIPPINGAMT=0.00
PAYMENTREQUEST_0_AMT=3.20
PAYMENTREQUEST_0_ITEMAMT=3.20

// Product
L_PAYMENTREQUEST_0_QTY0=1
L_PAYMENTREQUEST_0_AMT0=4
L_PAYMENTREQUEST_0_NAME0=Some+Item+-+SIZE+%2F+1+size
L_PAYMENTREQUEST_0_NUMBER0=THE+PRODUCT+02355

// Coupon
L_PAYMENTREQUEST_0_QTY1=1
L_PAYMENTREQUEST_0_AMT1=-0.80
L_PAYMENTREQUEST_0_NAME1=Coupon

TL;DR

为什么 Paypal 显示一个金额,然后收取另一个金额,以及如何解决这个问题?

【问题讨论】:

  • 英镑的小数点分隔符用逗号而不是句点很奇怪。
  • 我的猜测是前端的东西没有测试负数,但最终的支付屏幕是。您可能需要直接打折产品。
  • @Augwa 已经这样做了,但无济于事

标签: php paypal paypal-nvp


【解决方案1】:

DoExpressCheckoutPayment API 请求中的总金额很可能像 PAYMENTREQUEST_0_AMT=4 一样设置为 4,因此用户需要按传递的值付费。或许你可以把 DoExpressCheckoutPayment API 的请求贴出来让我看看?

【讨论】:

  • 我已经更新了 NVP 字符串的数据。请检查一下。另外,请记住,这些值是在就在 curl_exec(..) 被调用之前提取的。
  • 您帖子中的 NVP 字符串显示了 SetExpressCheckout API METHOD=SetExpressCheckout 的请求,它将返回一个令牌,付款人将被重定向到 PayPal 以验证付款,然后重定向回您的 ReturnUrl在 Set 调用中设置。在您调用 DoExpressCheckoutPayment API 之前,此时不会向付款人收费,其中金额可能设置为“4”。无论 SetExpressCheckout 中的金额如何,PayPal 都会对 DoExpressCheckoutPayment 中传递的金额值收费。
  • 是的,这是我发现的错误。我认为您确实应该将该信息包含在未来用户的答案中
猜你喜欢
  • 2016-04-29
  • 2014-07-29
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 2016-03-26
  • 2012-01-08
  • 2013-11-12
  • 2018-04-21
相关资源
最近更新 更多