使用沙盒中的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));
答案 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"**/));