2017-01-16 99 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