Paypal Checkout Express 空车问题
Posted
技术标签:
【中文标题】Paypal Checkout Express 空车问题【英文标题】:Paypal Checkout Express empty cart problem 【发布时间】:2011-09-16 14:39:57 【问题描述】:我正在按照 Paypal 的 API 规范在我的网站中集成 Paypal。我正在沙盒中对其进行测试,并在发送 SetExpressCheckout
请求后,如下所示:
CURRENCYCODE=EUR
&RETURNURL=http%3A%2F%2Fwww.xxxxxxxx
&CANCELURL=http%3A%2F%2Fwww.xxxxxxxx
&PAYMENTACTION=Sale
&L_PAYMENTREQUEST_0_NAME0=T-shirt+ring-spun+attillata%3B+taglia+L%3B+colore+Navy
&L_PAYMENTREQUEST_0_NUMBER0=0LLR7IQ-B0SIE+%28Product+%230LLR7IQ-B0SIE%29
&L_PAYMENTREQUEST_0_DESC0=160+g%2Fm%C2%B2%2C+100+%25+cotone+ring-spun%2C+pre-ristretto%2C+simple+jersey%2C+scollatura+arrotondata%2C+maniche+corte%2C+impunture+sulla+scollatura%2C+sul+bordo+delle+maniche+e+sulla+base%2C+cuciture+laterali.
&L_PAYMENTREQUEST_0_AMT0=1.90
&L_PAYMENTREQUEST_0_QTY0=1
&L_PAYMENTREQUEST_0_NAME1=T-shirt+ring-spun+attillata%3B+taglia+M%3B+colore+Dark+Heather
&L_PAYMENTREQUEST_0_NUMBER1=0LLR7IQ-2KEI1+%28Product+%230LLR7IQ-2KEI1%29
&L_PAYMENTREQUEST_0_DESC1=160+g%2Fm%C2%B2%2C+100+%25+cotone+ring-spun%2C+pre-ristretto%2C+simple+jersey%2C+scollatura+arrotondata%2C+maniche+corte%2C+impunture+sulla+scollatura%2C+sul+bordo+delle+maniche+e+sulla+base%2C+cuciture+laterali.
&L_PAYMENTREQUEST_0_AMT1=1.90
&L_PAYMENTREQUEST_0_QTY1=1
&L_PAYMENTREQUEST_0_NAME2=T-shirt+ring-spun+attillata%3B+taglia+S%3B+colore+White
&L_PAYMENTREQUEST_0_NUMBER2=0LLR7IQ-TFOHI+%28Product+%230LLR7IQ-TFOHI%29
&L_PAYMENTREQUEST_0_DESC2=160+g%2Fm%C2%B2%2C+100+%25+cotone+ring-spun%2C+pre-ristretto%2C+simple+jersey%2C+scollatura+arrotondata%2C+maniche+corte%2C+impunture+sulla+scollatura%2C+sul+bordo+delle+maniche+e+sulla+base%2C+cuciture+laterali.
&L_PAYMENTREQUEST_0_AMT2=1.59
&L_PAYMENTREQUEST_0_QTY2=1
&ITEMAMT=5.39
&TAXAMT=1.08
&SHIPPINGAMT=0.00
&AMT=6.47
&ALLOWNOTE=1
&USER=XXXXXXXX
&PWD=XXXXXXXX
&SIGNATURE=XXXXXXXX
&METHOD=SetExpressCheckout
&VERSION=53.0
我将用户转发到 here,这是 Paypal 为响应我的第一个请求而返回给我的令牌。
问题是,尽管设置了所有价格的请求成功,但我有一个空白的 Paypal 评论页面,完全没有价格。
我错过了什么?
【问题讨论】:
【参考方案1】:攻击糟糕的 API 文档! Paypal 确实很努力,但他们功亏一篑。我已经和这个 API 战斗过并且赢了! :)
更改您已有的这些值...如果它解决了问题,请告诉我
&PAYMENTREQUEST_0_PAYMENTACTION=Sale [[ <--- payment action ]]
&PAYMENTREQUEST_0_CURRENCYCODE=EUR [[<-- currency code]]
&PAYMENTREQUEST_0_ITEMAMT=5.39 [[<---- subtotal here]]
&PAYMENTREQUEST_0_TAXAMT=1.08 [[<---- tax here]]
&PAYMENTREQUEST_0_SHIPPINGAMT=0.00 [[<---- shipping here]]
&PAYMENTREQUEST_0_AMT=6.47 [[<---- grand total here]]
&PAYMENTREQUEST_0_ALLOWNOTE=1
【讨论】:
谢谢,我找到了这些信息并相应地更改了我的请求,但现在的问题是,paypal 不会在生产中将我的交易记入买方账户(也不会记入我的卖方账户) .尽管对 DoExpressCheckoutPayment 的调用(与之前的 SetExpressCheckout API 调用中的请求数据相同)返回成功...我的交易流程是否正确(如下)? 1) 发送 POST SetExpressCheckout 请求(包含所有订单数据、总计等)并解析响应; 2)如果响应成功,将用户的浏览器重定向到paypal的网站(webscr); 3) 当paypal将用户重定向到我在setexpresscheckout中指定的回调url时,我调用GetExpressCheckoutDetails然后对Paypal执行一个POST DoExpressCheckoutPayment请求,如果成功,对用户说OK。 是的,这是正确的流程。您是否在返回值的ACK
键中获得“成功”?如果是这样,那么一切都应该是好的。不过,请确保您没有仍在使用沙盒 API 和凭据!
谢谢,我找到了问题:API 调用中的参数错误。感谢您的帮助。【参考方案2】:
除了这里的其他 cmets,在从 SetExpressCheckout 获得响应后重定向到 PayPal 时,请务必使用未记录的“useraction”选项:
?cmd=_express-checkout&useraction=commit&token=the-returned-token
(下面的链接失效了)
Here's the PayPal forum reference to this parameter
【讨论】:
“一定要用”和“无证”在同一句话吓死我了【参考方案3】:这个问题也困扰了我好几天。
使用 developer.paypal.com 的 Java SDK(截至 2008 年),我终于在https://www.x.com/developers/paypal/documentation-tools/sdk#3找到了新版本的 SDK(2011 年 11 月)
使用新的 SDK(特别是更新后的 paypal_base.jar)还没有解决我的问题。
您必须找出正确的 API 版本字符串才能使其运行。使用版本“51.0”(在我的一些示例代码中),调用失败。与“78.0”版本一样,新的 SDK 完成了这项工作。
欢呼……
【讨论】:
以上是关于Paypal Checkout Express 空车问题的主要内容,如果未能解决你的问题,请参考以下文章
PayPal Express Checkout 通行证 transactionID
如何访问 Paypal Express Checkout 的响应?
如何为 PayPal Express Checkout 配置 IPN?
paypal express checkout - 400 错误请求