如何使用 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_id和secret生成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 sdk 与 Gradle Android 集成
如何在 android studio 项目中导入最新的 Paypal sdk?
PayPal Android SDK 实时模式中的身份验证请求失败