2012-06-12 2 views
0

나는 페이팔, 내 백 엔드 서버 RESTfull 자바 서버입니다 통합해야하는 모바일 애플 리케이션을 개발했습니다. 그래서 페이팔과 통합하기 위해 클라이언트 측에서 "deviceReferenceTokenWithAppId"를 얻습니다. 다른 세부 정보 (cartId..etc)와 함께 백엔드 서버에서 서블릿을 호출합니다. 요청이 서블릿에 오면 백 엔드 작업을 수행하고 페이팔을 호출합니다. 모바일 결제에 필요한 "SetExpressCheckout"토큰을 받으십시오.페이팔 모바일 익스프레스 체크 아웃과 자바

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을 성공적으로 얻을 수 있으면 다음 URL로 내 서블릿 응답을 리디렉션하여 모바일 체크 아웃보기를 모바일 애플리케이션에 가져와야합니다. 내가 실수 여기에 수행 한 경우 누군가가 올바른 경로로 나를 인도 할 수있는 경우

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

답변

0

그것은 당신의 API 자격 증명을 사용하면 액세스하는 엔드 포인트에 대한 잘못된 것을 의미합니다 .. 감사합니다.
"암호"를 "PWD"로 바꾸십시오. PayPal을 사용하여 'USER', 'PWD'및 'SIGNATURE'로 인증합니다.

+0

감사합니다. Robert. 나는 오류를 발견, 나는 페이팔 판매자 계정 번호 대신 사용자 ID를 입력했습니다. 그러나 나는 여전히 페이팔보기에서 요금이 청구 금액을 보여주지 않는 문제가있다, 나는 'PAYMENTREQUEST_0_AMT'(VERSION 88.0)과 'AMT'(VERSION 62.0)를 금액 (2 자리 10 진수)으로 설정하려고 시도했다. 하지만 페이팔 창에서 사용자에게 지불해야하는 금액은 표시되지 않습니다. – bluelabel

+0

처음에는 언급하지 않은 별도의 문제입니다. 어느쪽으로 든, 그것을 고치는; PayPal 리디렉션 URL에 "useraction = commit"을 추가하십시오 (https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxx&useraction=commit을 읽으십시오) – Robert

관련 문제