0

ブラウザをリダイレクトせずに、顧客のためにペイパルでエクスプレス チェックアウト プロセスを実行したいと考えています。私は次のようなコードを書きました

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

// Web リクエストを準備します...

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

しかし、変数に失敗メッセージが表示されtheResponseます。私がやっているエラー。エラーは次のようになります

    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

どうすればこれを修正できますか。

4

1 に答える 1

2

使用している認証情報が、ライブ アカウントではなく、サンドボックス アカウントのものであることを確認してください。コードはサンドボックスを指しているように見えるため、サンドボックスの資格情報を使用する必要があります。また、これがすべてのコードではない場合は、「SUBJECT」という変数を渡して電子メール アドレスを入力していないことを確認してください。

于 2013-03-05T13:57:23.703 に答える