Я использую библиотеку реагирования на элементы Stripe для страницы, на которой я обрабатываю платежи.Когда я загружаю invoice
в FireFox, метод paymentRequest.canMakePayment()
возвращает null
.Однако в Edge, Chrome и Safari он отображает и работает как задумано.
Информация Firefox:
Сборка: latest
Платформа: Windows 10
Аддоны: react developer tools, ad block plus
Примечание: протестировано с выключенным блокировщиком.
Код для PaymentRequestButtonElement
инъекции.
class _StripeButton extends Component {
constructor(props) {
super(props);
const paymentRequest = props
.stripe
.paymentRequest({
country: 'US',
currency: 'usd',
total: {
label: " Subscription",
amount: 100
},
requestPayerName: true,
requestPayerEmail: true
});
paymentRequest.on('token', ({
complete,
token,
...data
}) => {
complete('success');
});
paymentRequest
.canMakePayment()
.then((result) => {
console.log("DONE: ", result);
this.setState({
canMakePayment: !!result
});
}, (err) => {
console.log(err);
});
this.state = {
canMakePayment: false,
paymentRequest
};
}
render() {
if (this.state.canMakePayment) {
return (<PaymentRequestButtonElement
paymentRequest={this.state.paymentRequest}
className="PaymentRequestButton"
style={{
paymentRequestButton: {
theme: 'dark',
height: '64px'
}
}}/>);
}
return <Loading/>;
}
}
const StripeButton = injectStripe(_StripeButton);
Компонент, который отображает кнопку:
render() {
return (
<StripeProvider stripe={this.state.stripe}>
<Elements>
<StripeButton/>
</Elements>
</StripeProvider>
);
}
Если я вручнуюпереключить this.state.canMakePayment
в истину в инструментах разработчика, я получаю ошибку Error: The paymentRequestButton Element is not available in the current environment.