android - 验证 Paypal 自适应支付

标签 android paypal paypal-sandbox paypal-adaptive-payments

我一直在敲我的头:

我正在编写一个将接收 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 passwordsignature here而我只找到了 API UsernameAPI Passwordsignature。我已将 userId 替换为 API Username 中的值,并将 password 替换为 API Password 中的值(显然还有 signature 与值(value))。 payKey 我从 proof_of_payment 中获取它,而 appId 来 self 必须创建的应用 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=PLATFORM&error(0).subdomain=Application&error(0).severity=Error&error(0).category=Application&error(0).message=Authentication+failed.+API+credentials+are+incorrect.

我只是无法获得验证此付款所需的信息。 我做错了什么?

最佳答案

我提取了您的错误日志,但您没有使用正确的 API 凭据。看来您正在使用您的 Live 帐户凭据,因为您正在使用的 API 用户名不在沙盒中。您应该使用的 API 凭据来自您在 Android SDK 中用作接收方的沙盒帐户。这很可能是 -facilitator 电子邮件地址。您可以通过以下步骤找到该帐户的 API 凭据:

  1. 登录 developer.paypal.com
  2. 点击应用标签
  3. 点击左侧菜单中的沙盒帐户
  4. 点击三角形展开-促进者电子邮件地址的帐户部分
  5. 点击个人资料链接
  6. 选择 API 凭据标签

关于android - 验证 Paypal 自适应支付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21666774/

相关文章:

android - 处理服务上的 onActivityResult

java - 通过滑动切换到另一个 Activity 不起作用

php - 使用 paypal 的付款信息

paypal - 使用 Braintree DropUI 将 PayPal 帐户链接到保险库的正确方法

android - 带有 libcurl 的大文件的 CURLE_PARTIAL_FILE 错误

java - Android:如何在设备重新启动后运行服务中的线程

php - 为什么我的编码无法插入订购表并链接到 PayPal?

paypal - 如何测试生产 Paypal 按钮?

jquery - codeigniter 上的 PayPal 付款

php - 我是否会收到来自 Paypal 立即购买按钮的所有事件的回调?