【问题标题】:PayPal Express Checkout API - Is there a way to process both recurring payment in one session using method CreateRecurringPaymentsProfile?PayPal Express Checkout API - 有没有办法使用 CreateRecurringPaymentsProfile 方法在一个会话中处理定期付款?
【发布时间】:2015-12-10 11:29:54
【问题描述】:

我尝试使用 CreateRecurringPaymentsProfile 方法在一个会话中处理两次定期付款。以下是我的行动年表:

首先我设置方法 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 $0.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 $0.01',
'PAYMENTREQUEST_0_ITEMAMT'      => '0.03',
'PAYMENTREQUEST_0_AMT'          => '0.03'

SetExpressCheckout 方法成功响应后,使用 CreateRecurringPaymentsProfile 方法成功执行第一笔定期付款成功。参数如下:

'L_PAYMENTREQUEST_0_NAME0'      => 'Management Services 8 hours - for $0.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'

不幸的是,这个方法总是返回同样的错误,不管我做了什么改变:

配置文件描述无效,L_ERRORCODE0 = 11581。

当我更改定期付款订单时,标题为“管理服务 8 小时 - 0.01 美元”的第一次定期付款会出现同样的错误!?问题是每次第二次重复都会返回相同的错误 - “配置文件描述无效,L_ERRORCODE0 = 11581。”

我怎样才能让它工作?

【问题讨论】:

    标签: php paypal express-checkout recurring


    【解决方案1】:

    您只能在一个会话中调用 CreateRecurringPaymentsProfile 一次(一个令牌)。你应该调用 SetExpressCheckout 来获取另一个令牌。

    【讨论】:

    • 非常感谢您的回答,我要求贝宝支持,但他们没有具体回答。我会继续研究
    • 根据您的建议,我使用了 2 次 SetExpressCheckout,并且成功创建了两次定期付款,但是这个过程会让我们的客户感到非常困惑。正如您所建议的,用户必须登录两次才能获得新令牌。这是不可接受的。
    【解决方案2】:

    最后,在 PayPal 支持的帮助下,我找到了一种解决方案,可以在单个 Express Checkout 会话中创建多个重复配置文件:

    • 首先,您必须在 SetExpressCheckout 方法中传递两个配置文件(首先 我的例子中的方法),例如:

    L_BILLINGTYPE0=定期付款

    L_BILLINGAGREEMENTDESCRIPTION0=第 1 层

    第二个产品

    L_BILLINGTYPE1=定期付款

    L_BILLINGAGREEMENTDESCRIPTION1=管理服务

    • 然后,当买家在 PayPal 中都批准后,您需要调用 CreateRecurringPaymentsProfile 两次

    一个发送值为“Tier 1”的“DESC”,另一个发送值为“Management Services”的“DESC”

    Also check this

    【讨论】:

    • 所以这是一个很老的答案,但不幸的是我在网上找不到任何其他信息。我已经按照您在回答中所说的进行了尝试,但仍然得到相同的错误代码 11581。我的 SetExpressCheckout 方法的每个配置文件都包含这两个参数,并且我两次调用 CreateRecurringPaymentsProfile。第一个配置文件创建成功,但第二个配置文件失败。
    猜你喜欢
    • 2014-11-18
    • 2017-08-18
    • 2014-08-10
    • 2018-08-05
    • 2017-09-02
    • 2013-03-30
    • 2017-06-05
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多