内部服务器错误(500)paypal使用Sandbox中的Java json有效负载创建支付Rest API

时间:2016-10-24 21:42:54

标签: java json paypal paypal-sandbox

使用沙盒中的json有效内容使用Java代码创建paypal付款时,我收到内部服务器错误(500)

我用json做了这个:

{
"intent": "sale",
"redirect_urls":
{
"return_url": "somelink",
"cancel_url": "somelink"
},
"payer":
{
"payment_method": "paypal"
},
"transactions": [
{
"amount":
{
"total": "17",
"currency": "EUR"
},
"description": "This is payment tran."
}]
}

我试图用邮递员完成同样的事情,我可以做到。事实上,我使用邮递员完成了整个支付交易(批准和执行)

我正在通过Bearer传递正确的访问令牌。

HttpPost paymentPost = new HttpPost("api.sandbox.paypal.com/v1/payments/payment"); 
paymentPost.setHeader(HttpHeaders.AUTHORIZATION, pt.getTokenType() + " " + pt.getAccessToken()); 
List<NameValuePair> nvPairs = new ArrayList<NameValuePair>(4); 
nvPairs.add(new BasicNameValuePair("content-type", "application/json")); nvPairs.add(new BasicNameValuePair("Accept", "application/json"));
paymentPost.setEntity(new UrlEncodedFormEntity(nvPairs));

1 个答案:

答案 0 :(得分:0)

您正在设置内容类型并接受请求的正文而不是标题。而且在你的代码中,我不知道你在哪里将json添加到请求中。也许你正在这样做,并没有在你发布的代码中显示它。 。您需要使用addHeader添加两个标头。也许您可以尝试下面的代码,看看它是否解决了这个问题。

HttpPost paymentPost = new HttpPost("api.sandbox.paypal.com/v1/payments/payment");
paymentPost.setHeader(HttpHeaders.AUTHORIZATION, pt.getTokenType() + " " + pt.getAccessToken());  
paymentPost.addHeader("content-type", "application/json"); 
paymentPost.addHeader("Accept", "application/json"); 
paymentPost.setEntity(new StringEntity(/**"YOUR JSON STRING"**/));