【发布时间】:2015-05-07 22:50:31
【问题描述】:
我正在尝试对我的网站实施 PayPal 直接付款。
在调用 SetExpressCheckout 时,我从 PayPal 收到了成功令牌:
Array
(
[TIMESTAMP] => 2015-03-06T10:16:55Z
[CORRELATIONID] => 7d0a42f74fa6b
[ACK] => Success
[VERSION] => 121
[BUILD] => 15420584
[AMT] => 125.00
[CURRENCYCODE] => EUR
[AVSCODE] => X
[CVV2MATCH] => M
[TRANSACTIONID] => 29A40018PU668530B
)
响应如下所示:
TIMESTAMP=2015%2d03%2d06T10%3a16%3a55Z&CORRELATIONID=7d0a42f74fa6b&ACK=Success&VERSION=121&BUILD=15420584&AMT=125%2e00&CURRENCYCODE=EUR&AVSCODE=X&CVV2MATCH=M&TRANSACTIONID=29A408
我已尝试以多种方式降低 URL 以将响应发送回顶部贝宝。我现在用的是:
$result = rawurldecode($result);
结果如下所示: TIMESTAMP=2015-03-06T10:16:55Z&CORRELATIONID=7d0a42f74fa6b&ACK=Success&VERSION=121&BUILD=15420584&AMT=125.00&CURRENCYCODE=EUR&AVSCODE=X&CVV2MATCH=M&TRANSACTIONID=29A40018PU668530B
我尝试用 strtolower 来处理请求,结果变成了这样:
小写的结果:
timestamp=2015-03-06t10:31:45z&correlationid=490f48424be02&ack=success&version=121&build=15420584&amt=125.00¤cycode=eur&avscode=x&cvv2match=m&transactionid=80g4320670816912n
我已经意识到 cycode 之前那个奇怪的字符:¤
当我尝试使用这样的 PHP 重定向发回令牌时,(带或不带小写字母):
header('Location: https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&'.$result);
我被重定向到: https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_flow&SESSION=...
说:
此交易无效。请返回收件人的网站 使用他们的常规结账流程完成您的交易。返回 给商家 目前,我们无法处理您的请求。 请返回并尝试其他选项。测试地点
即使我使用的是非小写版本,我也会遇到同样的错误!
我意识到 localhost 是个问题。上传我的网站时,SetExpressCheckout 令牌很好。
现在问题是当我取回这个令牌时: TOKEN=EC%2d0PA6125744246545G&TIMESTAMP=2015%2d03%2d06T13%3a10%3a09Z&CORRELATIONID=10c7929423b68&ACK=Success&VERSION=121&BUILD=15640276
并使用以下参数发送 GetExpressCheckoutDetails 请求:
Array
(
[METHOD] => GetExpressCheckoutDetails
[USER] => ...
[PWD] => ...
[SIGNATURE] => ...
[VERSION] => 121
[TOKEN] => TOKEN=EC-0PA6125744246545G&TIMESTAMP=2015-03-06T13:10:09Z&CORRELATIONID=10c7929423b68&ACK=Success&VERSION=121&BUILD=15640276
)
我仍然收到令牌错误:
Array
(
[TIMESTAMP] => 2015-03-06T13:10:10Z
[CORRELATIONID] => 4ec125d8280f3
[ACK] => Failure
[VERSION] => 121
[BUILD] => 15640276
[L_ERRORCODE0] => 10410
[L_SHORTMESSAGE0] => Invalid token
[L_LONGMESSAGE0] => Invalid token.
[L_SEVERITYCODE0] => Error
)
感谢您在这方面帮助我!
【问题讨论】:
-
那个“奇怪的字符”是 &CURREN,因为您将整个字符串解码为单个查询字符串值。
标签: paypal paypal-sandbox