Reputation: 41
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);
Upvotes: 1
Views: 5061
Reputation: 756
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."
Upvotes: 7
Reputation: 2340
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.
Upvotes: 3