const functions = require('firebase-functions');
var IAPVerifier = require('iap_verifier');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.verifyReceipt = functions.database.ref('/Customers/{uid}/updateReceipt')
.onWrite(event => {
const uid = event.params.uid;
var receipt = event.data.val();
(strReceipt).toString('base64');
var client = new IAPVerifier('IAP_secretkey')
client.verifyAutoRenewReceipt(receipt, true,function(valid, msg, data){
console.log(' RECEIPT');
if(valid) {
console.log('VALID RECEIPT');
console.log('msg:' + msg);
var strData = JSON.stringify(data);
console.log('data"' + strData);
const newReceiptRef = admin.database().ref('/Customers/{uid}/');
newReceiptRef.update({'receiptData1': data});
const recVerRef = admin.database().ref('/Customers/{uid}/');
newReceiptRef.update({'updateReceipt': 0});
// update status of payment in your system
}else{
console.log('INVALID RECEIPT');
console.log('msg:' + msg);
var strData = JSON.stringify(data);
console.log('data"' + strData);
}
});
});
这是我的 Node js 云函数。 'updateReceipt' 的可能值为 0 和 1。是否只有当值为 1 时才可以运行云函数?
谢谢。
最佳答案
无法仅在存在特定值时才触发函数。
我可以想到两种选择:
- 根据
updateReceipt
值将 Node 写入不同的分支。 - 在您的代码中添加一个
if
。
第二个选项绝对是最简单的:
exports.verifyReceipt =
functions.database.ref('/Customers/{uid}/updateReceipt')
.onWrite(event => {
const uid = event.params.uid;
var receipt = event.data.val();
if (receipt.updateReceipt === 0) {
var client = new IAPVerifier('IAP_secretkey')
...
或者,您可以将更新后的收据与新收据保存在不同的分支中。这样您就可以单独为新收据触发一个函数。
关于ios - 当键为特定值时运行 firebase 云函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46419138/