我正在使用paypal rest API在java web应用程序中使用paypal express checkout方法处理付款,目前应用程序指向paypal沙盒。直到最近我们才对没有问题的交易进行测试,但突然它现在无法正常工作,也没有进行任何编码更改,
现在当重定向到paypal网站以供用户批准时,总是得到一个页面说,
This transaction has expired. Please return to the recipient's website to complete your transaction using their regular checkout flow
We're sorry, but your session has ended. Your account hasn't been charged. Please go back to the merchant's site and check out again with PayPal.
我在java中获取重定向URL(批准URL),如下所示
private String getApprovalURL(Payment payment)
throws UnsupportedEncodingException {
String redirectUrl = null;
List<Links> links = payment.getLinks();
for (Links l : links) {
if (l.getRel().equalsIgnoreCase("approval_url")) {
redirectUrl = URLDecoder.decode(l.getHref(), "UTF-8");
break;
}
}
return redirectUrl;
}
我正在获得类似于以下的重定向网址
https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6U3345417C9052027
这种行为可能是什么原因?有什么建议吗?
感谢。
答案 0 :(得分:2)
我们也遇到过这个问题。我们通过修改从paypal回调中收到的返回网址解决了这个问题,并在重定向之前明确地将sandbox
添加到网址。
收到的实际网址: https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6U3345417C9052027
修改后的网址: https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6U3345417C9052027