通过Paypal REST API支付Paypal不会在Paypal Sandbox或实时网站上显示付款说明

时间:2013-04-08 17:58:00

标签: rest paypal paypal-sandbox

我正在使用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网站上支付的金额,即使这个金额在我的网站上列出。

这就是它的样子:

enter image description here

对于那些希望表明用户尚未登录的用户,即使在登录后,说明和当前购买列仍为空白。

我是否缺少需要发送到Paypal的任何参数才能显示此描述数据?

注意:live和sandbox服务器仍然存在此问题。

2 个答案:

答案 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);