在 PayPal SDK (Java) 中执行批准的付款时在哪里获取 payerId
Posted
技术标签:
【中文标题】在 PayPal SDK (Java) 中执行批准的付款时在哪里获取 payerId【英文标题】:Where to get payerId when executing approved payment in PayPal SDK (Java) 【发布时间】:2017-02-01 02:01:46 【问题描述】:我正在为我的 ios 应用开发付款结账功能。
服务器后端是用java编写的。
用户在 PayPalPaymentViewController 中批准付款后我得到的数据是 intent
是 authorize
client =
environment = sandbox;
"paypal_sdk_version" = "2.14.2";
platform = iOS;
"product_name" = "PayPal iOS SDK";
;
response =
"authorization_id" = 6238627648439564E;
"create_time" = "2016-09-23T08:54:18Z";
id = "PAY-8J788131PV1025742K7SO3MQ";
intent = authorize;
state = approved;
;
"response_type" = payment;
之后,我发送id
(PAY-8J37....
) 让服务器执行支付。
这里的服务器代码:
Payment payment = new Payment();
payment.setId(paymentId);
APIContext apiContext = new APIContext(PAYPAL_CLIENT_ID_SANDBOX, PAYPAL_CLIENT_SECRET_SANDBOX, "sandbox");
PaymentExecution paymentExecution = new PaymentExecution();
paymentExecution.setPayerId("");//<--- payerId is required
try
payment.execute(apiContext, paymentExecution);
catch (PayPalRESTException e)
//print error
然后PayPalRESTException
被捕获。
错误详情为:field payer_id must not be blank
这个问题花了我几个小时的谷歌搜索。
此外,iOS SDK 响应中的authorization_id
是什么意思?没用吗?
请帮助我。 提前致谢。
【问题讨论】:
【参考方案1】:经过几个小时的谷歌搜索,我找到了答案。
是我误解了支付流程。
我的移动支付流程应该是
[user]授权支付,返回payment_id
和authorization_id
。用户的帐户已存入。将authorization_id
传递给[服务器]
[server] 使用authorization_id
捕获付款。在一次性付款的情况下,不要忘记将is_final_capture
设置为true
。捕获后,商户帐户被注资。 [服务器] 增加用户余额。
感谢关注
【讨论】:
以上是关于在 PayPal SDK (Java) 中执行批准的付款时在哪里获取 payerId的主要内容,如果未能解决你的问题,请参考以下文章
PayPal REST SDK 未在 execute() 上返回正确状态