我們正在使用結算協議與休息API,我們能夠成功地在沙箱上做到這一點。 現在我們有要求在第一個月的折扣, ,所以如果每月有100美元的協議,並且當用戶申請一些推薦優惠券,他將在第一個月得到10美元的折扣.ie應該收取90美元第一個月和100美元在協議期限前進。 除了設置費用之外,我看不到任何其他選項,但這隻能用於支付額外費用,即增加計劃數量但不少於一些。Paypal訂閱與較低的首付款額,折扣,與Rest api?
1
A
回答
2
您必須使用paypal express checkout api來執行此操作。
使用API方法CreateRecurringPaymentsProfile您可以更改:
- RIALBILLINGPERIOD:時間在一個試用期期限。例如,一個月。
- TRIALBILLINGFREQUENCY:收費頻率(如果有)在一段時期內。
- TRIALBILLINGFREQUENCY:收費頻率(如果有)在一段時期內。
- TRIALTOTALBILLINGCYCLES:試用期限。也就是說,審判期間的數量。
- TRIALAMT:試用期內的付款金額。例如,零。
您必須設置參數$ fields ['INITAMT'] = $ 10;和經常性支付$ 100的月其他參數:
$fields['INITAMT'] = 10;
$fields['L_PAYMENTREQUEST_0_AMT0'] = 100;
$fields['AMT'] = 100;
在這種情況下,你會立即,之後每個月將收取$ 100的定期付款收取10 $。
這裏一個簡單的(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; $padata['L_PAYMENTREQUEST_0_NAME1'] = 'Second Product name';
$hosteddata['L_PAYMENTREQUEST_0_DESC1'] = 'second product description';
$hosteddata['L_PAYMENTREQUEST_0_NUMBER1'] = $secondproduct->id;
$hosteddata['L_PAYMENTREQUEST_0_QTY1'] = '1';
$hosteddata['L_PAYMENTREQUEST_0_AMT1'] = $secondproduct->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"]).'';
}
上RETURNURL獲取令牌:
$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';
$padata['L_PAYMENTREQUEST_0_NAME1'] = 'Second Product name'; $hosteddata['L_PAYMENTREQUEST_0_DESC1'] = 'second product description';
$hosteddata['L_PAYMENTREQUEST_0_NUMBER1'] = $secondproduct->id;
$hosteddata['L_PAYMENTREQUEST_0_QTY1'] = '1';
$hosteddata['L_PAYMENTREQUEST_0_AMT1'] = $secondproduct->price; $paypal_data = http_build_query($hosteddata); $hosted_saas_response = $this->PPHttpPost('CreateRecurringPaymentsProfile', $paypal_data);
我用一個單獨的方法發佈參數到paypal
private function PPHttpPost($methodName_, $nvpStr_) {
$api_username = '[email protected]'; $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;
}
+0
謝謝帕維爾。這真的很有幫助。 – Hari
相關問題
- 1. PayPal鏈接付款(錢不打折扣)
- 2. 使用PayPal REST API折扣
- 3. PayPal訂閱付款失敗
- 4. Paypal訂閱/定期付款
- 5. PayPal定期付款/訂閱
- 6. 如何使用Paypal客戶端rest api創建訂閱付款?
- 7. 如何使用paypal php rest api進行月度訂閱付款
- 8. PayPal Rest API直接付款
- 9. Paypal付款REST API - REQUIRED_SCOPE_MISSING
- 10. 通過REST API向PayPal添加支付請求的折扣金額
- 11. PayPal API - 折扣?
- 12. PayPal REST API付款收款人
- 13. Paypal Rest API - 使用PayPal帳戶付款資源創建付款
- 14. BlackBerry訂閱付款API
- 15. Paypal訂閱在首次付款後過期
- 16. paypal訂閱按鈕:付款通知
- 17. 使用REST api的Paypal付款處理
- 18. 用於鏈接付款的PayPal REST API
- 19. PayPal定期付款(訂閱按鈕)付款響應
- 20. 訂閱折扣歷史
- 21. Paypal JAVA REST API定期付款示例
- 22. 使用REST api執行PayPal付款
- 23. PayPal REST Api(PHP SDK)列表付款
- 24. paypal rest api更新付款項目
- 25. PayPal REST PHP API直接付款
- 26. PayPal REST API和定期付款
- 27. PayPal REST API訂單工作流程:付款 - >銷售 - > Webhook?
- 28. PHP的Facebook付款訂閱
- 29. Paypal訂閱/定期付款通過API更改資金來源
- 30. Paypal API待付款
你的問題不清楚。我覺得這是兩難的地方。 – Reece