PayPal Express Checkout API - 有没有一种方法可以使用 CreateRecurringPaymentsProfile 方法在一个 session 中同时处理这两种定期付款?
PayPal Express Checkout API - Is there a way to process both recurring payment in one session using method CreateRecurringPaymentsProfile?
我尝试使用 CreateRecurringPaymentsProfile 方法在一个 session 中处理两个定期付款。这是我的行动年表:
首先我设置方法 SetExpressCheckout:
'METHOD' => 'SetExpressCheckout',
'RETURNURL' => $this->paypalreturnurl,
'CANCELURL' => $this->paypalcancelurl,
'PAYMENTREQUEST_0_CURRENCYCODE' => $this->paypalcurrencycode,
'PAYMENTREQUEST_0_PAYMENTACTION'=> 'SALE',
'L_BILLINGTYPE0' => 'RecurringPayments',
'L_BILLINGAGREEMENTDESCRIPTION0'=> 'Tier 1 + Management Services',
'PAYMENTREQUEST_0_DESC' => 'Tier 1 + Management Services',
'L_PAYMENTREQUEST_0_NAME0' => 'Tier 1',
'L_PAYMENTREQUEST_0_NUMBER0' => '10101',
'L_PAYMENTREQUEST_0_QTY0' => '1',
'L_PAYMENTREQUEST_0_AMT0' => '0.02',
'L_PAYMENTREQUEST_0_DESC0' => 'Description of Tier 1',
'L_PAYMENTREQUEST_0_NAME1' => 'Management Services 8 hours - for [=12=].01',
'L_PAYMENTREQUEST_0_NUMBER1' => '212121',
'L_PAYMENTREQUEST_0_QTY1' => '1',
'L_PAYMENTREQUEST_0_AMT1' => '0.01',
'L_PAYMENTREQUEST_0_DESC1' => 'Description of Management Services 8 hours - for [=12=].01',
'PAYMENTREQUEST_0_ITEMAMT' => '0.03',
'PAYMENTREQUEST_0_AMT' => '0.03'
SetExpressCheckout 方法成功响应后,第一个定期付款使用 CreateRecurringPaymentsProfile 方法成功执行。这是参数:
'L_PAYMENTREQUEST_0_NAME0' => 'Management Services 8 hours - for [=13=].01',
'PROFILEREFERENCE' => 'RPInvoice1234',
'PROFILESTARTDATE' => date('Y-m-d') . 'T' . date('H:i:s').'Z',
'SUBSCRIBERNAME' => 'Mr Sub Scriber',
'TOKEN' => urlencode($token),
'DESC' => 'Tier 1 + Management Services',
'AMT' => '0.01',
'BILLINGPERIOD' => 'Month',
'BILLINGFREQUENCY' => '1',
'TOTALBILLINGCYCLES' => '12',
'REGULARTOTALBILLINGCYCLES' => '1',
'VERSION' => '74.0',
'MAXFAILEDPAYMENTS' => '1',
'L_PAYMENTREQUEST_0_AMT0' => '0.01',
'INITAMT' => '0.01',
'L_PAYMENTREQUEST_0_NUMBER0' => '212121',
'L_PAYMENTREQUEST_0_QTY0' => '1',
'L_BILLINGTYPE0' => 'RecurringPayments',
'L_BILLINGAGREEMENTDESCRIPTION0'=> 'Tier 1 + Management Services',
'L_PAYMENTREQUEST_0_ITEMCATEGORY0'=> 'Digital'
在 CreateRecurringPaymentsProfile 方法成功响应后,我尝试使用类似的参数创建另一个定期付款(不幸的是没有成功)并再次使用 CreateRecurringPaymentsProfile 方法:
'L_PAYMENTREQUEST_0_NAME0' => 'Hosted Saas Tier 1',
'PROFILEREFERENCE' => 'RPInvoice123',
'PROFILESTARTDATE' => date('Y-m-d') . 'T' . date('H:i:s').'Z',
'SUBSCRIBERNAME' => 'Mr Sub Scriber 2',
'TOKEN' => urlencode($token),
'DESC' => 'Hosted Saas Tier 1 + Community Management Services',
'AMT' => '0.02',
'BILLINGPERIOD' => 'Month',
'BILLINGFREQUENCY' => '1',
'TOTALBILLINGCYCLES' => '12',
'REGULARTOTALBILLINGCYCLES' => '1',
'VERSION' => '74.0',
'MAXFAILEDPAYMENTS' => '1',
'L_PAYMENTREQUEST_0_AMT0' => '0.02',
'INITAMT' => '0.02',
'L_PAYMENTREQUEST_0_NUMBER0' => '10101',
'L_PAYMENTREQUEST_0_QTY0' => '1',
'L_BILLINGTYPE0' => 'RecurringPayments',
'L_BILLINGAGREEMENTDESCRIPTION0'=> 'Hosted Saas Tier 1 + Community Management Services',
'L_PAYMENTREQUEST_0_ITEMCATEGORY0'=> 'Digital'
不幸的是,这个方法总是return同样的错误,不管我做了什么改变:
Profile description is invalid, L_ERRORCODE0 = 11581.
当我更改定期付款顺序时,第一个标题为 "Management Services 8 hours - for [=38=].01" 的定期付款出现相同的错误!?问题是每次第二次重复出现 returns 相同的错误 - "Profile description is invalid, L_ERRORCODE0 = 11581."
我怎样才能让它工作?
您在一个会话中只能调用一次 CreateRecurringPaymentsProfile(一个令牌)。你应该调用 SetExpressCheckout 来获取另一个令牌。
最后,在 PayPal 支持的帮助下,我找到了在单个 Express Checkout 会话中创建多个重复配置文件的解决方案:
- 首先,您必须在 SetExpressCheckout 方法中传递两个配置文件(首先
我示例中的方法),例如:
L_BILLINGTYPE0=RecurringPayments
L_BILLINGAGREEMENTDESCRIPTION0=Tier 1
和第二个产品
L_BILLINGTYPE1=RecurringPayments
L_BILLINGAGREEMENTDESCRIPTION1=Management Services
- 然后,在买家在 PayPal 中批准后,您需要调用 CreateRecurringPaymentsProfile 两次:
一个发送值为“Tier 1”的“DESC”,另一个发送值为“Management Services”的“DESC”
我尝试使用 CreateRecurringPaymentsProfile 方法在一个 session 中处理两个定期付款。这是我的行动年表:
首先我设置方法 SetExpressCheckout:
'METHOD' => 'SetExpressCheckout',
'RETURNURL' => $this->paypalreturnurl,
'CANCELURL' => $this->paypalcancelurl,
'PAYMENTREQUEST_0_CURRENCYCODE' => $this->paypalcurrencycode,
'PAYMENTREQUEST_0_PAYMENTACTION'=> 'SALE',
'L_BILLINGTYPE0' => 'RecurringPayments',
'L_BILLINGAGREEMENTDESCRIPTION0'=> 'Tier 1 + Management Services',
'PAYMENTREQUEST_0_DESC' => 'Tier 1 + Management Services',
'L_PAYMENTREQUEST_0_NAME0' => 'Tier 1',
'L_PAYMENTREQUEST_0_NUMBER0' => '10101',
'L_PAYMENTREQUEST_0_QTY0' => '1',
'L_PAYMENTREQUEST_0_AMT0' => '0.02',
'L_PAYMENTREQUEST_0_DESC0' => 'Description of Tier 1',
'L_PAYMENTREQUEST_0_NAME1' => 'Management Services 8 hours - for [=12=].01',
'L_PAYMENTREQUEST_0_NUMBER1' => '212121',
'L_PAYMENTREQUEST_0_QTY1' => '1',
'L_PAYMENTREQUEST_0_AMT1' => '0.01',
'L_PAYMENTREQUEST_0_DESC1' => 'Description of Management Services 8 hours - for [=12=].01',
'PAYMENTREQUEST_0_ITEMAMT' => '0.03',
'PAYMENTREQUEST_0_AMT' => '0.03'
SetExpressCheckout 方法成功响应后,第一个定期付款使用 CreateRecurringPaymentsProfile 方法成功执行。这是参数:
'L_PAYMENTREQUEST_0_NAME0' => 'Management Services 8 hours - for [=13=].01',
'PROFILEREFERENCE' => 'RPInvoice1234',
'PROFILESTARTDATE' => date('Y-m-d') . 'T' . date('H:i:s').'Z',
'SUBSCRIBERNAME' => 'Mr Sub Scriber',
'TOKEN' => urlencode($token),
'DESC' => 'Tier 1 + Management Services',
'AMT' => '0.01',
'BILLINGPERIOD' => 'Month',
'BILLINGFREQUENCY' => '1',
'TOTALBILLINGCYCLES' => '12',
'REGULARTOTALBILLINGCYCLES' => '1',
'VERSION' => '74.0',
'MAXFAILEDPAYMENTS' => '1',
'L_PAYMENTREQUEST_0_AMT0' => '0.01',
'INITAMT' => '0.01',
'L_PAYMENTREQUEST_0_NUMBER0' => '212121',
'L_PAYMENTREQUEST_0_QTY0' => '1',
'L_BILLINGTYPE0' => 'RecurringPayments',
'L_BILLINGAGREEMENTDESCRIPTION0'=> 'Tier 1 + Management Services',
'L_PAYMENTREQUEST_0_ITEMCATEGORY0'=> 'Digital'
在 CreateRecurringPaymentsProfile 方法成功响应后,我尝试使用类似的参数创建另一个定期付款(不幸的是没有成功)并再次使用 CreateRecurringPaymentsProfile 方法:
'L_PAYMENTREQUEST_0_NAME0' => 'Hosted Saas Tier 1',
'PROFILEREFERENCE' => 'RPInvoice123',
'PROFILESTARTDATE' => date('Y-m-d') . 'T' . date('H:i:s').'Z',
'SUBSCRIBERNAME' => 'Mr Sub Scriber 2',
'TOKEN' => urlencode($token),
'DESC' => 'Hosted Saas Tier 1 + Community Management Services',
'AMT' => '0.02',
'BILLINGPERIOD' => 'Month',
'BILLINGFREQUENCY' => '1',
'TOTALBILLINGCYCLES' => '12',
'REGULARTOTALBILLINGCYCLES' => '1',
'VERSION' => '74.0',
'MAXFAILEDPAYMENTS' => '1',
'L_PAYMENTREQUEST_0_AMT0' => '0.02',
'INITAMT' => '0.02',
'L_PAYMENTREQUEST_0_NUMBER0' => '10101',
'L_PAYMENTREQUEST_0_QTY0' => '1',
'L_BILLINGTYPE0' => 'RecurringPayments',
'L_BILLINGAGREEMENTDESCRIPTION0'=> 'Hosted Saas Tier 1 + Community Management Services',
'L_PAYMENTREQUEST_0_ITEMCATEGORY0'=> 'Digital'
不幸的是,这个方法总是return同样的错误,不管我做了什么改变:
Profile description is invalid, L_ERRORCODE0 = 11581.
当我更改定期付款顺序时,第一个标题为 "Management Services 8 hours - for [=38=].01" 的定期付款出现相同的错误!?问题是每次第二次重复出现 returns 相同的错误 - "Profile description is invalid, L_ERRORCODE0 = 11581."
我怎样才能让它工作?
您在一个会话中只能调用一次 CreateRecurringPaymentsProfile(一个令牌)。你应该调用 SetExpressCheckout 来获取另一个令牌。
最后,在 PayPal 支持的帮助下,我找到了在单个 Express Checkout 会话中创建多个重复配置文件的解决方案:
- 首先,您必须在 SetExpressCheckout 方法中传递两个配置文件(首先 我示例中的方法),例如:
L_BILLINGTYPE0=RecurringPayments
L_BILLINGAGREEMENTDESCRIPTION0=Tier 1
和第二个产品
L_BILLINGTYPE1=RecurringPayments
L_BILLINGAGREEMENTDESCRIPTION1=Management Services
- 然后,在买家在 PayPal 中批准后,您需要调用 CreateRecurringPaymentsProfile 两次:
一个发送值为“Tier 1”的“DESC”,另一个发送值为“Management Services”的“DESC”