2016-09-23 27 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。捕獲後,商家帳戶資助。 [服務器]增加用戶的平衡。

感謝關注

相關問題