stripe.js踩坑日记
先附上代码【选择支付方式并唤起对应支付后重定向到支付结果页面】
- 先安装依赖包
npm install @stripe/stripe-js
- 代码【vue3语法】
<template><div class="stripe-pay-ment-box"><div id="payment-element"></div><button @click="handlePayment">Pay</button></div>
</template><script setup>
import { ref, onMounted } from "vue";
import { loadStripe } from "@stripe/stripe-js";
import { closeToast } from "vant";let Stripe = null;
const paymentElement = ref(null);
const clientSecret = ref("");
const payOrder = ref({});
let elements = null;onMounted(async () => {Stripe = await loadStripe("pk_test_you_stripe_key");init();
});
const init = async () => {await initialize();};async function initialize() {const appearance = {theme: "stripe",};const options = {layout: "tabs",paymentMethodOrder: ["apple_pay", "google_pay"],};elements = Stripe.elements({clientSecret: 'you clientSecret',appearance,});const paymentElement = elements.create("payment", options);paymentElement.mount("#payment-element");
}async function handlePayment() {Stripe.confirmPayment({elements,confirmParams: {return_url: `${window.location.origin}/PayTest?pay_order_no=${payOrder.value.bizNo || ''}`},}).then(function ({error}) {if (error) {alert('error:' + JSON.stringify(error))}});
}
</script>
附文档地址
stripe官方文档飞机票
总结:需要英文阅读理解能力,直接减少一半时间
-
文档英文,前后端文档散乱,没有完善的生态,相关官方回复周期长
-
分为预支付和收银台模式
- checkout不支持预支付,但是基本是即用的
- payment支持
可以前端使用stripe ui搭建页面
也采用后端生成方式,全配置化
页面会自动列举适用的支付方式
-
限制条件很多
- 支付方式受设备限制,例如需要设备下载Google Pay 或者 Apple Pay
- 必须在上户后台配置域名以及激活支付方式
- Google支付和apple支付激活钱包支付方式后,需要绑定信用卡且受信用卡地区等限制
-
优点
- 会自动检测用户环境,给出支持的所有支付方式
- 完成所有支付流程,只需要关注回调
- 嵌入式界面,减少开发成本(但是文档阅读成本和试错成本很高)
- 基本是全配置化的(意味着要熟悉文档)
-
一些兼容限制【浏览器、设备、银行卡】
- 硬件兼容
- 支付方式及浏览器对应支付方式兼容表
- 硬件兼容