2017-01-16 95 views
1

我正在尝试将Paypal Express Checkout集成到简单的购物车中。有不同的方法来做到这一点。 Paypal建议在基本或高级集成和checkout.js的4.0版本(使用REST API)之间进行选择。到现在为止还挺好。 我在我的Paypal帐户中创建了Paypal应用程序以获取凭证并开始测试。 测试还行,但这里有一些误解。 Checkout.js通过REST API(连同我的凭证)向PayPal服务器发送金额(1.00)和货币(EUR)。如果付款完成OK - onAuthorize上的回调函数被触发,并且有两个响应参数(数据和操作)。那么,我在这里调用我自己的AJAX函数在我的数据库中写入事务响应数据。但是...我只在这里得到付款交易的PaymentID和PayerID?!!如果我想稍后搜索到paypal.com的Web界面 - 没有PaymentID这样的事情。只有TransactionID?如何在onAutorize回调函数中得到其他交易细节?我怎样才能在这里得到TransactionID来写入我的数据库?可能在这里我必须致电Paypal API,或者必须实施Paypal IPN(即时付款通知)?但如何调用API IPN,如果我没有TransactionID的:)与PayPal Express Checkout集成(基本集成checkout.js版本4.0.0)卡住

<div style="width: 906px; text-align: right; height: 100px; 
    margin-top: 50px;"> 
<div id="paypal-button"></div> 
</div> 

<script src="https://www.paypalobjects.com/api/checkout.js"></script> 

<script> 
    paypal.Button.render({ 

     env: 'production', // Optional: specify 'sandbox' environment 

     style: { 
      size: 'medium', 
      shape: 'rect' 
     }, 

     client: { 
      sandbox: 'xxx-my-credentials-xxx', 
      production: 'xxx-my-credentials-xxx' 
     }, 

     payment: function() { 

      var env = this.props.env; 
      var client = this.props.client; 

      return paypal.rest.payment.create(env, client, { 
       transactions: [ 
        { 
         amount: { total: '1.00', currency: 'EUR' } 
        } 
       ] 
      }); 
     }, 

     commit: true, // Optional: show a 'Pay Now' button in the checkout flow 

     onAuthorize: function(data, actions) { 

      // Optional: display a confirmation page here 
      var EXECUTE_PAYMENT_URL = 'payment-process.php'; 

paypal.request.post(EXECUTE_PAYMENT_URL, { paymentID: data.paymentID, payerID: data.payerID, transactionID: data.transactionID, data: data }) .then(function(data) { }) .catch(function(err) { }); 


      return actions.payment.execute().then(function() { 
       // Show a success page to the buyer 
      }); 
     } 

    }, '#paypal-button'); 
</script> 

回答

2

来读取你需要调用和存储数据的JSON数据库

return actions.payment.execute().then(function() { 
       actions.payment.get().then(function(data) { 
       if(data.state === 'approved'){ 
        console.log(data); 
        var transactionId = data.id; 
        alert("Transaction ID: "+ transactionId + " \n State: " +data.state); 
       }else{ 
        console.log(data); 
       } 
       }); 
      }); 
+0

不过是数据交易的信息。确认交易或付款ID?我发现这些是不同的 –

+0

data.id是事务ID。 – Imran