如何使用 paypal android sdk 中的 payment_id 在 paypal 中获取完整的交易详情

Posted

技术标签:

【中文标题】如何使用 paypal android sdk 中的 payment_id 在 paypal 中获取完整的交易详情【英文标题】:How to get the full transaction details in paypal using the payment_id in paypal android sdk 【发布时间】:2016-10-24 17:40:18 【问题描述】:

我正在使用 paypal android sdk 2.14.1。当我通过sdk付款时,它会给出以下响应,


"response": 
    "state": "approved",
    "id": "PAY-9A140896UE325390DK5VK4KI",
    "create_time": "2016-06-22T15:26:40Z",
    "intent": "sale"
,
"client": 
    "platform": "Android",
    "paypal_sdk_version": "2.14.1",
    "product_name": "PayPal-Android-SDK",
    "environment": "sandbox"
,
"response_type": "payment"

但我想要完整的交易详情

所以请任何人都可以提出如何获取交易详情的建议。按付款 ID。

注意:我正在使用 soap API。

【问题讨论】:

Android 移动 SDK 上的任何更新 【参考方案1】:

我得到了答案,

首先我们要通过client_idsecret生成access-Token

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
     -H "Accept: application/json" \  
     -H "Accept-Language: en_US" \  
     -u "client_id:secret" \  
     -d "grant_type=client_credentials"

在获得 access-Token 后,我必须再次调用 api 以获取完整的交易详情,

curl -v -X GET https://api.sandbox.paypal.com/v1/payments/payment/Payment-Id \
     -H "Content-Type:application/json" \
     -H "Authorization: Bearer Access-Token"

点击此按钮后,我将获得完整的交易详情

如需了解更多信息,请访问link。

【讨论】:

显示付款详情 --> /v1/payments/payment/payment_id 我尝试使用此 REST Api,但它始终没有返回完整响应。我需要一笔交易费,但它只会返回几次。而且我看到它在不同的事务状态下返回不同的响应,如待处理/已批准等。任何人都有任何解决方案来获取事务 ID?【参考方案2】:

将支付ID发送到服务器API:

url -v -X GET https://api.sandbox.paypal.com/v1/payments/payment/Payment-Id \

-H "Content-Type:application/json" \

-H "Authorization: Bearer Access-Token"

更多详情,请查看here

【讨论】:

我先使用soap api。这个访问令牌是从下面的 url 获取的吗? developer.paypal.com/developer/applications如果是,在终端点击payment_id的url时,显示HTTP/1.1 401 Unauthorized。【参考方案3】:

获取 mSDK 响应中返回的"id": "PAY-9A140896UE325390DK5VK4KI",然后使用您的服务器端 REST API 查找支付资源。这也是验证移动支付以防止欺诈的推荐实施方式。

在此处查看Verify a mobile payment的过程

【讨论】:

显示付款详情 --> /v1/payments/payment/payment_id 我尝试使用此 REST Api,但它始终没有返回完整响应。我需要一笔交易费,但它只会返回几次。而且我看到它在不同的事务状态下返回不同的响应,如待处理/已批准等。任何人都有任何解决方案来获取事务 ID?【参考方案4】:

您好,这是经过 2 天研究后的解决方案。我对此感到厌倦。现在我找到了合适的解决方案。

import com.squareup.okhttp.MediaType
import com.squareup.okhttp.OkHttpClient
import com.squareup.okhttp.Request
import com.squareup.okhttp.Requl̥estBody

val client = OkHttpClient()
    val mediaType: MediaType = MediaType.parse("application/json; charset=utf-8")!!
    val body: RequestBody = RequestBody.create(mediaType, "grant_type=client_credentials")
    val request: Request = Request.Builder()
        .url("https://api.sandbox.paypal.com/v1/oauth2/token")
        .method("POST", body)
        .addHeader("Content-Type", "application/x-www-form-urlencoded")
        .addHeader(
            "Authorization",
            "Basic QVgzT24za***********************************lg="
        )
        .addHeader("Content-Type", "application/x-www-form-urlencoded")
        .build()
    val response = client.newCall(request).execute()
    val jsonObject = JSONObject(response.body().string())
    val accessToken = jsonObject.getString("access_token")

*QVgzT24za****************************************lg=*这里是 ClientID:SecretID

的转换代码
val clientID = CommonObjects.PAYPAL_CLIENT_ID
    val clientSecret = CommonObjects.PAYPAL_SECRET_ID
    val text = "$cl4ientID:$clientSecret"
    var data = ByteArray(0)
    try 
        data = text.toByteArray(charset("UTF-8"))
     catch (e: UnsupportedEncodingException) 
        e.printStackTrace()
    
    val base64 =
        Base64.encodeToString(data, Base64.NO_WRAP)

现在,base64 = *QVgzT24za************************************ ****lg=*

【讨论】:

以上是关于如何使用 paypal android sdk 中的 payment_id 在 paypal 中获取完整的交易详情的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PayPal Mobile SDK 中获取买家信息

如何将 PayPal sdk 与 Gradle Android 集成

如何在 android studio 项目中导入最新的 Paypal sdk?

PayPal Android SDK 实时模式中的身份验证请求失败

如何在 cordova phonegap 项目的 libs 文件夹中添加 Paypal-android-sdk?

使用 Braintree SDK 在 Android 中支付 PayPal