2013-04-17 11 views
5

Continuo a ricevere l'errore token non valido quando richiamo l'API NVP CreateRecurringPaymentsProfile.CreateRecurringPaymentsProfile che restituisce l'errore 11502: Token non valido

Si prega di trovare la sequenza della mia chiamate API di seguito:

SetExpressCheckout

METHOD = SetExpressCheckout 
VERSION = 98 
PWD = <pwd> 
USER = <user> 
SIGNATURE = <signature> 
ReturnUrl = http://google.com 
CANCELURL = http://google.com 
PAYMENTREQUEST_0_PAYMENTACTION = Authorization 
PAYMENTREQUEST_0_AMT = 100.00 
PAYMENTREQUEST_0_CURRENCYCODE = USD 
L_PAYMENTREQUEST_0_NAME0 = Item1 
L_PAYMENTREQUEST_0_QTY0 = 1 
L_PAYMENTREQUEST_0_AMT0 = 100.00 
PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID = [email protected] 
LOCALECODE = US 
L_BILLINGTYPE0 = RecurringPayments 
L_BILLINGAGREEMENTDESCRIPTION0 = SameEveryTime 

torno un token con ACK = * Successo * come risposta. Quindi navigo sul sito web di PayPal utilizzando l'URL [https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=token] e accedi con un account paypal e fai clic su "Accetta e continua".

Dopo aver accettato e con successo il reindirizzamento all'URL di reindirizzamento, faccio la GetExpressCheckoutDetails chiamata API con i seguenti parametri

METHOD = GetExpressCheckoutDetails 
VERSION = 98 
PWD = <pwd> 
USER = <user> 
SIGNATURE = <signature> 
TOKEN = <token from the SetExpressCheckout response> 

Dopo aver ottenuto con successo i dettagli pagatore come risposta, che faccio l'DoExpressCheckoutPayment API chiamare

METHOD = DoExpressCheckoutPayment 
VERSION = 98 
PWD = <pwd> 
USER = <user> 
SIGNATURE = <signature> 
TOKEN = <token from the SetExpressCheckout response> 
PAYERID = <payer ID from the GetExpressCheckoutDetails response> 
PAYMENTREQUEST_0_AMT = 100 
PAYMENTREQUEST_0_PAYMENTACTION = Sale 
PAYMENTREQUEST_0_CURRENCYCODE = USD 
L_PAYMENTREQUEST_0_NAME0 = Item1 
L_PAYMENTREQUEST_0_QTY0 = 1 
L_PAYMENTREQUEST_0_AMT0 = 100.00 
PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID = [email protected] 

io ora faccio le CreateRecurringPayments Profilo chiamata API

METHOD = CreateRecurringPaymentsProfile 
VERSION = 98 
PWD = <pwd> 
USER = <user> 
SIGNATURE = <signature> 
TOKEN = <token from the SetExpressCheckout response> 
PAYERID = <payer ID from the GetExpressCheckoutDetails response> 
DESC = SameEveryTime 
BILLINGPERIOD = Month 
BILLINGFREQUENCY = 1 
PROFILESTARTDATE = 2013-05-16T00:00:00Z 
MAXFAILEDPAYMENTS = 1 
AMT = 100.00 
CURRENCYCODE = USD 
L_PAYMENTREQUEST_0_NAME0 = Item1 
L_PAYMENTREQUEST_0_QTY0 = 1 
L_PAYMENTREQUEST_0_AMT0 = 100.00 
AUTOBILLAMT = AddToNextBilling 

Continuo a ricevere la seguente risposta

TIMESTAMP = 2013-04-17T05:31:24Z 
CORRELATIONID = d2c1d30c1d31 
ACK = Failure 
VERSION = 98 
BUILD = 5650305 
L_ERRORCODE0 = 11502 
L_SHORTMESSAGE0 = Invalid Token 
L_LONGMESSAGE0 = The token is invalid 
L_SEVERITYCODE0 = Error 

Ho provato a cercare una soluzione in molti forum, ma non riuscivo a capire se ho perso tutti i parametri.

Qualcuno può aiutarmi in questo?

Grazie in anticipo, Rahul

+0

Ho lo stesso identico problema. Hai già trovato una soluzione? – severin

risposta

1

Questo errore restituito da Paypal è vago. La causa più frequente di questo errore è la discrepanza tra il valore di BillingDescription nella chiamata SetExpressCheckout e ScheduleDEtails.Description nella chiamata CreateRecurringprofile. Assicurati che questi due siano esattamente gli stessi per farlo funzionare.

Esempio:

public CreateRecurringPaymentsProfileResponseType createRecurringProfile(string tokenin){ 
     var scheduleDetails = new ScheduleDetailsType(); 
     scheduleDetails.PaymentPeriod = paymentPeriod; 
     scheduleDetails.Description = "RecurringBilling"; 
} 
public SetExpressCheckoutResponseType setExpressCheckout() 
{ 
.... 
var billingAgreement = new BillingAgreementDetailsType(); 

      billingAgreement.BillingAgreementDescription = "RecurringBilling"; 
      billingAgreement.BillingType = BillingCodeType.RECURRINGPAYMENTS; 
      billingAgreement.PaymentType = MerchantPullPaymentCodeType.ANY; 

      ecDetails.BillingAgreementDetails.Add(billingAgreement); 
... 
}