【问题标题】:Setting up reference transaction for paypal为贝宝设置参考交易
【发布时间】:2017-04-13 08:04:51
【问题描述】:

我正在尝试使用参考交易来实施 paypal,创建结算协议,然后参考此结算协议 ID 以用于未来的付款请求。

谁能给我一些示例代码。

【问题讨论】:

  • PayPal 文档中有很多示例代码,我建议您使用他们的示例,因为它们会是最准确的。

标签: php paypal


【解决方案1】:

查看以下代码:它只是示例代码,如需更多帮助,请查看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;
}


?>

【讨论】:

    猜你喜欢
    • 2014-03-16
    • 2018-04-20
    • 2017-07-30
    • 2016-04-12
    • 1970-01-01
    • 2012-09-28
    • 2012-08-31
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多