react|react native使用stripe让你的app支持信用卡支付
引言 【react|react native使用stripe让你的app支持信用卡支付】
Stripe是由20多岁的两兄弟Patrick Collison和John Collison创办的Stripe为公司提供网上支付的解决方案。我们可以使用Stripe在以下任意端实现对接信用卡支付。
- react native
- web
- android
- ios
简单的填写之后提交,并激活你的邮件。
注册完之后打开 管理页面
点击
Use the Stripe API
获取 appkey 和 Secret key 然后继续开发步骤
实践 思路 前端实现获取支付
token
,后端接到token
后发起支付。 下面我们在react native
端实现对接信用卡支付,其他端以此类推。安装rn依赖
react-native-stripe-api
是针对于Rn端的封装好的sdk,用来获取支付的token
yarn add react-native-stripe-api
复制代码
首先简单搭建一个界面
一个交易需要以下参数
- 钱数
- 电子邮件
- 卡号
- 月份
- 年
- 邮编
- CVC
rn 获取token关键代码
import React, {Component} from 'react';
import Stripe from 'react-native-stripe-api';
const apiKey = 'pk_test_xxxx';
export default class Pay extends Component {
constructor(props){
super(props);
this.state = {
money: '10',
email: 'test@qq.com',
cardID: '4242424242424242',
month: '10',
year: '19',
cvc: '123',
address: '123456',
isLoading: false
}
}async _pay(){
const client = new Stripe(apiKey);
// 获取token
const token = await client.createToken({
number: this.state.cardID ,
exp_month: this.state.month ,
exp_year: this.state.year ,
cvc: this.state.cvc ,
address_zip: this.state.address
});
}}复制代码
发送请求给后台
async _pay(){
const client = new Stripe(apiKey);
// 获取token
const token = await client.createToken({
number: this.state.cardID ,
exp_month: this.state.month ,
exp_year: this.state.year ,
cvc: this.state.cvc ,
address_zip: this.state.address
});
fetch('http://192.168.70.41:7001/', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
token: token.id,
money: this.state.money,
email: this.state.email
}),
}).then((responseJson) => {
Alert.alert('支付成功')
console.log(responseJson)
})
.catch((error) => {
console.error(error);
});
}
复制代码
后台处理
在此之前别忘记安装stripe node sdk
stripe
yarn add stripe
复制代码
'use strict';
const Controller = require('egg').Controller;
const stripe = require('stripe')('你的Secret key');
class HomeController extends Controller {async create() {
const { ctx } = this;
let userData = https://www.it610.com/article/ctx.request.bodyconsole.log(userData,'<------------------------------')const customer = await stripe.customers.create({
source: userData.token, // Token retrieved from Elements, Checkout, or native SDKs.
email: userData.email,
});
let charge = await stripe.charges.create({
amount: parseInt(userData.money) * 100,
currency: 'usd',
customer: customer.id
});
console.log(charge)ctx.body = 'hi, egg';
}async index(){
const { ctx } = this;
ctx.body = 'hi, egg';
}
}module.exports = HomeController;
复制代码
测试
这里我们填了10000美元给后台,后台处理成功之后直接到账。
啦啦啦,发财了!!!!
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小