修改试用期或为现有Paypal订阅添加第二个试用期

修改试用期或为现有Paypal订阅添加第二个试用期,paypal,paypal-ipn,paypal-subscriptions,Paypal,Paypal Ipn,Paypal Subscriptions,我正在尝试修改现有Paypal订阅的试用期。然而,似乎a1、p1和t1值总是被忽略。使用a3、p3和t3更改总和和周期确实有效(IPN通知也正在发送) 我还尝试添加第二个试用期(同时在第一个试用期保持相同的值),但这也不起作用 我已经阅读了Paypal的文档,但是我找不到任何关于修改试用期的内容。这可能吗?我错过了什么 以下是我的示例代码: <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"

我正在尝试修改现有Paypal订阅的试用期。然而,似乎a1、p1和t1值总是被忽略。使用a3、p3和t3更改总和和周期确实有效(IPN通知也正在发送)

我还尝试添加第二个试用期(同时在第一个试用期保持相同的值),但这也不起作用

我已经阅读了Paypal的文档,但是我找不到任何关于修改试用期的内容。这可能吗?我错过了什么

以下是我的示例代码:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">

    <!-- Identify your business so that you can collect the payments. -->
    <input type="hidden" name="business" value="XXXXX">

    <!-- Specify a Subscribe button. -->
    <input type="hidden" name="cmd" value="_xclick-subscriptions">

    <!-- Identify the subscription. -->
    <input type="hidden" name="item_name" value="Item Name">

    <!-- Set the revised subscription price and terms. -->
    <input type="hidden" name="currency_code" value="EUR">

    <input type="hidden" name="a1" value="1">
    <input type="hidden" name="p1" value="78">
    <input type="hidden" name="t1" value="D">

    <input type="hidden" name="a3" value="90.88">
    <input type="hidden" name="p3" value="1">
    <input type="hidden" name="t3" value="Y">

    <!-- Set recurring payments until canceled. -->
    <input type="hidden" name="src" value="1">

    <!-- Let current subscribers modify only. -->
    <input type="hidden" name="modify" value="2">

    <input name="custom" value="user access token" type="hidden" />

    <input type="hidden" name="notify_url" value="http://..." />
    <input type="hidden" name="cancel_return" value="http://..." />
    <input type="hidden" name="return" value="http://..." />

    <input type="hidden" name="email" value="user email" />

    <!-- Display the payment button. -->
    <input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
    <img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">

</form>

您必须使用paypal express签出api来完成此操作

使用api方法CreateRecurringPaymentsProfile,您可以更改:

  • RIALBILLINGPERIOD:一个试验期内的一段时间。例如,一个月
  • 试用频率:一段时间内的收费频率(如有)
  • 试用频率:一段时间内的收费频率(如有)
  • 三个周期:试验期的长度。也就是说,试验的周期数
  • 试用期:试用期内的付款金额。例如,零
  • 要创建定期概要文件,请遵循以下(PHP)示例:

    // Parameters for SetExpressCheckout, which will be sent to PayPal
    $padata['L_BILLINGAGREEMENTDESCRIPTION0'] = 'Product description'; $padata['L_BILLINGAGREEMENTDESCRIPTION0'] = $padata['L_BILLINGAGREEMENTDESCRIPTION0'] . ' $'.$product->price.'/month'; $padata['L_PAYMENTREQUEST_0_DESC0'] = $padata['L_BILLINGAGREEMENTDESCRIPTION0'] . ' $'.$product->price.'/month';
    $padata['PAYMENTREQUEST_0_NOTIFYURL'] = 'http://site_url/paypal/ipn'; $padata['PAYMENTREQUEST_0_DESC'] = $product->name; $padata['RETURNURL'] = 'http://site_url/paypal/returnurl'; $padata['CANCELURL'] = 'http://site_url/paypal/cancelurl';
    $padata['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD'; $padata['PAYMENTREQUEST_0_PAYMENTACTION'] = 'SALE'; $padata['PAYMENTREQUEST_0_ITEMAMT'] = $product->price;
    $padata['PAYMENTREQUEST_0_AMT'] = $product->price;
    $padata['L_BILLINGTYPE0'] = 'RecurringPayments';
    $padata['L_PAYMENTREQUEST_0_NAME0'] = $product->name;
    $padata['L_PAYMENTREQUEST_0_NUMBER0']= '322';
    $padata['L_PAYMENTREQUEST_0_QTY0'] = '1';
    $padata['L_PAYMENTREQUEST_0_AMT0'] = $product->price;
    $paypal_data = http_build_query($padata); $httpParsedResponseAr = $this->PPHttpPost('SetExpressCheckout', $paypal_data); //Respond according to message we receive from Paypal if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])){ //Redirect user to PayPal store with Token received. $paypalurl ='https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token='.$httpParsedResponseAr["TOKEN"].''; header('Location: '.$paypalurl); }else{ echo 'Error : '.urldecode($httpParsedResponseAr["L_LONGMESSAGE0"]).'';
    } //SetExpressCheckout的参数,将发送到PayPal
    $padata['L_BILLINGAGREEMENTDESCRIPTION0']=“产品说明”; $padata['L_BILLINGAGREEMENTDESCRIPTION0']=$padata['L_BILLINGAGREEMENTDESCRIPTION0']。 “$”.$product->price.“/月”; $padata['L_PAYMENTREQUEST_0_DESC0']=$padata['L_BILLINGAGREEMENTDESCRIPTION0']。 “$”.$product->price.“/月”
    $padata['PAYMENTREQUEST\u 0\u NOTIFYURL']='http://site_url/paypal/ipn'; $padata['PAYMENTREQUEST\u 0\u DESC']=$product->name; $padata['RETURNURL']='http://site_url/paypal/returnurl'; $padata['CANCELURL']='http://site_url/paypal/cancelurl';
    $padata['PAYMENTREQUEST_0_CURRENCYCODE']='USD'; $padata['PAYMENTREQUEST_0_PAYMENTACTION']=“销售”; $padata['PAYMENTREQUEST\u 0\u ITEMAMT']=$product->price
    $padata['PAYMENTREQUEST\u 0\u AMT']=$product->price
    $padata['L_BILLINGTYPE0']='RecurringPayments'
    $padata['L_PAYMENTREQUEST_0_NAME0']=$product->name
    $padata['L_PAYMENTREQUEST_0_NUMBER0']='322'
    $padata['L_PAYMENTREQUEST_0_QTY0']='1'
    $padata['L_PAYMENTREQUEST_0_AMT0']=$product->price
    $paypal\u data=http\u build\u query($padata); $httpParsedResponseAr=$this->PPHttpPost('SetExpressCheckout',$paypal_data); //根据我们从贝宝收到的信息回复 if(“SUCCESS”==strotupper($httpParsedResponseAr[“ACK”])| |“SUCCESSWITHWARNING”==strotupper($httpParsedResponseAr[“ACK”])){ //将用户重定向到收到令牌的PayPal商店。 $paypalurl=https://www.paypal.com/cgi-bin/webscr?cmd=_express-签出和令牌=“.$httpParsedResponseAr[“令牌”]”; 标题('Location:'。$paypalurl); }否则{ echo“Error:”.urldecode($httpParsedResponseAr[“L_LONGMESSAGE0”])。”;
    } 页面返回URL:

    $hosteddata['L_BILLINGAGREEMENTDESCRIPTION0'] = 'Recurring Description';
    $hosteddata['L_BILLINGAGREEMENTDESCRIPTION0'] = $hosteddata['L_BILLINGAGREEMENTDESCRIPTION0'] . ' $'.$pr->price.'/month';
    $hosteddata['L_PAYMENTREQUEST_0_NAME0'] = $pr->name;
    $hosteddata['PROFILEREFERENCE'] = $GetExpressCheckoutDetails['L_PAYMENTREQUEST_0_NUMBER0'];
    $hosteddata['PROFILESTARTDATE'] = date('Y-m-d') . 'T' . date('H:i:s').'Z';
    $hosteddata['SUBSCRIBERNAME'] = $GetExpressCheckoutDetails['FIRSTNAME'] . ' ' . $GetExpressCheckoutDetails['LASTNAME'];
    $hosteddata['TOKEN'] = urlencode($_POST['token']);
    $hosteddata['DESC'] = $hosteddata['L_BILLINGAGREEMENTDESCRIPTION0'];
    $hosteddata['AMT'] = $pr->price;
    $hosteddata['BILLINGPERIOD'] = 'Month';
    $hosteddata['BILLINGFREQUENCY'] = '1';
    $hosteddata['TOTALBILLINGCYCLES'] = '12';
    $hosteddata['REGULARTOTALBILLINGCYCLES'] = '1';
    $hosteddata['VERSION'] = '74.0';
    $hosteddata['MAXFAILEDPAYMENTS'] = '1';
    $hosteddata['L_PAYMENTREQUEST_0_QTY0'] = '1';
    $hosteddata['L_BILLINGTYPE0'] = 'RecurringPayments';
    $hosteddata['L_PAYMENTREQUEST_0_ITEMCATEGORY0'] = 'Digital';
    $hosteddata['L_PAYMENTREQUEST_0_AMT0'] = $pr->price;
    $hosteddata['INITAMT'] = $pr->price;
    $hosteddata['L_PAYMENTREQUEST_0_NUMBER0'] = $pr->id;
    $hosteddata['PAYMENTREQUEST_0_NOTIFYURL'] = 'http://site_url/paypal/ipn';
    $paypal_data = http_build_query($hosteddata); $hosted_saas_response = $this->PPHttpPost('CreateRecurringPaymentsProfile', $paypal_data);
    $hosteddata['L_BILLINGAGREEMENTDESCRIPTION0']=“定期描述”
    $hosteddata['L_BILLINGAGREEMENTDESCRIPTION0']=$hosteddata['L_BILLINGAGREEMENTDESCRIPTION0'].$$公关->价格。'/月'
    $hosteddata['L_PAYMENTREQUEST_0_NAME0']=$pr->name
    $hosteddata['PROFILEREFERENCE']=$GetExpressCheckoutDetails['L_PAYMENTREQUEST_0_NUMBER0']
    $hosteddata['PROFILESTARTDATE']=日期('Y-m-d')。'T’。日期('H:i:s')。'Z'
    $hosteddata['SUBSCRIBERNAME']=$GetExpressCheckoutDetails['FIRSTNAME'].'$GetExpressCheckoutDetails['LASTNAME']
    $hosteddata['TOKEN']=urlencode($_POST['TOKEN'])
    $hosteddata['DESC']=$hosteddata['L_BILLINGAGREEMENTDESCRIPTION0']
    $hosteddata['AMT']=$pr->price
    $hosteddata['BILLINGPERIOD']='Month'
    $hosteddata['BILLINGFREQUENCY']='1'
    $hosteddata['TOTALBILLINGCYCLES']='12'
    $hosteddata['REGULARTOTALBILLINGCYCLES']='1'
    $hosteddata['VERSION']='74.0'
    $hosteddata['MAXFAILEDPAYMENTS']='1'
    $hosteddata['L_PAYMENTREQUEST_0_QTY0']='1'
    $hosteddata['L_BILLINGTYPE0']='RecurringPayments'
    $hosteddata['L_PAYMENTREQUEST_0_ITEMCATEGORY0']='Digital'
    $hosteddata['L_PAYMENTREQUEST_0_AMT0']=$pr->price
    $hosteddata['INITAMT']=$pr->price
    $hosteddata['L_PAYMENTREQUEST_0_NUMBER0']=$pr->id
    $hosteddata['PAYMENTREQUEST\u 0\u NOTIFYURL']='http://site_url/paypal/ipn';
    $paypal\u data=http\u build\u query($hosteddata); $hosted_saas_response=$this->PPHttpPost('CreateRecurringPaymentsProfile',$paypal_data)
    我使用单独的方法将参数发布到paypal

    private function PPHttpPost( $methodName_, $nvpStr_ ) {
    $api_username = 'yourpaypal@email.com'; $api_password = 'QWEQWEWQEQWEQEQWE';
    $api_signature = 'WQEQWEQWEQWEWQEQWEQWEQWEQWEQWE.cT';
    $api_endpoint = "https://api-3t.paypal.com/nvp";
    $version = '124.0'; $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_endpoint);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    $nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$api_password&USER=$api_username&SIGNATURE=$api_signature&$nvpStr_";
    curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
    $httpResponse = curl_exec($ch); if(!$httpResponse) { exit("$methodName_ failed: ".curl_error($ch).'('.curl_errno($ch).')');
    } // Extract the response details. $httpResponseAr = explode("&", $httpResponse);
    $httpParsedResponseAr = array(); foreach ($httpResponseAr as $i => $value) { $tmpAr = explode("=", $value); if(sizeof($tmpAr) > 1) { $httpParsedResponseAr[$tmpAr[0]] = $tmpAr[1]; } } if((0 == sizeof($httpParsedResponseAr)) || !array_key_exists('ACK', $httpParsedResponseAr)) {
    exit("Invalid HTTP Response for POST request($nvpreq) to $api_endpoint.");
    } return $httpParsedResponseAr;
    } 私有函数PPHttpPost($methodName,$nvpStr){
    $api_username='1yourpaypal@email.com'; $api_password='qweqweqeqweqweqwe';
    $api_签名='wqeqweqweqweqweqweqweqweqwe.cT';
    $api_endpoint='https://api-3t.paypal.com/nvp“;
    $version='124.0'; $ch=curl\u init();
    curl\u setopt($ch,CURLOPT\u URL,$api\u endpoint);
    curl\u setopt($ch,CURLOPT\u VERBOSE,1);
    curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,FALSE);
    curl\u setopt($ch,CURLOPT\u SSL\u VERIFYHOST,FALSE);
    curl_setopt($ch,CURLOPT_POST,1);
    $nvpreq=“METHOD=$methodName\u&VERSION=$VERSION&PWD=$api\u password&USER=$api\u username&SIGNATURE=$api\u SIGNATURE&$nvpStr”;
    curl_setopt($ch,CURLOPT_POSTFIELDS,$nvpreq);
    $htt