2016-09-23 83 views
1

我正在为我的iOS应用程序开发付款结帐功能。在PayPal SDK(Java)中执行批准的付款时,在哪里获得payerId

服务器后端是用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响应中意味着什么?它没用吗?

请帮帮我。 在此先感谢。

回答

0

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

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

我的移动支付流程有应

  • [用户]授权支付,payment_idauthorization_id返回。用户的帐户已存入。通过authorization_id到[服务器]
  • [服务器]使用authorization_id捕获付款。在一次付款的情况下,请不要忘记将is_final_capture设置为true。捕获后,商家帐户资助。 [服务器]增加用户的平衡。

感谢关注