【问题标题】:Digital Goods Express Checkout with Recurring Subscriptions具有定期订阅的数字商品快速结帐
【发布时间】:2011-07-08 10:08:32
【问题描述】:

我想我会在这里问,因为 x 论坛上有一个问题(5 月 7 日发布),但似乎还没有答案。

我在这里使用 PHP 作为获取令牌和处理交易的测试,这里是我的代码:

$nvps = array();
$nvps["VERSION"] = "69.0";

$nvps["METHOD"] = "SetExpressCheckout";

$nvps["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";
$nvps["PAYMENTREQUEST_0_AMT"] = "1.00";
$nvps["PAYMENTREQUEST_0_CURRENCYCODE"] = "GBP";
$nvps["PAYMENTREQUEST_0_ITEMAMT"] = "1.00";

$nvps["L_BILLINGTYPE0"] = 'RecurringPayments';
$nvps["L_BILLINGAGREEMENTDESCRIPTION0"] = "the subscription";

$nvps["L_PAYMENTREQUEST_0_NUMBER0"] = 1;
$nvps["L_PAYMENTREQUEST_0_NAME0"]= "subscription";
$nvps["L_PAYMENTREQUEST_0_AMT0"]= 1.00;
$nvps["L_PAYMENTREQUEST_0_QTY0"]= 1;
$nvps["L_PAYMENTREQUEST_0_ITEMCATEGORY0"] = "Digital";
$nvps["REQCONFIRMSHIPPING"] = "0";
$nvps["NOSHIPPING"] = "1";

我得到了很好的回复,并且在这个回复中是通常的东西:

TOKEN = EC-87478432UK0557216
BILLINGAGREEMENTACCEPTEDSTATUS = 1
CHECKOUTSTATUS = PaymentActionNotInitiated

然后我将响应更改为发送回贝宝。在这里我想我需要创建个人资料:

$response["METHOD"] = "CreateRecurringPaymentsProfile";
$response["PROFILESTARTDATE"] = "2011-7-7T0:0:0";
$response["BILLINGPERIOD"] = "Month";
$response["BILLINGFREQUENCY"] = "4";
$response = RunAPICall($response); // Send the API call to PayPal.

但后来我明白了:

TIMESTAMP = 2011-07-07T21:29:15Z
CORRELATIONID = 59260374116e4
ACK = Failure
VERSION = 69.0
BUILD = 1907759
L_ERRORCODE0 = 11581
L_SHORTMESSAGE0 = Invalid Data
L_LONGMESSAGE0 = Profile description is invalid
L_SEVERITYCODE0 = Error
An error occurred.

我最后一次尝试(放弃之前)是这样的:

$nvps = array();
$nvps["VERSION"] = "69.0";
$nvps["METHOD"] = "CreateRecurringPaymentsProfile";
$nvps["TOKEN"] = $response["TOKEN"];
$nvps["paymentType"] = urlencode('Authorization');
$nvps["RETURNURL"] = $script_url . "/modules/paypal/success.inc.php";
$nvps["CANCELURL"] = $script_url . "/modules/paypal/failure.inc.php";
$nvps["paymentAmount"] = urlencode("1.00");
$nvps["currencyID"] = urlencode("GBP"); // or other currency code ('GBP', 'EUR', 'JPY', 'CAD', 'AUD')
$nvps["startDate"] = urlencode("2011-07-08T00:00:00");
$nvps["billingPeriod"] = urlencode("Month"); // or "Day", "Week", "SemiMonth", "Year"
$nvps["billingFreq"] = urlencode("12");

$response = RunAPICall($nvps); // Send the API call to PayPal.

我现在明白了:

TIMESTAMP = 2011-07-08T11:07:33Z
CORRELATIONID = 1e97153fed038
ACK = Failure
L_ERRORCODE0 = 10001
L_SHORTMESSAGE0 = Internal Error
L_LONGMESSAGE0 = Timeout processing request
An error occurred.

不是很有帮助......

还有其他人这样做过吗?我会很感激一些指导!

请注意,我认为这与正常设置定期订阅不同(尽管我可能错了)。

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    我从论坛上的一位支持人员那里得到了帮助。

    我需要将我的版本从 69 升级到 74.0 并使用这些参数:

    $nvps["PROFILESTARTDATE"] = "2011-07-08T17:40:00Z";
    $nvps["BILLINGPERIOD"] = "Month";
    $nvps["BILLINGFREQUENCY"] = "1";
    $nvps["AMT"] = "1.00";
    $nvps["CURRENCYCODE"] = "GBP";
    $nvps["DESC"] = "the+subscription";
    

    然后产生...

    PROFILEID = I-762SUW9D8VVF
    PROFILESTATUS = ActiveProfile
    TIMESTAMP = 2011-07-08T16:50:55Z
    CORRELATIONID = 880f95195604f
    ACK = Success
    VERSION = 74.0
    BUILD = 1907759
    

    所以对我来说一切都很好:)

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 2018-07-16
      • 2013-08-27
      • 2011-08-10
      • 2014-06-05
      • 2013-03-29
      • 2014-05-27
      • 2013-05-23
      • 2015-11-27
      相关资源
      最近更新 更多