2017-01-16 14 views
1

Я пытаюсь интегрировать Paypal Express Checkout в простую корзину покупок. Существуют разные способы сделать это. Paypal рекомендует выбирать между базовой или расширенной интеграцией и версией 4.0 checkout.js (с REST API). Все идет нормально. Я создал приложение Paypal в своей учетной записи Paypal, чтобы получить учетные данные и начать тестирование. Тест был в порядке, но здесь есть некоторые недоразумения. Checkout.js отправляет сумму (1.00) и валюту (EUR) на серверы Paypal через REST API (вместе с моими учетными данными). И если платеж завершен OK - активируется функция обратного вызова onAuthorize и есть два параметра с ответом (данные и действия). Ну, здесь я вызываю свою собственную функцию AJAX для записи данных ответа на транзакцию в моей базе данных. НО ... Я получаю здесь только PaymentID и PayerID оплачиваемой транзакции? !! И если я хочу искать позже в веб-интерфейсе paypal.com - нет такой вещи, как PaymentID. Существует только TransactionID ??? Как получить информацию о других транзакциях в ответе в функции обратного вызова onAutorize? Как я могу получить TransactionID здесь для записи в моей базе данных? Может быть здесь я должен позвонить в Paypal API или выполнить IPN Paypal (уведомление о мгновенном платеже)? НО как позвонить IPN API, если у меня нет 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 - идентификатор транзакции. – Imran

 Смежные вопросы

  • Нет связанных вопросов^_^