[PayPal Express Checkout] [PHP] Как получить код транзакции? - PullRequest
0 голосов
/ 13 апреля 2019

Я пытался внедрить экспресс-оплату PayPal на моем веб-сайте.Пока что платежи могут быть обработаны, и по завершении пользователь перенаправляется на другой сценарий для завершения платежа.

Однако каждый производимый платеж просто «авторизуется».Я хотел бы получить платеж немедленно.

Я уже попробовал поискать способы получения платежей, и наткнулся на эту возможность.Однако для этого мне нужен код транзакции, который пользователь получает в своем электронном письме и может просмотреть в обзоре своего аккаунта.

Объекты результатов Braintree не включают этот код.У меня есть доступ только к коду paymentCode, paymentID, payerID и уникальному идентификатору транзакции, но не к этому коду транзакции.

Это код CURL, который я использую:

$postdata='{
    "amount":{
       "currency":"EUR",
       "total":"'.$_POST['amount'].'"
    },
    "is_final_capture":true
 }';
 $postdatafileh=tmpfile();
 fwrite($postdatafileh,$postdata);
 rewind($postdatafileh);
 $ch=curl_init();
 curl_setopt_array($ch,array(
 CURLOPT_URL=>'https://api.paypal.com/v1/payments/authorization/$auth_id/capture',
 CURLOPT_HTTPHEADER=>array(
 'Content-Type: application/json',
 'Authorization: Bearer $auth_token',
 'Content-Length: '.strlen($postdata)
 ),
 CURLOPT_INFILE=>$postdatafileh,
 CURLOPT_INFILESIZE=>strlen($postdata),
 CURLOPT_VERBOSE=>true,
 CURLOPT_SSL_VERIFYPEER=>false,
 CURLOPT_ENCODING=>'',
 CURLOPT_POST=>true
 ));

 $ret=curl_exec($ch);
 fclose($postdatafileh);
 print_r($ret);

Это кодэто было опубликовано в stackoverflow.

Теперь вот проблема: $ auth_id должен быть этот код транзакции.

Для справки, это код для генерации кнопки:

$clientToken = $gateway->clientToken()->generate();
    echo '<div id="pp_button"></div>
    <!-- Load the required checkout.js script -->
    <script src="https://www.paypalobjects.com/api/checkout.js" data-version-4></script>

    <!-- Load the required Braintree components. -->
    <script src="https://js.braintreegateway.com/web/3.39.0/js/client.min.js"></script>
    <script src="https://js.braintreegateway.com/web/3.39.0/js/paypal-checkout.min.js"></script>

    <script>
    paypal.Button.render({
      braintree: braintree,
      client: {
          production: \''.$clientToken.'\',
          sandbox: \''.$clientToken.'\'
      },
      env: \'production\',
      commit : true,
      intent: "sale",

      payment: function (data, actions) {
        return actions.braintree.create({
          flow: \'checkout\', // Required
          //amount: '.DB_ProductGetPrice($_GET['v'],$_GET['t']).', // Required
          amount: 0.01,
          currency: \'EUR\', // Required
          enableShippingAddress: false,
          options : {
              submitForSettlement: true
          }
        });
      },

      onAuthorize: function (data,actions) {
        return actions.payment.get().then(function(paymentDetails){
                return actions.payment.execute().then(function(){
                    var formData = {
                        //amount : "'.DB_ProductGetPrice($_GET['v'],$_GET['t']).'",
                        amount : 0.01,
                        nonce : data.nonce
                    }
                    $.ajax ({
                        method : "POST",
                        data : formData,
                        url : "./src/auth/completeorder.php"
                    }).done(function(data){
                        $("#pp_button").html(data);
                    });
            })
        });
      },

      onError: function(data) {
          console.log(data);
      }
    }, \'#pp_button\');
    </script>';

Может быть, я что-то там забыл

У кого-нибудь есть идеи о том, как получить указанный код транзакции?Или платеж разрешен только для моей учетной записи PayPal?

С уважением

...