在 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 中批准付款后我得到的数据是 intentauthorize


    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_idauthorization_id。用户的帐户已存入。将authorization_id 传递给[服务器] [server] 使用authorization_id 捕获付款。在一次性付款的情况下,不要忘记将is_final_capture设置为true。捕获后,商户帐户被注资。 [服务器] 增加用户余额。

感谢关注

【讨论】:

以上是关于在 PayPal SDK (Java) 中执行批准的付款时在哪里获取 payerId的主要内容,如果未能解决你的问题,请参考以下文章

已批准的 PayPal SDK 付款不会出现在沙盒仪表板上

paypal rest sdk - 取消付款只提供令牌

PayPal REST SDK 未在 execute() 上返回正确状态

与 Paypal 的 PHP REST SDK 的支付协议

使用 rails 和 active_paypal_adaptive_payment 执行预批准付款

如何通过 REST SDK 获取已执行 PayPal 付款的销售 ID