Php Paypal显示一个金额,但收取另一个金额

Php Paypal显示一个金额,但收取另一个金额,php,paypal,paypal-nvp,Php,Paypal,Paypal Nvp,我正在尝试实行优惠券折扣 我遇到的问题是,尽管Paypal认识到要求折扣,但它忽略了折扣。有趣的是,贝宝向买家显示一个金额,但收取另一个金额。这怎么可能 请查看下面的屏幕截图: 您可以清楚地看到,正在使用优惠券,并且要收取的金额为3,20 GBP 但是,当用户继续时,将向其收取4,00英镑的全额费用: 以下是发送到Paypal的对应NVP字符串的值(就在调用curl\u exec()之前): METHOD=SetExpressCheckout VERSION=76.0 PWD=*somet

我正在尝试实行优惠券折扣

我遇到的问题是,尽管Paypal认识到要求折扣,但它忽略了折扣。有趣的是,贝宝向买家显示一个金额,但收取另一个金额。这怎么可能

请查看下面的屏幕截图:

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

但是,当用户继续时,将向其收取4,00英镑的全额费用:


以下是发送到Paypal的对应NVP字符串的值(就在调用
curl\u 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;博士
为什么Paypal显示一个金额,并收取另一个金额,以及如何解决此问题?

DoExpressCheckoutPayment API请求中的总金额很可能设置为4,就像这样
PAYMENTREQUEST\u 0\u AMT=4
,因此用户在传递值时收取费用。也许你可以发布DoExpressCheckoutPayment API的请求,这样我就可以看一看了?

一个逗号而不是GBP小数分隔符的句点很奇怪。我猜前端没有测试负数,但最终的付款屏幕是。您可能需要直接对产品打折。@Augwa已经这样做了,但没有效果。我已经更新了NVP字符串的数据。请检查一下。另外,请记住,这些值是在调用
curl\u exec(..)
之前提取的。您帖子中的NVP字符串显示了SetExpressCheckout API
METHOD=SetExpressCheckout
的请求,它将返回您一个令牌,付款人将被重定向到PayPal以验证付款,然后重定向回在set调用中设置的ReturnUrl。在调用DoExpressCheckoutPayment API(其中金额可能设置为“4”)之前,此时不会向付款人收费。PayPal收取DoExpressCheckoutPayment中传递的金额值,而不考虑SetExpressCheckout中的金额。是的,这是我的错误,我以艰难的方式发现了。我认为你真的应该把这些信息纳入未来用户的答案中