如何向 actions.order.create paypal 集成添加更多属性

Posted

技术标签:

【中文标题】如何向 actions.order.create paypal 集成添加更多属性【英文标题】:How to add more properties to actions.order.create paypal intergration 【发布时间】:2019-12-25 19:27:03 【问题描述】:

我想在 paypal 的 actions.order.create 函数中添加更多属性。 tax_total、运费、保险、客户购买的物品清单等属性。

我已经实现了他们网站上的代码,它工作正常,剩下的就是在代码中添加额外的细节。这是他们的文档:https://developer.paypal.com/docs/api/orders/v2/#orders_create。

<script>
    paypal.Buttons(
        createOrder: function(data, actions) 
            return actions.order.create(
                purchase_units: [
                    amount: 
                        // value: '350.00',
                        breakdown: 
                            item_total: '300.00',
                             tax_total: '20.00',
                             shipping: '10.00',
                             handling: '10.00',
                             insurance: '10.00'
                         ,
                     
                 ]
             );
         ,
         onApprove: function(data, actions) 
             // Capture the funds from the transaction
             return actions.order.capture().then(function(details) 
                 // Show a success message to your buyer
                 console.log(data, actions);
                 alert('Transaction completed by ' + details.payer.name.given_name);
                 // Call your server to save the transaction
                 return fetch('/paypal-transaction-complete', 
                     method: 'post',
                     headers: 
                         'content-type': 'application/json',
                         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                     ,
                     body: JSON.stringify(
                         orderID: data.orderID
                     )
                 );
             );
         
     ).render('#paypal-button-container');
</script>

上面的代码是我尝试过的,我预计分解属性将成为有效负载的一部分,如文档中所示,但我从控制台收到错误消息。

那么添加这些属性的正确方法是什么?在此先感谢:)

【问题讨论】:

【参考方案1】:

我在这里找到了答案:

https://github.com/paypal/paypal-checkout-components/issues/1098

该链接中的示例的货币代码对我不起作用。下面是一个类似的例子:

var createOrder = function createOrder(data, actions)  
    return actions.order.create(
      "purchase_units": [
        
          "reference_id": 1234,
          "description": "Attempt n.1 for Quote ID 1234",
          "amount": 
            "currency_code": "USD",
            "value": 14.4,
            "breakdown": 
              "item_total":  "currency_code":"USD", "value":"12",
              "shipping":  "currency_code":"USD", "value":"1",
              "tax_total":  "currency_code":"USD", "value":"1.4",
              "discount":  "currency_code":"USD", "value":"0"
            
          ,
          "items": [
            
              "name": "OnePlus 6 T-rex 12\" name for 14\"\" blabla \" more double quotes",
              "unit_amount": 
                "currency_code": "USD",
                "value": 12
              ,
              "tax": 
                "currency_code": "USD",
                "value": 1.4
              ,
              "quantity": 1,
              "sku": "OnePlus61",
              "category": "PHYSICAL_GOODS"
            
          ],
          "shipping": 
            "address": 
              "address_line_1": "Some line 1",
              "address_line_2": "Some line 2",
              "admin_area_2": "Some city",
              "admin_area_1": "some state",
              "postal_code": "12345",
              "country_code": "GB"
            
          
        
      ]
    );
  ;

请注意,每个金额加起来必须等于总值(在本例中为 14.4)。另请注意,在此示例中,键 tax_total 和 tax 的值必须匹配。如果您的订单中有不止一件商品,则情况可能并非如此。

【讨论】:

以上是关于如何向 actions.order.create paypal 集成添加更多属性的主要内容,如果未能解决你的问题,请参考以下文章

贝宝智能支付按钮动态支付金额

如何向Map中添加数据

如何让特定段落向左浮动,图像向右浮动

如何向用户显示警报?

如何向 jtextfield 添加填充

如何向免费用户显示不同的页面,向付费用户显示不同的页面