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