我已将Fire功能部署到Firebase,以便使用Firebase作为我的后端服务器来处理Stripe付款。我使用过的示例Firebase云功能的链接:https://github.com/firebase/functions-samples/tree/master/stripe
这是我在应用程序中向用户收费时应该触发的功能
exports.createStripeCharge = functions.database.ref('/stripe_customers/{userId}/charges/{id}').onWrite((event) => {
const val = event.data.val();
if (val === null || val.id || val.error) return null;
return admin.database().ref(`/stripe_customers/${event.params.userId}/customer_id`).once('value').then((snapshot) => {
return snapshot.val();
}).then((customer) => {
const amount = val.amount;
const idempotency_key = event.params.id;
let charge = {amount, currency, customer};
if (val.source !== null) charge.source = val.source;
return stripe.charges.create(charge, {idempotency_key});
}).then((response) => {
return event.data.adminRef.set(response);
}).catch((error) => {
return event.data.adminRef.child('error').set(userFacingMessage(error));
}).then(() => {
return reportError(error, {user: event.params.userId});
});
});
我知道当我的数据库发生变化时会触发上述功能。我的问题是,将Stripe付款细节传递给我的Firebase数据库的正确方法是什么?我不确定在读取条带文档后我应该将哪些内容传递给我的firebase数据库。
任何人都可以帮我解决这个问题吗?谢谢!!
附:我的开发环境:Objective C,IOS应用。
最简单的方法是让您的应用向HTTP Firebase function发出HTTP POST请求。您的应用程序应该已经执行此操作以创建Stripe临时密钥,您可以以类似的方式处理付款。收费成功后,您可以将结果信息保存到数据库中。
功能:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const express = require('express');
const bodyParser = require('body-parser');
const stripeApp = express();
stripeApp.use(bodyParser.json());
stripeApp.post('/order', (req, res) => {
const { source } = req.body; // This is the token provided by your app
return stripe.charges.create({...}) // the actual payment
});
exports.stripeAPI = functions.https.onRequest(stripeApp);
参加Stripe的iOS应用程序 - 它很快但在Obj-C世界中仍然有意义。 https://github.com/stripe/stripe-connect-rocketrides/tree/master/ios/RocketRides。
所以对我有用的过程是 -
1)iOS使用本机SDK为Stripe提供卡片详细信息
2)Stripe提供一个令牌,您将其发送到Firebase后端
you could store it in stripeTokens/userId/yourToken
3)Firebase云功能然后触发一个功能并使用此令牌创建Stripe客户(请参阅saving for later和Customer)
you could store it in stripe_customers/userId/stripeCustomerId like your example
4)记得删除yourToken
,因为它只有一次有效
5)最后你可以用这个stripeCustomerId
付款
这里的重要概念是在您的后端创建客户和商店以便将来付款。
希望这可以帮助。