Разнесите связанные вызовы из внешнего интерфейса, программно измените идентификатор подключенного Stripe - PullRequest
2 голосов
/ 08 марта 2020

Я пытаюсь решить эту проблему, которую, похоже, не могу решить с помощью API Stripe

Так что при создании заряда с помощью их нового API версии они говорят, что в интерфейсе мы должны вызвать loadStripe ('Pusblishable Ключ ', {' Идентификатор подключенной учетной записи '}) и установите для него значение const.

. Теперь я не понимаю, как нам получить идентификатор, который хранится где-то, скажем, в базе данных?

Для справки, пожалуйста, посмотрите на this и здесь (на шаге 3 ...).

То, что я сейчас делаю, выглядит примерно так

        import React from 'react';
        import ReactDOM from 'react-dom';
        import {Elements} from '@stripe/react-stripe-js';
        import {loadStripe} from '@stripe/stripe-js';

        import CheckoutForm from './CheckoutForm';

      //btw I have set this to const and to let and none work
        const stripePromise =
          fetch("url", {


              method: "POST",
              headers: {
                'Content-Type': 'application/json',
              },
              body: JSON.stringify({
                anything:window.sessionStorage.getItem("Variable Account")
    //here store something that  will tell what account to pull ID data from
              })
            }).then(data => data.json()).then((result)=>{
              return(loadStripe('KEY',{stripeAccount:result}))

            })

class App extends React.Component{
render(){
return(
     <Elements stripe={stripePromise}>
      <CheckoutForm />
    </Elements>
)}
}

export default(App)

но const, похоже, не загружается правильно, если кто-то идет с обычным потоком приложения, скажем, из myapp.com/home -> нажмите myapp.com/home/something-> затем myapp.com/home/ что-то / платежная полоса не загружается, но теперь обновляется браузер, но это говорит мне, что, возможно, я что-то делаю не так, или мне нужно сделать приложение refre sh в 'componentDidMount ()', может быть?

Можно установить его как stati c, но подключенные учетные записи могут будет много, так что если кто-нибудь сможет мне помочь с этим, я буду признателен за это

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Ответил так же, как ваш дубликат вопроса: Как правильно загрузить глобальную переменную с асинхронными c значениями (Reactjs)?

Как правило, вы хотите иметь это идентификатор аккаунта доступен в вашем приложении. Но если вам нужно получить его, это нормально, но убедитесь, что stripePromise - это то, что вы думаете. Например, я могу сделать эту работу здесь с помощью симулированного вызова выборки здесь: https://codesandbox.io/s/stripe-connect-w-resolve-wts34

Обратите внимание, что я управляю Обещанием явно:

const stripePromise = new Promise((resolve, reject) => {
  fetch(...)
  .then(data => data.json())
  .then(result => {
    resolve(
      loadStripe(STRIPE_PUBKEY, { stripeAccount: "acct_xxx" })
    );
  });
});

Тот факт, что вы описываете этот разрыв с помощью навигации, указывает на то, что вы могли неправильно маршрутизировать. Если это одностраничное приложение, навигация не должна вызывать повторный рендеринг компонента App.

1 голос
/ 08 марта 2020

Вы объявляете const

const stripePromise = const stripePromise = fetch(...

Это должно быть

const stripePromise = fetch(...

Это то, что я видел на первый взгляд.

...