对 Paypal 的 HTTP 请求
Posted
技术标签:
【中文标题】对 Paypal 的 HTTP 请求【英文标题】:HTTP request to Paypal 【发布时间】:2016-08-19 09:26:00 【问题描述】:我尝试通过 $http.get(AngularJS) 调用 Express Checkout Paypal API 并收到错误 81002(不支持指定的方法)。在我尝试使用 Google Chrome 的搜索栏调用 Express Checkout Paypal API 并获得令牌后,调用成功。我也尝试通过表单调用Express Checkout Paypal API,调用成功。我不明白为什么。
我尝试用这种方式调用Paypal API:
$http.jsonp("https://api-3t.sandbox.paypal.com/nvp?USER=[user]&PWD=[PWD]&SIGNATURE=[SIGNATURE]&VERSION=109.0&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_AMT=19.95&RETURNURL=http%3A%2F%2Flocalhost%3A3000%2FexpressCheckout.html&CANCELURL=http%3A%2F%2Flocalhost%3A3000%2FpagamentoAnnullato.html&METHOD=SetExpressCheckout")
.success(function(data)
console.log(data);
).error(function(error)
console.log(error);
);
如果我看到响应,我会得到令牌,但在控制台中我会收到此错误:Uncaught SyntaxError: Unexpected identifier
,我无法获取返回数据。
【问题讨论】:
【参考方案1】:跨域的 ajax 调用需要使用 JSONP 来解析响应。这是一个 AngularJS JSONP 示例:http://jsfiddle.net/saarmstrong/hYACX/8/light/
$http.jsonp("/echo/jsonp/?callback=JSON_CALLBACK&data=" + params)
.then(function(json)
$scope.response = json.data.data;
);
【讨论】:
需要一个 "?callback=JSON_CALLBACK" 以便 Angular 在返回时触发正确的函数。 凭证问题? Doublecheck Sandbox-vs-live API(凭证特定于每个)。 support.bigcommerce.com/articles/Public/… 我刚刚在https://api-3t.sandbox.paypal.com/nvp?callback=JSON_CALLBACK&data="USER":[USER],"PWD":[PWD],"SIGNATURE":[SIGNATURE],"VERSION":"109.0","RETURNURL":"http://localhost:3000/expressCheckout.html","CANCELURL":"http://localhost:3000/pagamentoAnnullato.html","METHOD":"SetExpressCheckout","PAYMENTREQUEST_0_PAYMENTACTION":"Sale","L_PAYMENTREQUEST_0_AMT":"20.00"
中更新,但在控制台中我收到此错误Invalid left-hand side in assignment
。此外,如果我看到响应,我会收到此错误 Method Specified is not Supported
@circusdei
我必须仔细检查数据应该如何编码,但正确的编码应该可以工作。
请查看here以上是关于对 Paypal 的 HTTP 请求的主要内容,如果未能解决你的问题,请参考以下文章
尝试执行 PayPal 付款请求时出现 HTTP 400 错误。 (file_get_contents)
关于经典nvp API paypal的HTTP get和post方法