【问题标题】:Where to get payerId when executing approved payment in PayPal SDK (Java)在 PayPal SDK (Java) 中执行批准的付款时在哪里获取 payerId
【发布时间】: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 是什么意思?没用吗?

请帮助我。 提前致谢。

【问题讨论】:

    标签: java ios objective-c paypal paypal-rest-sdk


    【解决方案1】:

    经过几个小时的谷歌搜索,我找到了答案。

    是我误解了支付流程。

    我的移动支付流程应该是

    • [user]授权支付,返回payment_idauthorization_id。用户的帐户已存入。将authorization_id 传递给[服务器]
    • [server] 使用authorization_id 捕获付款。在一次性付款的情况下,不要忘记将is_final_capture设置为true。捕获后,商户帐户被注资。 [服务器] 增加用户余额。

    感谢关注

    【讨论】:

      猜你喜欢
      • 2013-05-26
      • 2013-08-19
      • 2013-12-26
      • 2014-12-02
      • 2011-01-15
      • 2017-11-17
      • 2013-02-18
      • 2014-04-15
      • 2018-12-11
      相关资源
      最近更新 更多