2012-06-12 75 views
0

我開發了一個需要與paypal集成的移動應用程序,我的後端服務器是RESTfull java服務器。因此,爲了與paypal集成,我從客戶端獲得「deviceReferenceTokenWithAppId」以及其他詳細信息(cartId..etc)調用後端服務器上的servlet,當請求到達servlet時,我執行一些後端操作並調用paypal獲取移動支付所需的特定「SetExpressCheckout」令牌。用java支付寶移動快速結帳

StringBuilder postData = new StringBuilder(); 
     postData.append(USER).append("=").append(Constants.PAYPAL_MERCHANT_USER); 
     postData.append("&").append(PASSWORD).append("=").append(Constants.PAYPAL_MERCHANT_PASSWORD); 
     postData.append("&").append(SIGNATURE).append("=").append(Constants.PAYPAL_MERCHANT_SIGNATURE); 
     postData.append("&").append(METHOD).append("=").append("SetExpressCheckout"); 
     postData.append("&").append(VERSION).append("=").append("88"); 
     postData.append("&").append(AMOUNT).append("=").append(amount.toString()); 
     postData.append("&").append(CANCEL_URL).append("=").append(Constants.PAYPAL_MERCHANT_CANCEL_URL); 
     postData.append("&").append(RETURN_URL).append("=").append(Constants.PAYPAL_MERCHANT_RETURN_URL); 
     byte[] postDataArr = postData.toString().getBytes(UTF-8); 
     // Hit the the URL. 

     URL url = new URL("https://api-3t.sandbox.paypal.com/nvp"); 
     HttpsURLConnection.setDefaultHostnameVerifier(new CustomizedHostnameVerifier()); 
     HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setDoInput(true); 
     conn.setUseCaches(false); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
     conn.setRequestProperty("Content-Length", Integer.toString(postDataArr.length)); 


     DataOutputStream output = new DataOutputStream(conn.getOutputStream()); 
     output.write(postDataArr); 
     output.flush(); 
     output.close(); 

     rc = conn.getResponseCode(); 

我的問題是,如果我叫貝寶NVP,我沒有得到一個有效的標識作爲迴應,相反,我得到以下錯誤,

Key - TIMESTAMP - value : 2012-06-11T18:16:02Z 
Key - CORRELATIONID - value : 207108cab758a 
Key - ACK - value : Failure 
Key - VERSION - value : 88 
Key - BUILD - value : 2975009 
Key - L_ERRORCODE0 - value : 10002 
Key - L_SHORTMESSAGE0 - value : Security error 
Key - L_LONGMESSAGE0 - value : Security header is not valid 
Key - L_SEVERITYCODE0 - value : Error 

有人可以告訴我爲什麼我得到這個錯誤?我在這裏錯過了什麼嗎?

如果我可以成功獲取TOKEN,接下來我必須將我的servlet響應重定向到以下Url以將移動結帳視圖移動到移動應用程序。

https://www.sandbox.paypal.com/webscr?cmd=_express-checkout-mobile&drt="+<deviceReferenceTokenWithAppId>+"&token="+<TOKEN from payal nvp> 

感激,如果有人能指導我的正確道路,如果我做了一個錯誤在這裏..

回答

0

這意味着你的API憑據是不正確的,你所訪問的端點。
嘗試用「PWD」代替「PASSWORD」;使用PayPal進行「USER」,「PWD」和「SIGNATURE」認證。

+0

謝謝羅伯特。我發現錯誤,我輸入了paypal商戶帳號而不是用戶名。然而,我仍然有問題,它沒有顯示在PayPal視圖中收取的金額,我嘗試使用版本88.0和版本62.0與金額(2十進制數字值)設置'PAYMENTREQUEST_0_AMT'和'AMT'。但它並沒有顯示在paypal窗口中用戶需要支付的金額。 – bluelabel

+0

這是您最初未提及的一個單獨問題。無論哪種方式,解決這個問題;將「useraction = commit」附加到您的PayPal重定向網址(以便它讀取https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxx&useraction=commit) – Robert