我正在尝试使用PayPal的快速结账设置简单的付款顺序。我的SetExpressCheckout调用似乎工作正常,我得到ACK=Success
和一个令牌。但是,当我使用该令牌将用户重定向到PayPal时,它总是向他们显示一个屏幕:
此交易已过期。请返回收件人的网站 使用定期结帐流程完成交易。
您的会话已结束
很抱歉,您的会话已经结束。你的帐户还没有 带电。请返回商家网站并再次退房 使用PayPal。
为了澄清,我没有从SetExpressCheckout API调用中获取任何错误代码,但令牌似乎总是过期。我已经尝试重定向到无意义的令牌,但这会生成一个不同的页面。看来我正在接收一个有效的令牌并正确地重定向到它,但它总是在1-2秒内过期。
示例请求的详细信息:
我在初始的SetExpressCheckout请求中发送的内容:
Array
(
[PAYMENTACTION] => Sale
[useraction] => commit
[RETURNURL] => xxxx
[CANCELURL] => xxxxx
[PAYMENTREQUEST_0_AMT] => 49.00
[PAYMENTREQUEST_0_SHIPPINGAMT] => 0
[PAYMENTREQUEST_0_CURRENCYCODE] => USD
[PAYMENTREQUEST_0_ITEMAMT] => 49.00
[L_PAYMENTREQUEST_0_NAME0] => xxxxx
[L_PAYMENTREQUEST_0_DESC0] => xxxxx
[L_PAYMENTREQUEST_0_NUMBER0] => xxxxx
[L_PAYMENTREQUEST_0_AMT0] => 49
[L_PAYMENTREQUEST_0_QTY0] => 1
[METHOD] => SetExpressCheckout
[VERSION] => 74.0
[USER] => xxxxx
[PWD] => xxxxx
[SIGNATURE] => xxxxx
)
关于请求的Curl_getinfo:
Array
(
[url] => https://api-3t.sandbox.paypal.com/nvp
[content_type] => text/plain; charset=utf-8
[http_code] => 200
[header_size] => 255
[request_size] => 798
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 1.139
[namelookup_time] => 0
[connect_time] => 0.187
[pretransfer_time] => 0.64
[size_upload] => 660
[size_download] => 136
[speed_download] => 119
[speed_upload] => 579
[download_content_length] => 136
[upload_content_length] => 660
[starttransfer_time] => 1.139
[redirect_time] => 0
[certinfo] => Array
(
)
[primary_ip] => 23.4.59.42
[primary_port] => 443
[local_ip] => 192.168.0.102
[local_port] => 63049
[redirect_url] =>
)
我通过curl从PayPal返回的内容:
Array
(
[TOKEN] => EC-59031295261754641
[TIMESTAMP] => 2014-01-20T10:12:27Z
[CORRELATIONID] => 84d3d68cbd574
[ACK] => Success
[VERSION] => 74.0
[BUILD] => 9285531
)
然后,我将用户重定向到该令牌的相关网址(使用令牌urlencode
d),在这种情况下:
https://www.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=EC-59031295261754641
对我来说这一切似乎都很好,但是当我重定向到该网址时,它始终显示“交易已过期的屏幕”。
有谁可以指出我做错了什么?
答案 0 :(得分:32)
问题是它处于沙箱模式,重定向应该是
https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=
而不是上面显示的网址。
这显示在Express Checkout integration guide的第36页。
答案 1 :(得分:1)
我还解决了删除paypal cookie的类似问题。问题在于在同一浏览器中更改沙盒帐户clientId / secret。
答案 2 :(得分:0)
我解决了删除贝宝饼干的问题