对 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沙箱请求很慢,实时站点请求是不是更快?

尝试执行 PayPal 付款请求时出现 HTTP 400 错误。 (file_get_contents)

关于经典nvp API paypal的HTTP get和post方法

对paypal沙箱的HTTPS请求失败

使用 Spring 控制器处理 Paypal IPN 请求?

Paypal 我们目前无法完成您的请求。请稍后再试。我们对不便表示抱歉