【发布时间】:2014-03-07 04:02:35
【问题描述】:
我一直在敲我的头:
我正在编写一个可以接收 PayPal 付款的 Android 应用。所以我使用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"
PayPal page 说我可以找到 userId password 和 signature here 而我只找到 API Username、API Password 和 signature。我用API Username 中的值替换了userId,用API Password 中的值替换了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"
在这一切之后,PayPal 很高兴地告诉我:
responseEnvelope.timestamp=2014-02-09T15%3A37%3A37.559-08%3A00&responseEnvelope.ack=Failure&responseEnvelope.correlationId=33628be038bc5&responseEnvelope.build=9641252&error(0).errorId=520003&error(0).domain=PLA ).subdomain=Application&error(0).severity=Error&error(0).category=Application&error(0).message=Authentication+failed.+API+credentials+are+incorrect.
我无法获得验证这笔付款所需的信息。 我做错了什么?
【问题讨论】:
标签: android paypal paypal-sandbox paypal-adaptive-payments