【问题标题】:Handle IPN on Cloud Functions of Firebase在 Firebase 的 Cloud Functions 上处理 IPN
【发布时间】:2018-09-10 03:19:56
【问题描述】:

在我的客户上,我有一个订单,其中包含我想购买的商品。当我“结帐”订单时,我向我的 firebase 云函数发送一个请求,该函数以在线支付交易的链接进行响应。客户完成交易后,公司(提供在线支付服务)的请求正在发送到我的云功能之一,该功能将处理付款。

验证付款后,我想将付款的新数据存储到订单中(例如状态、完成日期等...)。

如何存储我的新数据?我知道使用 firestore 我可以简单地使用 .set(..) 方法。

【问题讨论】:

  • 更新存储在firestore中的文档有问题吗?如需更多详细信息,请参阅文档like this。或者在确定您应该更新哪个文档时存在问题?在这种情况下,您需要将文档 ID 发送到事务服务。当回发将从事务服务返回时,您将使用保存的文档 ID 更新 Firestore 中所需的文档
  • @OleksiiMiroshnyk 我可以在云功能上使用 Firestore 吗? (这里是新手)
  • 是的,你可以。如果您需要在云功能中使用 firestore 执行某些操作,只需使用 admin.firestore() 即可访问您的数据库。您还可以处理文档上的不同事件。更多信息请阅读this。还有很简单的例子here
  • 这就是我要找的。谢谢。
  • 嗨@OleksiiMiroshnyk,您能否发布您的cmets 作为答案?提前致谢!

标签: typescript firebase google-cloud-functions


【解决方案1】:

我从 cmets 得到了答案(感谢 Oleskii Miroshnyk)。既然 Oleskii 没有将其作为答案发布,那么我会的。

首先,我们需要导入firebase-admin

import * as admin from 'firebase-admin';

或在 Javascript 中:

const admin = require('firebase-admin');

之后,我们需要像这样初始化我们的应用程序:

const serviceAccount = require('../service-account-key.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://{PROJECT-ID}.firebaseio.com'
});

service-account-key.json 可以在您的 Firebase 设置中找到。

完成配置后,我可以像这样访问firestore 方法:

const firestore = admin.firestore();

firestore.collection(...).doc(...).set(...)

就是这样。其实很简单。

【讨论】:

  • 如果您在 Cloud Functions for Firebase 中使用此功能,则无需添加凭据。它自动发生。 admin.initializeApp();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2018-04-04
  • 2021-08-21
  • 2018-01-02
  • 2020-11-30
  • 1970-01-01
  • 2020-01-05
相关资源
最近更新 更多