Question

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);
Was it helpful?

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

OTHER TIPS

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/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top