Pregunta

I'm trying to do a recurring payment using CreateRecurringPaymentsProfile.

data sent:

&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" }

could the problem be a too long description or something else. Maybe a field i'm missing?

I do:

$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); 

before sending the above info like:

$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);
¿Fue útil?

Solución 2

The desc variable has a character limit of 127. A shorter value should resolve the problem.

If a field was missing you would get a field format error which tells you the variable that wasn't provided.

Otros consejos

For those receiving the same error but not hitting the byte limit make sure the description matches the billing agreement.

"You must ensure that this field matches the corresponding billing agreement description included in the SetExpressCheckout request."

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top