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>
感激,如果有人能指導我的正確道路,如果我做了一個錯誤在這裏..
謝謝羅伯特。我發現錯誤,我輸入了paypal商戶帳號而不是用戶名。然而,我仍然有問題,它沒有顯示在PayPal視圖中收取的金額,我嘗試使用版本88.0和版本62.0與金額(2十進制數字值)設置'PAYMENTREQUEST_0_AMT'和'AMT'。但它並沒有顯示在paypal窗口中用戶需要支付的金額。 – bluelabel
這是您最初未提及的一個單獨問題。無論哪種方式,解決這個問題;將「useraction = commit」附加到您的PayPal重定向網址(以便它讀取https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxx&useraction=commit) – Robert