贝宝智能付款按钮-如何创建订单服务器端并将订单ID传递给贝宝按钮设置?

时间:2019-12-14 11:41:41

标签: javascript php paypal paypal-rest-sdk paypal-buttons

我正在集成Paypal Checkout,并在their documentation中集成了有关如何在此处设置客户端SDK的信息。

我不想在客户端设置订单项和总和,而是使用服务器端设置step 4结尾处提到的订单。使用他们的PHP SDK,我可以设法毫无问题地设置订单,但是我在努力使事情顺利进行的地方是如何将创建的订单传递给客户端。创建的订单的返回对象具有ID和URL来开始捕获它,但是跟随链接实际上提供了与单击Paypal按钮不同的UX,因此我想在创建的订单中仍然使用Button。

使用示例代码:

  paypal.Buttons({
    createOrder: function(data, actions) {
      // This function sets up the details of the transaction, including the amount and line item details.
      return actions.order.create({
        purchase_units: [{
          amount: {
            value: '0.01'
          }
        }]
      });
    },
    onApprove: function(data, actions) {
      // This function captures the funds from the transaction.
      return actions.order.capture().then(function(details) {
        // This function shows a transaction success message to your buyer.
        alert('Transaction completed by ' + details.payer.name.given_name);
      });
    }
  }).render('#paypal-button-container');
  //This function displays Smart Payment Buttons on your web page.

从本质上来说,我从服务器端调用获得了订单ID,并且不需要使用“ createOrder”调用,但是如何将订单ID传递给paypal.Buttons()设置,以便当用户单击发送的Paypal按钮是否已批准我创建的订单?

P.S .:我得到您验证并捕获了订单,但是为什么有人要在其客户端Javascript中设置订单费用?在我看来,这似乎是一个根本错误的想法。我在这里想念东西吗?

1 个答案:

答案 0 :(得分:0)

解决方案相当明显,但是以某种方式,当我稍早看时,我并没有偶然发现它。 html = escape(table_html); //in my server i do this echo "data:application/vnd.ms-excel;base64," . base64_encode($html); //then back in the client var $a = $("<a>"); $a.attr("href", data); $("body").append($a); $a.attr("download", "report.xls"); $a[0].click(); $a.remove(); 需要返回订单ID,可以通过DataFrame.div来完成:

createOrder