将Stripe令牌传递给Firebase(obj-c)

问题描述 投票:1回答:2

我已将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应用。

ios objective-c firebase firebase-realtime-database stripe-payments
2个回答
0
投票

最简单的方法是让您的应用向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

特别是https://github.com/stripe/stripe-connect-rocketrides/blob/master/ios/RocketRides/MainAPIClient.swift#L39


0
投票

所以对我有用的过程是 -

1)iOS使用本机SDK为Stripe提供卡片详细信息

2)Stripe提供一个令牌,您将其发送到Firebase后端

you could store it in stripeTokens/userId/yourToken

3)Firebase云功能然后触发一个功能并使用此令牌创建Stripe客户(请参阅saving for laterCustomer

you could store it in stripe_customers/userId/stripeCustomerId like your example

4)记得删除yourToken,因为它只有一次有效

5)最后你可以用这个stripeCustomerId付款

这里的重要概念是在您的后端创建客户和商店以便将来付款。

希望这可以帮助。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.