我正在为我的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
这个问题花了我几个小时的谷歌搜索。
此外,authorization_id
在iOS SDK响应中的含义是什么?它没用吗?
请帮帮我。 提前谢谢。
答案 0 :(得分:0)
经过几个小时的谷歌搜索,我找到了答案。
我误解了支付流程是我的错。
我的移动支付流程应该是
payment_id
和authorization_id
。用户的帐户已存入。将authorization_id
传递给[服务器] authorization_id
来获取付款。在一次性付款的情况下,不要忘记将is_final_capture
设置为true
。捕获后,商家帐户获得资金。 [服务器]增加用户的余额。感谢您的关注