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

相關問題