我一直在砸我的頭:驗證貝寶的自適應付款
我正在寫一個Android應用程序,將收到PayPal付款。所以我使用this。
爲Android應用程序,你會發現Java代碼:
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);
在
onActivityResult
我得到這個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"
}
}
}
現在,我需要驗證的支付。我應該做一個請求(從我的服務器),看起來像這樣:
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"
貝寶page說我可以找到userId
的password
和signature
here,而我只看到一個API Username
,一個API Password
和signature
。我用API Username
和password
中的值替換了userId,其值爲API Password
(並且值明顯爲signature
)。 payKey
我從proof_of_payment
和appId
從我必須創建here的應用程序中獲取它。這與我創建的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。 timestamp = 2014-02-09T15%3A37%3A37.559-08%3A00 & responseEnvelope.ack = Failure & responseEnvelope.correlationId = 33628be038bc5 & responseEnvelope.build = 9641252 &錯誤(0)= .errorId 520003 &錯誤(0)。域= PLATFORM &錯誤(0)= .subdomain應用&錯誤(0).severity =錯誤&錯誤(0)= .category應用&錯誤(0) .message = +認證失敗。+ API +證書+ +是不正確。
我只是無法得到驗證該支付所需的信息。 我做錯了什麼?
謝謝你謝謝你!這解決了我的問題。儘管我認爲PayPal指南對於這件小事有點誤導。 – edpaez