Используйте ту же облачную функцию в Android, что и в iOS, при создании клиента Stripe

# #android #firebase #kotlin #google-cloud-functions #stripe-payments

Вопрос:

Я пытаюсь создать идентификатор полосы, когда клиенты регистрируют новую учетную запись в моем приложении для Android, как в моем приложении для iOS. Мой вопрос в том, можно ли использовать ту же облачную функцию для создания клиента Stripe в моем приложении для Android, или мне нужно создать совершенно новую папку функций для Android? Спасибо!

Облачная функция

 exports.createStripeCustomer = functions.https.onCall( async (data, context) =gt; {   const email = data.email  const uid = context.auth.uid  console.log(uid)   if (uid === null) {  console.log('Illegal access attempt due to unauthenticated attempt.')  throw new functions.https.HttpsError('internal', 'Illegal access attempt')  }   return stripe.customers  .create({ email: email })  .then((customer) =gt; {  return customer["id"];  })  .then((customerId) =gt; {  admin.database().ref("customers").child(uid).update({  stripeId: customerId,  email: email,  id: uid  })  })  .catch((err) =gt; {  console.log(err);  throw new functions.https.HttpsError(  "internal",  " Unable to create Stripe user : "   err  );  }); })  

Функции Котлина

 registerViewStubSignUpButton.setOnClickListener {  FirebaseAuth.getInstance().createUserWithEmailAndPassword(registerViewStubEmailTextView.text.toString(), registerViewStubPasswordTextView.text.toString())  .addOnCompleteListener {  if (!it.isSuccessful) return@addOnCompleteListener   // else if successful  uploadImageToFirebaseStorage()  uploadStripeCustomer()   }  .addOnFailureListener {  Toast.makeText(this, "Failed to create user: ${it.message}", Toast.LENGTH_SHORT).show()  }  }  private fun uploadImageToFirebaseStorage() {   if (selectedPhotoUri == null) return   val filename = UUID.randomUUID().toString()  val ref = FirebaseStorage.getInstance().getReference("/customer_profile_images/$filename")   ref.putFile(selectedPhotoUri!!)  .addOnSuccessListener {  ref.downloadUrl.addOnSuccessListener {  saveCustomerToFirebaseDatabase(it.toString())  }  }   }   private fun saveCustomerToFirebaseDatabase(profileImageUrl: String) {   val registerStub = findViewByIdlt;ViewStubgt;(R.id.registerStub)  val registerViewStubFullnameTextView = findViewByIdlt;TextInputEditTextgt;(R.id.fullnameInputTextView)  val registerViewStubUsernameTextView = findViewByIdlt;TextInputEditTextgt;(R.id.usernameTextInputView)  val registerViewStubEmailTextView = findViewByIdlt;TextInputEditTextgt;(R.id.emailInputTextView)   val uid = FirebaseAuth.getInstance().uid ?: ""  val ref = FirebaseDatabase.getInstance().getReference("/customers/$uid")   val customer = Customer(uid, registerViewStubFullnameTextView.text.toString(), registerViewStubUsernameTextView.text.toString(),  registerViewStubEmailTextView.text.toString(), profileImageUrl)   ref.setValue(customer)  .addOnSuccessListener {  registerStub.alpha = 0f  finish()  }   }   private fun uploadStripeCustomer() {     }  

Комментарии:

1. Нет никаких причин, по которым вы не можете совместно использовать одну и ту же функцию HTTP между приложениями Android и iOS, предполагая, что там нет ничего конкретного ни для того, ни для другого.

2. Спасибо! Я так и думал, но нужно было проверить.

Ответ №1:

Это зависит от варианта использования. Если облачная функция Firebase выполняет одну и ту же задачу как для приложений iOS, так и для приложений Android, то использование только одного должно работать. Если для приложений iOS и Android существует какой-то другой вариант использования, то следует использовать две разные облачные функции.

В вашем случае, похоже, вы создаете stripeID , когда клиент регистрируется для новой учетной записи как в приложениях iOS, так и в приложениях Android, поэтому разумно использовать одну облачную функцию Firebase как для приложений iOS, так и для приложений Android.

Комментарии:

1. Спасибо! Я так и думал, просто хотел проверить.