4

我想通过将原始收据发送至App Store服务器进行验证并使用Firebase云功能获取验证回执,以验证应用购买收据中的苹果。如何在Firebase的Cloud Functions中实现json对象?

var jsonObject = { 
      'receipt-data': receiptData, 
      password: functions.config().apple.iappassword 
     }; 
     var jsonData = JSON.stringify(jsonObject); 
     var firebaseRef = '/' + fbRefHelper.getUserPaymentInfo(currentUser); 

     let url = "https://sandbox.itunes.apple.com/verifyReceipt";//or production 
     request.post({ 
      headers: { 'content-type': 'application/x-www-form-urlencoded' }, 
      url: url, 
      body: jsonData 
     }, function (error, response, body) { 
      if (error) { 

      } else { 
       var jsonResponse = JSON.parse(body); 
       if (jsonResponse.status === 0) { 
        console.log('Recipt Valid!'); 

       } else { 

        console.log('Recipt Invalid!.'); 

       } 
       if (jsonResponse.status === 0 && jsonResponse.environment !== 'Sandbox') { 
        console.log('Response is in Production!'); 
       } 
       console.log('Done.'); 
      } 
     }); 

这是逻辑代码。如何输入收据JSON对象(位于Firebase数据库中)以及如何将此代码集成到http函数中?我正在使用'请求'npm库。

+0

你试图创建一个HTTP函数时遇到了什么特定的问题? –

+0

我不确定如何获取我为实时Firebase数据库中的每个用户存储的收据。如果我使用数据库云功能.onwrite()或.onupdate(),我可以使用db.ref('Customers/{uid}/receiptData')访问收据,并使用event.data获取收据,然后传递它进入这个逻辑。但是,使用http功能,我无法找到文档来做这样的事情。此外,由于我是node.js的新手,我很难理解http云功能的流程和结构。具体来说,我该如何实现这个逻辑代码。 – JackBrother

+1

您通常会在您的Cloud Functions代码中使用[Firebase Admin SDK](https://firebase.google.com/docs/database/admin/start)访问数据库。请参阅https://stackoverflow.com/questions/43650472/access-db-data-in-cloud-functions-for-firebase –

回答

3

根据您的评论,听起来好像您不知道如何从HTTPS类型函数中查询数据库。您可以使用Firebase Admin SDK。有如何做到这一点的lots of examples。特别是,这个uppercase quickstart sample说明了它。你开始是这样的:

// The Firebase Admin SDK to access the Firebase Realtime Database. 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 
+0

指的是:'exports.makeUppercase = functions.database.ref('/ messages/{pushId ('value'); return getSomethingPromise.then(event => {0} {0} {0}原始的') const getSomethingPromise = admin.database()。ref('/ important/messages/(results => { const somethingSnapshot = results [0]; //对快照做些什么 }) })'我有点困惑。 Does not **。onwrite()**意味着在写入数据事件发生时访问数据?我能够在http func中查询数据库吗? – JackBrother

相关问题