2013-06-22 3 views
1

Я пытаюсь сделать повторяющийся платеж с помощью CreateRecurringPaymentsProfile.CreateRecurringPaymentsProfile Описание профиля неверно Ошибка: 11581

данные, посылаемые:

&TOKEN=EC-9VR75992DL646470M 
&SUBSCRIBERNAME=Mr.Subscriber 
&PROFILESTARTDATE=2013-07-22T00:00:00Z 
&DESC=Our+Monthly+Membership+Renewal+Plan%3A+You+payment+of+%240.1+will+be+deducted+monthly+from+your+account.+Cancel+anytime+after+6+months.+Additional+terms+and+conditions+can+be+found+in+the+Membership+Agreement+at+website.com. 
&MAXFAILEDPAYMENTS=3 
&AUTOBILLAMT=AddToNextBilling 
&BILLINGPERIOD=Month 
&BILLINGFREQUENCY=1 
&AMT=0.10 
&TOTALBILLINGCYCLES= 
&CURRENCYCODE=USD" 


["TIMESTAMP"]=> string(20) "2013-06-22T11:50:36Z" 
["CORRELATIONID"]=> string(13) "9011114f8316f" 
["ACK"]=> string(7) "Failure" 
["VERSION"]=> string(2) "64" 
["BUILD"]=> string(7) "6202528" 
["L_ERRORCODE0"]=> string(5) "11581" 
["L_SHORTMESSAGE0"]=> string(12) "Invalid Data" 
["L_LONGMESSAGE0"]=> string(30) "Profile description is invalid" 
["L_SEVERITYCODE0"]=> string(5) "Error" } 

может быть проблема слишком длинное описание или что-то другое. Может, мне поле не хватает?

я:

$nvpstr = ""; 
$nvpstr .= "&VERSION=64.0"; 
$nvpstr .= "&TOKEN=".$_GET['token']; 
$nvpstr .= "&PAYMENTACTION=Authorization"; 
$nvpstr .= "&PAYERID=".$_SESSION['PAYERID']; 
$nvpstr .= "&AMT=".$_SESSION['recurringInitAmount']; 
$nvpstr .= "&CURRENCYCODE=USD"; 
$nvpstr .= "&L_BILLINGTYPE0=RecurringPayments"; 
$nvpstr .= "&L_BILLINGAGREEMENTDESCRIPTION0=".$_SESSION['recurringDesc']; 
$resArray = hash_call("DoExpressCheckoutPayment", $nvpstr); 

перед отправкой выше информацию, как:

$nvpstr = ""; 
$nvpstr .= "&TOKEN=".$_GET['token']; 
$nvpstr .= "&SUBSCRIBERNAME=Mr.Subscriber "; 
$nvpstr .= "&PROFILESTARTDATE=".date("Y-m-d", mktime(0, 0, 0, date("m", time())+1, date("d", time()), date("Y", time())))."T00:00:00Z"; 
$nvpstr .= "&DESC=".$_SESSION['recurringDesc']; 
$nvpstr .= "&MAXFAILEDPAYMENTS=3"; 
$nvpstr .= "&AUTOBILLAMT=AddToNextBilling"; 
$nvpstr .= "&BILLINGPERIOD=Month"; 
$nvpstr .= "&BILLINGFREQUENCY=1"; 
$nvpstr .= "&AMT=".$_SESSION['recurringInstallment']; 
$nvpstr .= "&TOTALBILLINGCYCLES=".$_SESSION['recurringInstallmentCycles']; 
$nvpstr .= "&CURRENCYCODE=USD"; 
$resArray = hash_call("CreateRecurringPaymentsProfile", $nvpstr); 

ответ

3

Переменная desc имеет ограничение на количество символов 127. Сокращенный значение должно решить эту проблему.

Если поле отсутствовало, вы получите ошибку формата поля, которая сообщит вам переменную, которая не была предоставлена.

7

Для тех, кто получает ту же ошибку, но не достигает предела байта, убедитесь, что описание соответствует соглашению о выставлении счетов.

«Вы должны убедиться, что это поле соответствует соответствующему описанию соглашения об оплате, включенному в запрос SetExpressCheckout».

https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/CreateRecurringPaymentsProfile_API_Operation_NVP/

+5

Соглашение биллинг также не будет выполняться, если описание содержит начальные или конечные пробелы. Правдивая история. –

+0

Трейлинг-пробел действительно разбивает его. Чтобы сделать его интересным, PayPal позволяет ему работать как ожидалось в Sandbox. Он не ломается, пока вы не поедете вживую. Так мило. – MikeSmithDev