2017-04-13 83 views
0

我正在嘗試使用參考交易實施paypal,創建結算協議,然後爲將來的付款請求引用此結算協議ID。爲PayPal設置參考交易

任何人都可以給我一些示例代碼。

+0

貝寶文檔有很多示例代碼,我建議您使用它們的樣本,因爲它們將是最準確的。 – Difster

回答

0

檢查下面的代碼:它只是示例代碼,以獲得更多幫助,請Paypal documentation

---複製以下代碼,並在本地主機保存爲「refTest.php」 &檢查。

$user = 'API_USERNAME'; 
$password = 'API_PASSWORD'; 
$signature = 'API_SIGNATURE'; 

$nvps = "&USER=$user". 
     "&PWD=$password". 
     "&SIGNATURE=$signature"; 
$amt=2;  
$tax=0.5;  
$tot=2.5;  
if(!isset($_REQUEST['token'])){ 
    $nvpset= $nvps 
     . "&METHOD=SetExpressCheckout" 
     . "&VERSION=109.0" 
     . "&RETURNURL=http://localhost/refTest.php" 
     . "&CANCELURL=http://localhost/refTest.php" 
     . "&PAYMENTREQUEST_0_CURRENCYCODE=USD" 
     . "&LOCALCODE=US" 
     . "&PAYMENTREQUEST_0_AMT=".$tot 
     . "&PAYMENTREQUEST_0_ITEMAMT=".$amt 
     . "&PAYMENTREQUEST_0_TAXAMT=".$tax 
     . "&PAYMENTREQUEST_0_DESC=Shopping" 
     . "&PAYMENTREQUEST_0_PAYMENTACTION=Order" 
     . "&L_PAYMENTREQUEST_0_NAME0=James Bond" 
     . "&L_PAYMENTREQUEST_0_NUMBER0=101" 
     . "&L_PAYMENTREQUEST_0_QTY0=1" 
     . "&L_PAYMENTREQUEST_0_AMT0=".$amt 
     . "&SOLUTIONTYPE=Sole" 
     . "&L_BILLINGTYPE0=MerchantInitiatedBillingSingleAgreement" 
     . "&L_BILLINGAGREEMENTDESCRIPTION0=FirstBillingAgreement" 
     . "&LANDINGPAGE=Billing" 
     . "&NOSHIPPING=1"; 

    $setEC = RequestPayPal($nvpset); 
    header('location: https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token='.$setEC['TOKEN']);  
} 
elseif(isset($_REQUEST['token']) && isset($_REQUEST['PayerID']) && !isset($_REQUEST['action'])){ 
    echo "<a href='?token=".$_REQUEST['token']."&PayerID=".$_REQUEST['PayerID']."&action=createBillingAgree'>Let's Create Billing Agreement</a></br>"; 

    echo "Token Details</br>"; 

    $nvpget= $nvps 
     . "&METHOD=GetExpressCheckoutDetails" 
     . "&VERSION=109.0" 
     . "&TOKEN=".$_REQUEST['token']; 

    $getEC = RequestPayPal($nvpget); 

    print_r($getEC); 
} 
elseif(isset($_REQUEST['token']) && isset($_REQUEST['PayerID']) && isset($_REQUEST['action']) && $_REQUEST['action']=='createBillingAgree'){ 
    echo "<a href='?token=".$_REQUEST['token']."&PayerID=".$_REQUEST['PayerID']."&action=PayIt'>Let's Do the payment Now</a></br>"; 

    $nvpget= $nvps 
     . "&METHOD=CreateBillingAgreement" 
     . "&VERSION=109.0" 
     . "&TOKEN=".$_REQUEST['token']; 

    $getEC = RequestPayPal($nvpget); 

    print_r($getEC); 
} 
elseif(isset($_REQUEST['token']) && isset($_REQUEST['PayerID']) && isset($_REQUEST['action']) && $_REQUEST['action']=='PayIt'){ 
    echo "DO EXPRESS CHECK OUT DONE</br>"; 
    $nvpdo= $nvps 
     . "&METHOD=DoExpressCheckoutPayment" 
     . "&VERSION=109.0" 
     . "&PAYMENTACTION=Order" 
     . "&AMT=".$tot 
     . "&TOKEN=".$_REQUEST['token'] 
     . "&PAYERID=".$_REQUEST['PayerID']; 
    $doEC = RequestPayPal($nvpdo); 

    echo "<a href='?token=".$_REQUEST['token']."&PayerID=".$_REQUEST['PayerID']."&action=captureFuturePay&refId=".$doEC['BILLINGAGREEMENTID']."'>Create Reference Transasction</a></br>"; 
    print_r($doEC); 
} 
else{ 
    echo "Reference Transasction Done </br>"; 

    $nvpdo= $nvps 
     . "&METHOD=DoReferenceTransaction" 
     . "&VERSION=109.0" 
     . "&PAYMENTACTION=Order" 
     . "&AMT=".$tot 
     . "&TOKEN=".$_REQUEST['token'] 
     . "&REFERENCEID=".$_REQUEST['refId'] 
     . "&PAYERID=".$_REQUEST['PayerID']; 
    $doEC = RequestPayPal($nvpdo); 

    print_r($doEC); 
} 

function RequestPayPal($nvp){ 
    $url = 'https://api-3t.sandbox.paypal.com/nvp'; 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 45); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$nvp); 

    $result = curl_exec($ch); 
    $httpResponseAr = explode("&", $result); 
    $httpParsedResponseAr = array(); 
    foreach ($httpResponseAr as $value) { 
     $tmpAr = explode("=", $value); 
     if(sizeof($tmpAr) > 1) { 
      $httpParsedResponseAr[$tmpAr[0]] = urldecode($tmpAr[1]); 
     } 
    } 

    curl_close ($ch); 
    return $httpParsedResponseAr; 
} 


?>