2017-10-10 174 views
1

我正在使用Firebase和react-router構建一個create-react-app。 我想集成Stripe作爲支付服務提供商。使用Reactjs和Firebase獲取條紋註冊的用戶IP

磁條驗證過程的一部分,我需要提供用戶同意的條款和條件的IP地址,按照菌柄docs:因爲我用的火力地堡的組合

stripe.accounts.update(
    {CONNECTED_STRIPE_ACCOUNT_ID}, 
    { 
    tos_acceptance: { 
     date: Math.floor(Date.now()/1000), 
     ip: request.connection.remoteAddress // Assumes you're not using a proxy 
    } 
    } 
}); 

和反應路由器,我似乎並不像我可以使用Express(如req,res)在後端獲得IP:我不認爲我可以將獲得的IP地址鏈接到用戶uid。 也在試圖利用這個世界的ipify在客戶端上有反應,我總是使用相同的IP在生產結束(不論設備或位置)時:

import http from 'http'; 
componentDidMount() { 
    http.get({'host': 'api.ipify.org', 'port': 80, 'path': '/'}, function(resp) { 
     resp.on('data', ip => { 
     alert("My public IP address is: " + ip); 
     }); 
    }); 
    } 

任何想法如何,我可以檢索用戶的IP地址是通過Firebase雲端功能還是直接從客戶端?

謝謝

回答

1

您可以使用Firebase雲功能檢索客戶端IP地址。 HTTP觸發的雲功能類似於Node/Express應用程序,它們以響應和請求參數觸發。

exports.someFunctionName = functions.https.onRequest((req, res) => { 
    // ... 
}); 

考慮到這一點,你可以在此功能中實現你的條紋邏輯。

exports.someFunctionName = functions.https.onRequest((request, response) = > { 
    // ... 
    stripe.accounts.update({ 
     CONNECTED_STRIPE_ACCOUNT_ID 
     }, { 
     tos_acceptance: { 
      date: Math.floor(Date.now()/1000), 
      ip: request.ip // Assumes you're not using a proxy 
     } 
     } 
    }); 
}); 

有關如何更好地檢索IP地址的更多詳細信息,可以查看this answer

+0

我試過這個與雲功能,但我怎麼能然後鏈接到一個特定的用戶請求(無論是條紋ID或uid),因爲我不能傳遞任何參數到「someFunctionName」http觸發器? –

+0

您可以使用GET/POST參數將任何參數傳遞給Http函數。有關更多信息,請閱讀['fetch'文檔](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) – bennygenel