Экспресс-доставка цифровых товаров с периодическими подписками

Думал, я бы спросил здесь, как есть вопрос на x форумах (опубликовано 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 

Затем я изменяю ответ, а затем отправляюсь обратно на paypal. Здесь я думаю, что мне нужно создать профиль:

 $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. 

Не очень полезно ……

Так еще это сделал? Я был бы признателен за некоторую ответственность!

Обратите внимание: я думаю, что это отличается от настройки регулярных подписчиков (хотя я могу ошибаться).

Я получил помощь от одного из сотрудников службы поддержки на форуме.

Мне нужно было увеличить мою версию с 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 

Так что все хорошо для меня 🙂