简体   繁体   English

设置Express Checkout方法在ack中返回失败

[英]Set Express Checkout method returning an failure in the ack

I want to do the express checkout process in the paypal for the customers without redirecting the browser. 我想在没有重定向浏览器的情况下为客户在paypal中执行快速结账流程。 I have written the code like 我写的代码就像

        string sAPIUser = apiuser;
        string sAPIPassword = password;
        string sAPISignature = "signature";
        string sAPIEndpoint = "https://api-3t.sandbox.paypal.com/nvp";           
        string sAppID = "APP-80W284485P519543T";

        StringBuilder sRequest = new StringBuilder();

        ASCIIEncoding encoding = new ASCIIEncoding();
        string postData = ("&METHOD=SetExpressCheckout");
        postData += ("&VERSION=63.0");
        postData += ("&PAYMENTREQUEST_0_AMT=10.00");
        postData += ("&PAYMENTREQUEST_0_CURRENCYCODE=USD");
        postData += ("&PAYMENTREQUEST_0_PAYMENTACTION=Sale");
        postData += ("CANCELURL=http://www.google.com");
        postData += ("RETURNURL=http://www.google.com");
        byte[] data = encoding.GetBytes(postData);

// Prepare web request... //准备网络请求...

   HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(sAPIEndpoint);
   myRequest.Method = "POST";
   myRequest.Headers.Add("X-PAYPAL-SECURITY-USERID", sAPIUser);
   myRequest.Headers.Add("X-PAYPAL-SECURITY-PASSWORD", sAPIPassword);
   myRequest.Headers.Add("X-PAYPAL-SECURITY-SIGNATURE", sAPISignature);
   myRequest.Headers.Add("X-PAYPAL-SERVICE-VERSION", "1.3.0");
   myRequest.Headers.Add("X-PAYPAL-REQUEST-DATA-FORMAT", "NV");
   myRequest.Headers.Add("X-PAYPAL-RESPONSE-DATA-FORMAT", "NV");
   myRequest.Headers.Add("X-PAYPAL-APPLICATION-ID", sAppID);
   myRequest.ContentType = "application/x-www-form-urlencoded";
   myRequest.ContentLength = data.Length;
   // Send the request, read the response
   Stream newStream = myRequest.GetRequestStream();
   newStream.Write(data, 0, data.Length);
   newStream.Close();
   HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();
   Stream responseStream = response.GetResponseStream();
   Encoding encoding2 = Encoding.GetEncoding("utf-8");
   StreamReader reader = new StreamReader(responseStream, encoding2);
   string theResponse = reader.ReadToEnd();
   theResponse = HttpUtility.HtmlDecode(theResponse);

But i am getting the failure message in the theResponse variable. 但我在theResponse变量中收到失败消息。 What error i am doing. 我在做什么错误。 The error is like 错误就像

    TIMESTAMP=2013%2d03%2d05T05%3a55%3a38Z&CORRELATIONID=5c10035aca937&ACK=Failure&VERSION=63%2e0&BUILD=5331358&L_ERRORCODE0=10002&L_SHORTMESSAGE0=Authentication%2fAuthorization%20Failed&L_LONGMESSAGE0=You%20do%20not%20have%20permissions%20to%20make%20this%20API%20call&L_SEVERITYCODE0=Error

How can i rectify this. 我怎么能纠正这个。

Make sure that the credentials you are using are for your sandbox account and not your live account. 确保您使用的凭据适用于您的沙盒帐户,而不是您的真实帐户。 Your code looks like it is pointing to the sandbox, so you would need to use your sandbox credentials. 您的代码看起来像是指向沙箱,因此您需要使用沙箱凭据。 Also, if this is not all of your code, make sure you are not passing across a variable called "SUBJECT" and populating it with an email address. 此外,如果这不是您的所有代码,请确保您没有通过名为“SUBJECT”的变量并使用电子邮件地址填充它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM