使用Reactjs和Firebase获取Stripe注册的用户IP

问题描述 投票:3回答:1

我正在使用Firebase和react-router构建一个create-react-app。我想将Stripe整合为支付服务提供商。

作为条纹验证过程的一部分,我需要提供符合条款和条件的用户的IP地址,根据Stipe 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
    }
  }
});

因为我使用Firebase和react-router的组合,我似乎不能使用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);
      });
    });
  }

知道如何通过Firebase云功能或直接从客户端检索用户的IP地址吗?

谢谢

reactjs firebase ip-address stripe-connect
1个回答
2
投票

您可以使用Firebase云功能检索客户端IP地址。 HTTP触发云功能与Node / Express应用程序类似,它们通过响应和请求参数触发。

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

考虑到这一点,您可以在此功能中实现Stripe逻辑。

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

© www.soinside.com 2019 - 2024. All rights reserved.