с тех пор, как Stripe недавно выпустила обновление для своей политики и добавили способы оплаты, я был вынужден обновить клиентскую часть интернет-магазина, чтобы использовать эти новые способы оплаты.
Магазин построен на Angular 7, и яЯ использую библиотеку Stripe для обработки информации о карте, но, к сожалению, владелец библиотеки не планирует обновлять ее, поэтому мне пришлось вернуться к стандартному Stripe.js и выполнить интеграцию самостоятельно.
После следования инструкциям в ихДокументы Мне удалось отобразить элементы без проблем, но когда я пытаюсь создать токен / метод оплаты, я получаю сообщение об ошибке:
Please use the same instance of Stripe you used to create this Element to create your Source or Token.
Теперь это очень смущает меня ипосле некоторой отладки я обнаружил, что я НЕ делаю несколько экземпляров, а только один на уровне компонентов, например
public initializeStripe() {
...
this.stripe = (<any>window).Stripe('pk_test_**************');
...
}
, который позже используется для обработки платежа
public pay() {
...
if (paymentGateway === "stripe") {
this.stripe.createToken(this.card).then(function (result) {
...
}
Как уже упоминалось,this.stripe
назначается только один раз, так что я действительно не согласен с этим, и любой вклад будет очень полезным.