2017-10-20 37 views
0

J'essaie d'intégrer l'intégration de Paypal Express Checkout à l'API PayPal REST.Intégration de paiement express PayPal avec l'API REST de PayPal

fichier JS ressemble à ceci:

paypal.Button.render({ 
    env: 'sandbox', // sandbox | production 
    commit: true, 
    payment: function() { 
     var CREATE_URL = 'createpayment'; 

     return paypal.request.get(CREATE_URL) 
      .then(function(res) { 
       return res.paymentID; 
      }); 
    }, 

    onAuthorize: function(data, actions) { 
     var EXECUTE_URL = 'executepayment'; 
     var data = { 
      paymentID: data.paymentID, 
      payerID: data.payerID 
     }; 
     return paypal.request.post(EXECUTE_URL, data) 
      .then(function (res) { 
       window.alert('Payment Complete!'); 
      }); 
    } 

}, '#paypal-button-container'); 

Maintenant, je ne peux pas comprendre ce qui devrait être dans CREATE_URL et les fichiers php url EXECUTE_URL. J'ai lu beaucoup de leurs documents. Je comprends que dans php je devrais faire la première demande pour obtenir le jeton, alors je devrais faire la demande de paiement de création et après exécution-paiement curl reuqest. Mais je n'ai pas de chance.

Je ne comprends pas comment je devrais transmettre la valeur de paiement au fichier PHP CREATE_URL.

Il y a quelques jours j'ai trouvé ici une bonne réponse à ma question avec tous les exemples, mais c'est environ deux jours que je ne peux pas le trouver.

Mise à jour: Je dois également transmettre le montant de l'entrée au fichier php à partir de la demande de paiement. Et je ne peux pas faire cela en utilisant le retour paypal.request.get (CREATE_URL, data) demande.

Quelqu'un peut-il m'aider s'il vous plaît.

Merci.

Répondre

0

Partagez quelques exemples de code PHP du serveur.

code PHP dans CREATE_URL:

<?php 
 
    $curl = curl_init(); 
 
     
 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
 
    curl_setopt($curl, CURLOPT_POST, true); 
 
    curl_setopt($curl, CURLOPT_URL, 'https://api-3t.sandbox.paypal.com/nvp'); 
 
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array(
 
     'USER' => 'xxxxx', 
 
     'PWD' => 'xxxxx', 
 
     'SIGNATURE' => 'xxxxx', 
 
     
 
     'METHOD' => 'SetExpressCheckout', 
 
     'VERSION' => '108', 
 
     'LOCALECODE' => 'en_US', 
 
     
 
     'PAYMENTREQUEST_0_AMT' => 100, 
 
     'PAYMENTREQUEST_0_CURRENCYCODE' => 'USD', 
 
     'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale', 
 
     'PAYMENTREQUEST_0_ITEMAMT' => 100, 
 
     
 
     'L_PAYMENTREQUEST_0_NAME0' => 'test name', 
 
     'L_PAYMENTREQUEST_0_DESC0' => 'test desc', 
 
     'L_PAYMENTREQUEST_0_QTY0' => 1, 
 
     'L_PAYMENTREQUEST_0_AMT0' => 100, 
 
     
 
     'CANCELURL' => 'http://localhost/cancel.html', 
 
     'RETURNURL' => 'http://localhost/success.html' 
 
    ))); 
 
     
 
    $response = curl_exec($curl); 
 
     
 
    curl_close($curl); 
 
     
 
    $nvp = array(); 
 
     
 
    if (preg_match_all('/(?<name>[^\=]+)\=(?<value>[^&]+)&?/', $response, $matches)) { 
 
     foreach ($matches['name'] as $offset => $name) { 
 
      $nvp[$name] = urldecode($matches['value'][$offset]); 
 
     } 
 
    } 
 
    if (isset($nvp['ACK']) && $nvp['ACK'] == 'Success') { 
 
     echo $nvp['TOKEN']; 
 
    } else { 
 
     //failed 
 
    } 
 

 
    ?>

code PHP dans EXECUTE_URL:

<?php 
 
$curl = curl_init(); 
 
    
 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
 
curl_setopt($curl, CURLOPT_POST, true); 
 
curl_setopt($curl, CURLOPT_URL, 'https://api-3t.sandbox.paypal.com/nvp'); 
 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array(
 
    'USER' => 'xxxxx', 
 
    'PWD' => 'xxxxx', 
 
    'SIGNATURE' => 'xxxxx', 
 
    
 
    'METHOD' => 'DoExpressCheckoutPayment', 
 
    'VERSION' => '108', 
 
    'LOCALECODE' => 'en_US', 
 
    
 
    'TOKEN' => $_POST['TOKEN'], 
 
    'PayerID' => $_POST['PAYERID'], 
 
    
 
    'PAYMENTREQUEST_0_AMT' => 100, 
 
    'PAYMENTREQUEST_0_CURRENCYCODE' => 'USD', 
 
    'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale', 
 
    'PAYMENTREQUEST_0_ITEMAMT' => 100, 
 
     
 
    'L_PAYMENTREQUEST_0_NAME0' => 'test name', 
 
    'L_PAYMENTREQUEST_0_DESC0' => 'test desc', 
 
    'L_PAYMENTREQUEST_0_QTY0' => 1, 
 
    'L_PAYMENTREQUEST_0_AMT0' => 100, 
 
))); 
 
    
 
$response = curl_exec($curl); 
 
    
 
curl_close($curl); 
 
    
 
$nvp = array(); 
 
    
 
if (preg_match_all('/(?<name>[^\=]+)\=(?<value>[^&]+)&?/', $response, $matches)) { 
 
    foreach ($matches['name'] as $offset => $name) { 
 
     $nvp[$name] = urldecode($matches['value'][$offset]); 
 
    } 
 
} 
 
    
 
print_r($nvp);