第一次搞 stripe支付,国外的文档全英文
接stripe支付,根据官方文档,首先就是先跟服务端交互,创建session会话,获取id,当服务端不做这个功能时,就需要前端去掉stripe最底层的api,拿到session_id,这时候懵逼了,找吧文档都有
官网正常对接服务端的接支付流程:点击
创建session会话最底层的api,服务端不对接,需要前端去自己对接,点击
这里只是我接触过的,有错误指出来,一起学习,第一次搞这玩意,记录下来,也为后期别的童鞋,让他们少走点弯路
接通后是这样,拿这个id
调用
https://api.stripe.com/v1/checkout/sessions
这个底层接口,它是post
application/x-www-form-urlencoded
请求,所以在传参数的时候,需要处理一下参数,我用的qs
处理了一下,它是curl请求,第一个-u 参数,我理解的是加密需要权限,需要在请求头里添加Authorization
,它的格式要求加Bearer 你的秘钥
headers: {"Content-Type": "application/x-www-form-urlencoded",Authorization:"Bearer sk_testxxxx秘钥",},
只传文档的参数,是不行的,格式必须要按照它的格式,这里是我最终的参数和格式
var params = {success_url: "https://example.com/success",cancel_url: "https://example.com/cancel","line_items[0][amount]": 999,"line_items[0][currency]": "usd","payment_method_types[0]": "card","line_items[0][name]": "你的用户名",//这里你需要去后台关联一个用户名"line_items[0][quantity]": 2,mode: "payment",};
完整的一个请求创建session会话
onClick_test() {const stripe = Stripe("pk_test_xxxx你的其中一个秘钥");var params = {success_url: "https://example.com/success",cancel_url: "https://example.com/cancel","line_items[0][amount]": 999,"line_items[0][currency]": "usd","payment_method_types[0]": "card","line_items[0][name]": "你的用户名","line_items[0][quantity]": 2,mode: "payment",};Axios.post("https://api.stripe.com/v1/checkout/sessions",qs.stringify(params),{headers: {"Content-Type": "application/x-www-form-urlencoded",Authorization:"Bearer sk_test_xxxxxx",},}).then((res) => {let {data,status}=res;console.log(res, "返回值===========");});},