在PayPal SDK(Java)中执行批准的付款时,在哪里获得payerId

时间:2016-09-23 09:05:58

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

我正在为我的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;
}

之后,我发送idPAY-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响应中的含义是什么?它没用吗?

请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

我误解了支付流程是我的错。

我的移动支付流程应该是

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

感谢您的关注