2014-02-09 2 views
0

확인내가 충분히 내 머리를 두드리는 있었어요 페이팔 적응성 지불

내가 페이팔 지불을 받게됩니다 안드로이드 응용 프로그램을 쓰고 있어요합니다. 그래서 this을 사용하고 있습니다. 당신이 찾을 것 안드로이드 응용 프로그램을위한 자바 코드에서

다음 onActivityResult

intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, PaymentActivity.ENVIRONMENT_NO_NETWORK); 
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, "LARGE STRING AKA Client ID"); 
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "The email of the paying girl"); 
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, "The email I registered at PayPal"); 
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment); 

나는이 JSON을 얻을 :

{ 
    "payment": { 
    "short_description": "Donation to Saving The Amazon", 
    "amount": "5", 
    "currency_code": "USD" 
    }, 
    "client": { 
    "platform": "Android", 
    "paypal_sdk_version": "1.2.5", 
    "product_name": "PayPal Android SDK; ", 
    "environment": "mock" 
    }, 
    "proof_of_payment": { 
    "adaptive_payment": { 
     "timestamp": "2014-02-09T22:44:45+0000", 
     "payment_exec_status": "COMPLETED", 
     "app_id": "_FAKE_APPLICATION_ID_", 
     "pay_key": "AP-70M68096ML426802W" 
    } 
    } 
} 

지금, 내가 지불을 확인해야합니다.

페이팔 page 나는 단지 API Username을 찾을 반면 나는 userId passwordsignature here을 찾을 수 있다고
curl https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails \ 
-H "X-PAYPAL-SECURITY-USERID: {userId}" \ 
-H "X-PAYPAL-SECURITY-PASSWORD: {password}" \ 
-H "X-PAYPAL-SECURITY-SIGNATURE: {signature}" \ 
-H "X-PAYPAL-APPLICATION-ID: {appId}" \ 
-H "X-PAYPAL-REQUEST-DATA-FORMAT: NV" \ 
-H "X-PAYPAL-RESPONSE-DATA-FORMAT: NV" \ 
-d "payKey={payKey} 
    &requestEnvelope.errorLanguage=en_US" 

, API Password과 : I는 다음과 같습니다이 (내 서버에서) 요청을하기로되어있어 signature. userId를 API Usernamepassword의 값으로 대체했으며 값은 API Password (값이 분명히 signature)입니다. payKey 나는 proof_of_payment에서 here을 만들어야하는 앱의 appId에서 가져 왔습니다. 내가 만들었던 것과는 다른 here입니다. 이게 맞습니까?

편집 : 내 요청이 이제 다음과 같습니다

curl https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails \ 
-H "X-PAYPAL-SECURITY-USERID: info_api1.test.com" \ 
-H "X-PAYPAL-SECURITY-PASSWORD: XXNXXXA6XXX3PGXX" \ 
-H "X-PAYPAL-SECURITY-SIGNATURE: XXXXXvXXXXXqXXXXXm1XXXXXg3fOAuds4mc3XXXXXXXXJdy4XXXXXXqX" \ 
-H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" \ 
-H "X-PAYPAL-REQUEST-DATA-FORMAT: NV" \ 
-H "X-PAYPAL-RESPONSE-DATA-FORMAT: NV" \ 
-d "payKey=AP-70M68096ML426802W 
    &requestEnvelope.errorLanguage=en_US" 

이 모든 후 (값의 일부를 생략), 페이팔 말해 드리겠습니다 :

responseEnvelope. 타임 스탬프 = 2014-02-09T15 % 3A37 % 3A37.559-08 % 3A00 & responseEnvelope.ack = 실패 & responseEnvelope.correlationId = 33628be038bc5 & responseEnvelope.build = 9641252,488,에러 (0) = 520,003 .errorId & 에러 (0) = .domain PLATFORM & 에러 (0) = .subdomain 출원 & 에러 (0) = 오류 .severity & 에러 (0) = .category 출원 & 에러 (0) .message = 인증 + 실패. + API + 자격증 명 +가 잘못되었습니다.

이 지불을 확인하는 데 필요한 정보를 얻을 수 없습니다. 내가 뭘 잘못하고있어?

답변

1

오류에 대한 로그를 가져 왔으며 올바른 API 자격 증명을 사용하고 있지 않습니다. 사용중인 API 사용자 이름이 샌드 박스에 없으므로 라이브 계정 자격 증명을 사용하고있는 것으로 보입니다. 사용중인 API 자격 증명은 Android SDK에서 수신자로 사용한 샌드 박스 계정에서 가져온 것입니다. 이것은 가장 가능성이 높은 이메일 주소입니다. 다음 단계로 해당 계정의 API 자격 증명을 찾을 수 있습니다

  1. 로그인을 왼쪽 메뉴에
  2. 클릭 응용 프로그램 탭을 계정을 확장
  3. 클릭 삼각형을
  4. 클릭 샌드 박스 계정을 developer.paypal.com하기 -facilitator 이메일 주소
  5. 클릭 프로필 링크
  6. 에 대한 부분은 API 자격 증명 탭을 선택
,
+0

감사합니다. 내 문제를 해결했다. PayPal 가이드가이 작은 일에 대해 약간 오해의 소지가 있다고 생각합니다. – edpaez

0

PayKey와 App ID는 다른 것입니다. App ID는 Adaptive Payments 앱을 신청하고 승인받을 때 얻는 것입니다. API Isername, API Password 및 API Signature와 함께 헤더에서 전송됩니다. 당신은 당신이 제공 한 샘플에 그 자리 표시 자도 있습니다.

PayKey는 Pay 요청을 한 후에 다시 얻는 열쇠입니다. 그것은 일종의 거래 ID와 같습니다. 일반적으로 응답에서 오는 것이지만, 예를 들어 ExecutePayment를 호출하는 경우 요청에 포함 시키지만 PayKey 매개 변수로 ... app id가 아닙니다.

오류는 단순히 API un/pw/sig 값이 잘못되었음을 의미합니다.대부분의 경우 이는 샌드 박스 자격 증명을 실제 PayPal 엔드 포인트 또는 비자로 보내는 것입니다. 두 번 확인하고 실제 값을 직접 확인하십시오. 또한 요청 본문 대신 헤더에 App ID가 포함되어 있는지 확인하십시오.

+0

안녕하세요! 도와 주셔서 감사합니다. 내 질문의 일부를 잘못 읽은 것 같아. 좀 더 명확하게 편집했습니다. 나는 또한 내가 Sanbox/Live 값을 엉망으로 만들지 않았 음을 확신한다. – edpaez

+0

내가주의해야 할 것은 JSON을 사용하고 있지만 요청 헤더의 데이터 형식이 NV라는 점이다. JSON으로 변경해야합니다. 그것은 그들의 시스템이 NVP 문자열을 기대할 수 있기 때문에 USER = whatever & PWD = whatever 등을 찾고있을 것입니다. 그러나 그것을 얻지는 못하기 때문에 공백으로 취급하고 인증에 실패합니다. –

+0

사실 NV를 요청 데이터 형식으로 사용하면 '580001 잘못된 요청 : {0}'(유효성 검사가 작동 한 후)이 표시됩니다. 당신이 옳았다는 것이 밝혀졌고, 저는 올바른 자격증을 사용하지 않고있었습니다. 샌드 박스 자격 증명이 여기에 있습니다. 고맙습니다! https://developer.paypal.com/webapps/developer/applications/accounts – edpaez

관련 문제