Stripe Elements <> React
by Michelle Bu
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
<script src="https://npmcdn.com/react@latest/dist/react-with-addons.js"></script>
<script src="https://npmcdn.com/react-dom@latest/dist/react-dom.js"></script>
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>
<script src="https://js.stripe.com/v3/"></script>
<div id="checkout">
<!-- This element's contents will be replaced with your component. -->
</div>
JavaScript 1.7
class Checkout extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
componentDidMount() {
this._cardField = this.props.elements.create('card');
this._cardField.mount('#card-field');
}
handleSubmit(ev) {
ev.preventDefault();
this.props.stripe.createToken(this._cardField).then(({token}) => this.setState({token}));
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit.bind(this)}>
<label htmlFor="card-field">Card details</label>
<div id="card-field" />
<button>Pay</button>
</form>
<div>
{this.state.token && `Token: ${this.state.token.id}`}
</div>
</div>
);
}
}
const stripe = Stripe('pk_RXwtgk4Z5VR82S94vtwmam6P8qMXQ');
const elements = stripe.elements();
ReactDOM.render(<Checkout stripe={stripe} elements={elements} />, document.getElementById('checkout'));