创建Stripe Customer时Android能否与iOS共用同一云函数
解答
- 完全不需要为Android端新建独立的Functions文件夹,你可以直接复用现有
createStripeCustomer云函数。
Firebase可调用云函数本身是平台无关的,不管调用方是iOS、Android还是Web端,只要用户已完成Firebase身份认证、传入要求的参数,云函数的执行逻辑完全通用,不需要针对不同端单独开发部署。
Kotlin端uploadStripeCustomer补全实现
private fun uploadStripeCustomer() { val email = registerViewStubEmailTextView.text.toString() // 若云函数部署在非us-central1区域,需要在getInstance中传入对应区域标识 val functions = FirebaseFunctions.getInstance() val params = hashMapOf("email" to email) functions.getHttpsCallable("createStripeCustomer") .call(params) .addOnSuccessListener { // 按需添加成功后的业务逻辑 } .addOnFailureListener { e -> Toast.makeText(this@YourRegisterActivity, "创建Stripe用户失败:${e.message}", Toast.LENGTH_SHORT).show() } }
注意优化现有注册流程
你当前的代码中,注册成功后同时触发了图片上传、用户信息写入、Stripe用户创建三个异步任务,会存在竞态问题:如果saveCustomerToFirebaseDatabase的执行晚于云函数的执行,你构造的Customer对象没有stripeId字段,写入数据库时会直接覆盖云函数已经写入的stripeId值,导致字段丢失。
建议调整执行顺序:
- 注册成功后先上传图片
- 图片上传成功后写入用户基础信息到数据库
- 基础信息写入完成后再调用
uploadStripeCustomer生成并写入Stripe ID
内容的提问来源于stack exchange,提问作者Zachary Smouse
相关产品推荐
相关产品推荐

