0

私はストライプでFirebaseクラウド機能を使って支払いを処理するAndroidとiOSアプリケーションを持っています。Firebaseクラウド機能(ストライプ:AddPaymentSource)

私はトークン操作を処理してから、リアルタイムデータベースに書き込みます。書込みが完了したら、addPaymentSourceクラウド・ファンクション・トリガーが作成されます。

興味深いことに、iOSでトークンを作成し、その出力を私のサーバーに保存するプロセスは、期待通りに機能します。 iOSの実装をAndroidアプリケーションに複製しようとすると、私の問題が発生します。 Firebaseのクラウド機能は期待どおりに起動しますが、サーバにエラーが出力されています。

サーバーで見つかったエラー:

"The source hash must include an 'object' key indicating what type of source to create." 

クライアントコード:

public void tokenizePaymentFields(){ 
    Stripe stripe = new Stripe(getApplicationContext(), stripePublishableKey); 

    final Card stripeCard = new Card(validCard.getCardNumber() 
    ,Integer.valueOf(validCard.getExpiredDate().substring(0,2)),Integer.valueOf(validCard.getExpiredDate().substring(3,5)),validCard.getCvvCode()); 

    if (!stripeCard.validateCard()) { 
     Toast.makeText(getApplicationContext(), 
       "There was an error validating your card.", 
       Toast.LENGTH_LONG 
     ).show(); 
     return; 
    } 
    stripe.createToken(
      stripeCard, 
      new TokenCallback() { 
       public void onSuccess(Token token) { 
        // Send token to your server 
        pushToServer(token); 
       } 
       public void onError(Exception error) { 
        // Show localized error message 
        activitySubmitCreditCardBinding.progressCircle.setVisibility(View.INVISIBLE); 
        Toast.makeText(getApplicationContext(), 
          error.getLocalizedMessage(), 
          Toast.LENGTH_LONG 
        ).show(); 
       } 
      } 
    ); 
} 

ストライプ(Firebaseクラウド機能): https://github.com/firebase/functions-samples/tree/master/stripe

答えて

2

よりもむしろサーバーに全体token objectを送信し、あなた単にトークンのidを次のように送信する必要があります。

サーバー側(Firebase)コードで
public void onSuccess(Token token) { 
    // Send token to your server 
    pushToServer(token.getId()); 
} 

charge creation requestsourceパラメータにのみトークンID、ない完全なトークンオブジェクトを期待します。

+0

驚くばかりです。ご協力いただきありがとうございます。 – Cari95

関連する問題