java - 在 PayPal SDK (Java) 中执行批准的付款时从哪里获取 payerId

标签 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;
}

之后,我发送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响应中是什么意思?没用吗?

请帮帮我。 提前致谢。

最佳答案

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

是我误解了支付流程。

我的手机支付流程应该是

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

谢谢关心

关于java - 在 PayPal SDK (Java) 中执行批准的付款时从哪里获取 payerId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656882/

相关文章:

java - 随机检查数组列表中的对象

iphone - 使用 iOS Addressbook api 搜索交换联系人

objective-c - undefined symbol : "_OBJC_CLASS_$ error

ios - 图片(或视频)在 Swift 中发布到服务器

ios - AFNetworking:getPath:参数方法导致问题

ios - 控制 Sprite 套件中的最大速度

iphone - Restkit内存不足警告

Java代码在任意输入中保留特殊字符

java - 显示 BufferedImage 后如何对其进行编辑?

java - JAVA中匹配未转义引号的正则表达式