Hug*_*葛修远 10 php redirect curl paypal
我正在尝试使用PayPal的Express Checkout设置简单的付款顺序.我的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
)
Run Code Online (Sandbox Code Playgroud)
关于请求的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] =>
)
Run Code Online (Sandbox Code Playgroud)
我通过curl从PayPal得到的回复:
Array
(
[TOKEN] => EC-59031295261754641
[TIMESTAMP] => 2014-01-20T10:12:27Z
[CORRELATIONID] => 84d3d68cbd574
[ACK] => Success
[VERSION] => 74.0
[BUILD] => 9285531
)
Run Code Online (Sandbox Code Playgroud)
然后,我将用户重定向到该令牌的相关URL(使用令牌urlencode
d),在这种情况下:
https://www.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=EC-59031295261754641
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎都很好,但是当我重定向到该URL时,它总是显示"事务已过期屏幕".
谁能指出我做错了什么?
Hug*_*葛修远 32
问题是它处于沙箱模式,应该进行重定向
https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=
而不是上面显示的URL.
这在Express Checkout集成指南的第36页上显示.
归档时间: |
|
查看次数: |
12271 次 |
最近记录: |