2017-10-10 3 views
1

Ich erstelle eine create-react-app mit Firebase und react-router. Ich möchte Stripe als Zahlungsdienstleister integrieren.Erhalte die Benutzer-IP für die Stripe-Registrierung mit Reactjs und Firebase

Im Rahmen des Stripe Verifikationsprozesses, muß ich die IP-Adresse des Benutzers zu den Allgemeinen Geschäftsbedingungen einverstanden schaffen, gemäß dem 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 
    } 
    } 
}); 

Weil ich eine Kombination von Firebase bin mit und reaze-router, ich scheine nicht so zu sein, als könnte ich einen Express wie (req, res) verwenden, um die IP im Backend zu bekommen: Ich glaube nicht, dass ich die erhaltene IP-Adresse mit der User-UID verknüpfen konnte. Auch beim Versuch, die ipify dieser Welt auf dem Client zu verwenden, mit reagieren, habe ich immer mit der gleichen IP in der Produktion (egal das Gerät oder Standort) Ende:

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); 
     }); 
    }); 
    } 

Jede Idee, wie ich das abrufen konnte Benutzer-IP-Adresse entweder über Firebase Cloud-Funktionen oder direkt vom Client?

Vielen Dank

Antwort

1

Sie können die Client-IP-Adresse mithilfe der Firebase Cloud-Funktionen abrufen. HTTP-Triggered-Cloud-Funktionen funktionieren ähnlich wie die Node/Express-App und sie lösen mit Antwort- und Anforderungsparametern aus.

Beispiel

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

Vor diesem Hintergrund können Sie Ihre Streifen Logik in dieser Funktion implementieren.

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 
     } 
     } 
    }); 
}); 

Für weitere Einzelheiten über die IP-Adresse abzurufen besser können Sie this answer überprüfen.

+0

Ich habe dies mit Cloud-Funktionen versucht, aber wie kann ich dann die Anfrage an einen bestimmten Benutzer verknüpfen (sei es Stripe-ID oder UID), da ich keinen Parameter an den HTTP-Trigger "someFunctionName" übergeben kann? –

+0

Sie können einen beliebigen Parameter an Http-Funktionen mit GET/POST-Parameter übergeben. Für weitere Informationen lesen Sie die '' fetch''-Dokumentation (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) – bennygenel

Verwandte Themen