2017-07-28 98 views
1

我想在Paypal付款成功後獲取交易ID。我正在使用Paypal Express Checkout (Client-side REST)如何使用PayPal Express Checkout集成(客戶端REST)獲取交易ID

請在下面找到我的付款按鈕代碼。

我的目標是能夠更新MySQL數據庫以(1)確認訂單和(2)在其旁邊包含PayPal交易ID。這就是orderconfirmed.php文件一旦被調用就會實現的目標。爲此,我需要能夠獲得的TransactionID變量在付款的時候是succesfull

<script> 
      paypal.Button.render({ 

       env: 'sandbox', // Or 'sandbox' 

       client: { 
        sandbox: 'ABCD', 
        production: 'ABCD' 
       }, 

       commit: true, // Show a 'Pay Now' button 

       payment: function(data, actions) { 
        return actions.payment.create({ 
         payment: { 
transactions: [ 
    { 
     amount: { total: '0.01', currency: 'USD' }, 
      item_list: { 
      items: [ 
       { 
       name: 'hat', 
       description: 'Brown hat', 
       quantity: '1', 
       price: '0.01', 
       currency: 'USD' 
       } 
      ] 
     } 
    } 
] 
         },  
        }); 
       }, 

       onAuthorize: function(data, actions) { 
        return actions.payment.execute().then(function(payment) { 

         document.querySelector('#confirmmessage').innerText = 'Thank you - Your payment has been processed'; 
         document.querySelector('#paypal-button').style.display = 'none'; 
         document.querySelector('#confirmdiv').style.display 

= 'block'; 
window.location.href = 'orderconfirmed.php?transactionID=HOW_TO_GET_THIS_FIELD'; 
         }); 
        } 

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

你看了https://developer.paypal.com/docs/api/payments/#payment_create_request? – inarilo

+0

是的,我做了,但我不明白這是如何與我有關。我正在使用客戶端集成。如果我的理解正確,那麼您引用的代碼是在服務器上創建付款對象的curl命令。我無法做到這一點,因爲我使用的是共享託管服務。我錯過了什麼嗎? – Dan

+0

你應該可以通過JS做同樣的事情。但共享託管並不意味着你不能使用捲曲。 – inarilo

回答

0

因此,這裏是我發現我的問題的解決

1得到PaymentID你可以簡單地做(如inarilo這是正確的建議 - 感謝)

data.paymentID 

注:PaymentID距離的TransactionID不同:看到Difference between paymentId and TRANSACTIONID

要得到的Transact!離子ID,我使用:

payment.transactions[0].related_resources[0].sale.id 

2-然後使用這個信息並通過PHP更新MySQL數據庫,我使用AJAX。

等擺放在一起的代碼看起來像這樣:

     document.querySelector('#confirmmessage').innerText = payment.transactions[0].related_resources[0].sale.id; 


     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (this.readyState == 4 && this.status == 200) { 
       document.getElementById("txtHint").innerHTML = this.responseText; 
      } 
     }; 
     xmlhttp.open("GET","testajax.php",true); 
     xmlhttp.send(); 


         document.querySelector('#confirmdiv').style.display = 'block';