0

Stripe과 함께 Firebase 클라우드 기능을 사용하여 결제를 처리하는 Android 및 iOS 애플리케이션이 있습니다.Firebase Cloud Functions (Stripe : 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(); 
       } 
      } 
    ); 
} 

스트라이프 (중포 기지 클라우드 기능) : https://github.com/firebase/functions-samples/tree/master/stripe

답변

2

보다는 서버에 대한 전체 token object를 보내는 당신을 다음과 같이 토큰의 id을 보내야합니다.

서버 측에서
public void onSuccess(Token token) { 
    // Send token to your server 
    pushToServer(token.getId()); 
} 

은 (중포 기지) 코드는 charge creation requestsource 매개 변수 만 토큰 ID가 아닌 전체 토큰 개체를 기대하고있다.

+0

굉장합니다. 당신의 도움을 주셔서 감사합니다. – Cari95