Reputation: 481
I am implementing Stripe Payment Gateway with React Native, and I am using react-native-stripe-api
import React, { Component } from "react";
import {
Text,
View,
Image,
TouchableOpacity,
I18nManager,
AsyncStorage,
} from "react-native";
import {
Container,
Right,
Item,
Input,
Header,
Left,
Body,
Title,
Form
} from "native-base";
import FontAwesome from "react-native-vector-icons/FontAwesome";
import Ionicons from "react-native-vector-icons/Ionicons";
// Screen Styles
import styles from "../Theme/Styles/Signin";
import Logo from "../image/qualpros.png";
import axios from "axios";
import AwesomeAlert from "react-native-awesome-alerts";
import Stripe from "react-native-stripe-api";
class Stripedemo extends Component {
static navigationOptions = {
header: null,
showAlert: false,
message: ""
};
state = {
data: [],
number: null,
expmonth: null,
expyear: null,
cvc: null
};
payme(comp) {
var cardDetails = {
"card[number]": "4242424242424242",
"card[exp_month]": "09",
"card[exp_year]": "2023",
"card[cvc]": "123"
};
var formBody = [];
for (var property in cardDetails) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(cardDetails[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");
return fetch('https://api.stripe.com/v1/tokens', {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + '<My_Secret_key>'
},
body: formBody
});
}
constructor(props) {
super(props);
this.state = { showAlert: false };
}
showAlert = () => {
this.setState({
showAlert: true
});
};
hideAlert = () => {
this.setState({
showAlert: false
});
};
render() {
return (
<Container>
<Header style={styles.header}>
<Left style={styles.left}>
<TouchableOpacity
style={styles.backArrow}
onPress={() => this.props.navigation.navigate("ProfileScreen")}
>
<FontAwesome
name={I18nManager.isRTL ? "angle-right" : "angle-left"}
size={30}
color="#6f6f6f"
/>
</TouchableOpacity>
</Left>
<Body style={styles.body} />
<Right style={styles.right} />
</Header>
<View style={styles.logosec}>
<Image source={Logo} style={styles.logostyle} />
</View>
<Form style={styles.form}>
<Item rounded style={styles.inputStyle}>
<Input
textAlign={I18nManager.isRTL ? "right" : "left"}
placeholder="number"
value={"4242 4242 4242 4242"}
style={styles.inputmain}
onChangeText={number => {
this.setState({ number });
}}
autoCapitalize="none"
/>
</Item>
<Item rounded style={styles.inputStyle}>
<Input
textAlign={I18nManager.isRTL ? "right" : "left"}
placeholder="expmonth"
value={"09"}
style={styles.inputmain}
onChangeText={expmonth => {
this.setState({ expmonth });
}}
autoCapitalize="none"
/>
</Item>
<Item rounded style={styles.inputStyle}>
<Input
textAlign={I18nManager.isRTL ? "right" : "left"}
placeholder="expyear"
value={"18"}
style={styles.inputmain}
onChangeText={expyear => {
this.setState({ expyear });
}}
autoCapitalize="none"
/>
</Item>
<Item rounded style={styles.inputStyle}>
<Input
textAlign={I18nManager.isRTL ? "right" : "left"}
placeholder="cvc"
value={"111"}
style={styles.inputmain}
onChangeText={cvc => {
this.setState({ cvc });
}}
autoCapitalize="none"
/>
</Item>
<TouchableOpacity
info
style={styles.signInbtn}
onPress={this.payme.bind(this)}
>
<Text autoCapitalize="words" style={styles.buttongetstarted}>
Add Card
</Text>
</TouchableOpacity>
</Form>
<View style={styles.bottomView} />
<AwesomeAlert
show={this.state.showAlert}
showProgress={false}
title="QualPros!"
message={this.state.message}
closeOnTouchOutside={true}
closeOnHardwareBackPress={false}
showConfirmButton={true}
confirmText="Ok"
confirmButtonColor="#d91009"
onConfirmPressed={() => {
this.hideAlert();
}}
/>
</Container>
);
}
}
export default Stripedemo;
Above is my code for the same.
I am getting error 404 from this code and I have implementing the same way as shown in the example.
I don't mind trying tipsy library but I want Stripe Payment from Credit card and Debit card, not from Apple pay or Goolge pay.
This is the first time please guide me
Upvotes: 3
Views: 3669
Reputation: 481
this is the video I came across which related to stipe payment, maybe this can help, it is in expo but we can at least get an idea
https://www.youtube.com/watch?v=Dzq1zDlZVUg
Upvotes: 0
Reputation: 861
Tipsy is the recommended[1] 3rd party library for Stripe API integration and it does support tokenization Credit Card[0].
Due to PCI compliance requirement[2], it is not recommended you call the tokenization URL directly but to use Stripe provide Mobile SDK[3] and tipsi is built on top of that.
Upvotes: 1