从 JSON 响应中提取 PayPal 销售 ID

Extract the PayPal sale id from a JSON response

我正在尝试为 PayPal 交易提取 Sale Id。我正在使用 PayPalAndroidSDKPayPal_MPL

到目前为止,我可以检索支付资源,例如PAY-... 使用这个:

 PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
 if (confirm != null) {
     try {
         Log.i("paymentExample", confirm.toJSONObject().toString());

         JSONObject jsonObj = new JSONObject(confirm.toJSONObject().toString());

         paymentId = jsonObj.getJSONObject("response").getString("id");

这个returns:

{
    "client": {
        "environment": "live",
        "paypal_sdk_version": "2.8.4",
        "platform": "Android",
        "product_name": "PayPal-Android-SDK"
    },
    "response": {
        "create_time": "2015-01-03T19:51:53Z",
        "id": "PAY-...",
        "intent": "sale",
        "state": "approved"
    },
    "response_type": "payment"
}

我已经尝试了以下 return 销售 ID(一个 16 位交易号,与上面的 id:PAY-...不同),但它 return 是一个错误:

paymentId = jsonObj.getJSONObject("response").getString("sale");

PayPal REST API 确实显示销售 ID 在 create a payment response https://developer.paypal.com/docs/api/#create-a-payment

中发回

只是一个JSON,所以jsonObj["response"]["id"] jsonObj["response"] 给你 {"create_time":"2015-01-03T19:51:53Z","id":"PAY-...","intent":"sale","state":"approved"} jsonObj["response"]["id"] 会给你 id

的值

另外,我不确定您为什么要将它从对象转换为字符串,然后再转换回对象。如果没有必要,我会重构该代码。