我正在使用Paypal方法实现Paypal的新REST API Pay,可以在这里引用: https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/
付款执行得很好,完全按照应有的方式执行。用户选择使用Paypal付款,然后重定向到Paypal网站,在那里他需要登录并批准付款。我发送Paypal的JSON数据几乎就是上面链接中指定的内容,我的看起来像这样:
{
"intent":"sale",
"redirect_urls":{
"return_url":"http://<return URL here>",
"cancel_url":"http://<cancel URL here>"
},
"payer":{
"payment_method":"paypal"
},
"transactions":[
{
"amount":{
"total":"7.47",
"currency":"USD"
},
"description":"This is the payment description."
}
]
}
当用户将用户重定向到paypal网站时,描述和总金额列显示为空白
我不确定这是否是Paypal的REST API上的错误,但我相信我提供必要的说明+金额付款以反映在此页面上。如果没有显示这些信息,它通常是对用户的威慑,因为他们肯定希望看到他们在Paypal网站上支付的金额,即使这个金额在我的网站上列出。
这就是它的样子:
对于那些希望表明用户尚未登录的用户,即使在登录后,说明和当前购买列仍为空白。
我是否缺少需要发送到Paypal的任何参数才能显示此描述数据?
注意:live和sandbox服务器仍然存在此问题。
答案 0 :(得分:39)
上面的左侧平移显示: 1.订单中的商品详情。您可以在付款资源中包含项目列表作为交易详细信息的一部分。这里也会显示相同的内容。 2.交易金额的组成部分,例如运费金额,税金等,如果您将其包含在请求中。
尝试此请求以查看示例:
{
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"redirect_urls": {
"return_url": "http://<return url>",
"cancel_url": "http://<cancle url>"
},
"transactions": [
{
"amount": {
"total": "8.00",
"currency": "USD",
"details": {
"subtotal": "6.00",
"tax": "1.00",
"shipping": "1.00"
}
},
"description": "This is payment description.",
"item_list": {
"items":[
{
"quantity":"3",
"name":"Hat",
"price":"2.00",
"sku":"product12345",
"currency":"USD"
}
]
}
}
]
}
答案 1 :(得分:-1)
谢谢。 Madhu记得使用rest-api库!
Details amountDetails = new Details();
amountDetails.setSubtotal(autoregistro.getPedido().getItems().get(0).getTotal().toPlainString());
amountDetails.setTax("0");
amountDetails.setShipping("0");
Amount amount = new Amount();
amount.setCurrency("USD");
amount.setTotal(autoregistro.getPedido().getItems().get(0).getTotal().toPlainString());
// amount.setTotal("7.47"); // Los decimales deben ser con punto
amount.setDetails(amountDetails);
Item item = new Item();
item.setCurrency("USD");
item.setQuantity("1");
item.setName(autoregistro.getPedido().getItems().get(0).getDescripcion());
item.setPrice(amountDetails.getSubtotal());
List<Item> items = new ArrayList<Item>();
items.add(item);
ItemList itemList = new ItemList();
itemList.setItems(items);
Transaction transaction = new Transaction();
transaction.setDescription(item.getName());
transaction.setAmount(amount);
transaction.setItemList(itemList);
List<Transaction> transactions = new ArrayList<Transaction>();
transactions.add(transaction);
Payer payer = new Payer();
payer.setPaymentMethod("paypal");
// payer.setPaymentMethod("credit_card");
Payment payment = new Payment();
payment.setIntent("sale");
payment.setPayer(payer);
payment.setTransactions(transactions);
RedirectUrls redirectUrls = new RedirectUrls();
redirectUrls.setCancelUrl(this.configParameters.getAutoregistroURL() + "/pay_paypal?cancel=true");
redirectUrls.setReturnUrl(this.configParameters.getAutoregistroURL() + "/pay_paypal?success=true");
payment.setRedirectUrls(redirectUrls);
Payment createdPayment = payment.create(apiContext);