Stripe支付简介和前端js调用

article/2025/4/20 0:50:25

最近公司正在做一个国际版APP,涉及到海外支付,调研过Paypal、Skrill、BrainTree、Stripe(可参考海外移动支付方案对比),最终 选择了Stripe支付。Stripe特点如下:

  1. 收费规则简单透明,手续费就是收取订单总额的3.4 % + HK$2.35。没有月费、开户费、退款手续费,撤销付款费用手续费HK$85.00
  2. Stripe支持135+种货币创建付款(目前不支持中国大陆,只支持中国香港)。 
  3. Stripe还支持其他付款方式,包括ACH信用转账、ACH借记转账、支付宝、Android Pay、Apple Pay、Bancontact、Bitcoin(比特币)、银行卡(Visa,Mastercard,American Express,Discover,Diners Club,JCB等)、Giropay、iDEAL、SEPA、SOFORT、微信支付等来自全球的热门支付方式。
  4. Stripe的开发文档清晰简单,集成友好。提供了IOS、Android的SDK,以及对各种语言的支持。
  5. 因为没有中国的移动支付那么发达,外国人一般都通过信用卡支付。

 

 

Stripe支付校验(https://stripe.com/docs/js)效果预览

测试卡号  (https://stripe.com/docs/testing)

日期:将来的任意日期   CVC:任意三位数字

普通卡:

4242424242424242   

需3D校验卡(所谓3D校验就是需要用户输入验证码来校验,stripe提供)

4000000000003220

4000002500003155

 

V3使用方法

 

以vue.js为例

视图层:

      <!-- stripe生成的组件 --><div class="text-center"><div class="card-input gotham" id="card-number-element"></div><div class="text-left gotham error">{{ stripeValidationError }}</div><div class="box-row"><div class="card-input1 gotham" id="card-expiry-element"></div><div class="card-input2 gotham" id="card-cvc-element"></div><imgclass="cvv-icon"@click="iconCvv"src="../assets/images/icon-question-cvv@2x.png"/></div></div>

 

Script层:

// 请求获取支付公钥接口http.getSecretToken().then(res => {if (res.state == 11) {console.log(res.data.token)this.stripe = Stripe(res.data.token) // 引入密钥this.createAndMountFormElements() // 调用执行stripe创建函数}})
    // stripe生成卡号校验部分createAndMountFormElements() {let elements = this.stripe.elements({locale: "en" // 设置默认显示语种   en 英文 cn 中文 auto 自动获取语种})// 创建cardNumber并实例化this.cardNumberElement = elements.create("cardNumber", {style: style,showIcon: true, // 设置卡片icon,默认值为falseplaceholder: this.cardNumberplaceholder})this.cardNumberElement.mount("#card-number-element")// 创建cardExpiry并实例化this.cardExpiryElement = elements.create("cardExpiry", { style: style })this.cardExpiryElement.mount("#card-expiry-element")// 创建cardCvc并实例化this.cardCvcElement = elements.create("cardCvc", { style: style })this.cardCvcElement.mount("#card-cvc-element")// 异常文字抛出this.cardNumberElement.on("change", this.setValidationError)this.cardExpiryElement.on("change", this.setValidationError)this.cardCvcElement.on("change", this.setValidationError)},// 获取异常文字setValidationError(event) {this.stripeValidationError = event.error ? event.error.message : ""},

 

第一步:引入script 

<script src="https://js.stripe.com/v3/"></script>

第二步:引入publishableKey

let stripe = Stripe('pk_test_TYooMQauvdEDq54NiTphI7jx');

第三步:create an Elements(创建Elements)

let elements = this.stripe.elements()

注:可以带参数,fonts和locale,详见文档https://stripe.com/docs/js/elements_object/create

例如:

let elements = this.stripe.elements({locale: "en" // 设置默认显示语种:en英文、cn中文、auto自动获取语种})

 

第四步:创建并实例化一个Element

create方法实例化对象  参数type  有Card、cardNumber、cardExpiry、cardCvc、fpxBank、iban、idealBank、paymentRequestButton、auBankAccount

每个type代表不同的实例化对象

 

注:card包含cardNumber、cardExpiry、cardCvc,不能同时创建

常用cardNumber、cardExpiry、cardCvc三个,创建三个实例化对象

可带option参数,常用style、showIcon、placeholder,详见文档:https://stripe.com/docs/js/elements_object/create_element?type=cardNumber

 

然后再实例化出来

element.mount(domElement)方法,绑定视图层的id

例:this.cardNumberElement.mount("#card-number-element")

第五步:获取异常文字的方法

首先,定义变量stripeValidationError来存储异常情况文字

<div class="text-left gotham error">{{stripeValidationError}}</div>   // 可以自定义

定义setValidationError方法

 

再用上stripe的change事件,详见文档:https://stripe.com/docs/js/element/events/on_change?type=cardElement

 

以上步骤就可以完成stripe卡号校验的基本功能

 

第六步:支付

两个对象

  1. Payment_method (pm)    //创建账单
  2. PaymentIntent (pi)     //  付款意图

 

Payment_method对象字段详见文档https://stripe.com/docs/api/payment_intents/object

PaymentIntent对象字段详见文档https://stripe.com/docs/api/payment_methods/object

前后端交互一般流程:

1、前端调stripe接口(创建Payment_method) ,返回Payment_method id(id格式为pm_xxxxxxx)

2、拿到Payment_method id后,请求后端接口,后端部分的stripe进行处理,返回PaymentIntent id(id格式为pi_xxxxxxx)

3、拿到PaymentIntent id去请求后端接口扣款,完成交易

 

前端stripe.createPaymentMethod => Payment_method id => 后端部分stripe => PaymentIntent id => 扣款

 

*前端处理详细过程

1、创建账单

调用 stripe.createPaymentMethod(paymentMethodData) 方法

paymentMethodData对象参数详见文档:https://stripe.com/docs/js/payment_methods/create_payment_method#stripe_create_payment_method-paymentMethodData

必须参数:type,card,billing_details

注意:billing_details一定要是对象,而且有固定格式,不然会请求失败报错

"billing_details": {"address": {"city": null,"country": null,"line1": null,"line2": null,"postal_code": null,"state": null},

格式详见文档https://stripe.com/docs/api/payment_methods/create#create_payment_method-billing_details


// 示例代码
this.stripe.createPaymentMethod({type: "card",card: this.cardNumberElement, // 创建好的cardNumber实例billing_details: stripePaymentMethodOBJ  // 组装好的billing_details对象数据}).then(result => {if (result.error) {this.stripeValidationError = result.error.message } else {// sessionStorage.setItem("paymentMethodId", result.paymentMethod.id)this.paymentMethodId = result.paymentMethod.id  // 获取paymentMethod.id }})

拿到paymentMethod.id后请求后端接口,返回PaymentIntent id,再去扣款 完成交易

 

*3D校验

所谓3D校验就是需要用户输入验证码来校验,页面stripe提供

在获取到paymentMethod.id 后请求后端stripe获取PaymentIntent 对象的时候,后端会返回需不需要3D校验的信息

  

调用stripe.handleCardAction(clientSecret)方法,拉起3D校验弹窗

clientSecret字段存在于PaymentIntent 对象中

方法详情见文档:https://stripe.com/docs/js/payment_intents/handle_card_action

 

 


http://chatgpt.dhexx.cn/article/embo9rat.shtml

相关文章

laravel 对接stripe支付

参考文档 &#xff1a; stripe文档 stripe/stripe-php stripe api 文档 目录 一 获取关键参数二 安装Stripe库三 代码示例 一 获取关键参数 SCRIPE_SECRET_KEY &#xff08;调用api秘钥&#xff09; NOTIFY_SIGN (签名 支付回调使用) 二 安装Stripe库 # Install the PHP libr…

Stripe支付配置

开通支付 首先&#xff0c;你需要在 Stripe 官网开通你自己的支付账号信息&#xff1a; https://stripe.com/ 注册好以后&#xff0c;你即可获取 Stripe 的密钥信息&#xff1a; 密钥主要包含两部分&#xff0c;可发布的密钥 密钥 同时&#xff0c;你需要找到你交易的对应的货…

php实现Stripe支付 | ecshop stripe支付

Stripe支付 &#xff1a;Stripe Login | Sign in to the Stripe Dashboard 1. 安装Stripe&#xff1a; composer require stripe/stripe-php 2. 获取密钥&#xff1a;https://dashboard.stripe.com/test/apikeys 3. 创建产品&#xff1a;Stripe Login | Sign in to the Stri…

php实现Stripe支付

Stripe支付 &#xff1a;https://dashboard.stripe.com/dashboard 1. 安装Stripe&#xff1a; composer require stripe/stripe-php 2. 获取密钥&#xff1a; https://dashboard.stripe.com/test/apikeys 3. 创建产品&#xff1a; https://dashboard.stripe.com/test/product…

stripe 支付

stripe 支付整理 1、创建账号 官方网址 中文版 https://stripe.com/zh-cn-us/payments 2、激活你的账号 填写信息只支持国外与香港的哦 3、开发者秘钥 如果不激活的话&#xff0c;只能用测试api秘钥 4、配置你的回调地址 配置秘钥&#xff0c;选择webhook事件 事件一定要选择…

java 对接 stripe支付

stripe 支付跟国内的 支付宝 、微信、等第三方支付平台不一样 码字不易&#xff0c;开源更不易&#xff0c;点赞收藏关注&#xff0c;多多支持 开源地址 https://gitee.com/J-LJJ/stripe-demo 支付方式一 先看效果 支付方式2&#xff08;需要配合回调&#xff09; 2023-04…

Stripe支付流程简要描述

在国外&#xff0c;除了Paypal支付之外&#xff0c;Stripe支付也占有很大一部分市场份额&#xff0c;Stripe支付官网 https://stripe.com/ 下面简单介绍一下Stripe的支付流程。 1、用户页面输入充值金额&#xff0c;点击确定跳转到支付页面&#xff08;页面的样式由stripe提供…

stripe支付集成

最近公司要做一下Stripe支付的集成&#xff0c;浅浅地谈一下自己的一点理解 1、stripe是什么&#xff1f; stripe是第三方的支付平台&#xff0c;就像国内的支付宝、微信支付。。。 stripe官方文档&#xff1a;Developer tools | Stripe Documentation 关于stripe支付&…

初步认识 Stripe 支付

前言 这段时间在做支付相关的工作&#xff0c;由于业务主要是面向国外的用户&#xff0c;因而就接触了部分国外的支付支付相关的平台。接下来的内容主要是初步看了 Stripe 平台的文档所了解到的基本内容&#xff0c;后面会在使用的过程中不断地进行完善。 基本介绍和与其他支…

Stripe支付流程

近几天因为公司的项目中遇到了需要支持给国外本土支付提供支持&#xff0c;经过调研了市面上几款的产品后选择了stripe支付 由于资料比较少没有太多讨论&#xff0c;慢慢查看官方文档以下是我对官方文档梳理和对接过程中的一些经验和理解记录了下来 关于Stripe Stripe是一家提…

Stripe国际支付简介及API对接

文章目录 一、了解Stripe支付二、Stripe注册流程三、Stripe API 特点3.1 Apikey3.2 Idempotent Requests 幂等请求3.3 两种付款方式 四、Stripe 支付核心API4.1 Token4.2 Customer4.3 Card4.4 Source4.5 charge4.6 PaymentIntents4.7 PaymentMethod 五、完整Stripe支付代码 一、…

mingw(msys2)编译ffmpeg

mingw(msys2)编译ffmpeg 首先要确保pacman环境是最新的&#xff0c;否则会出现莫名其妙的问题&#xff0c;可以执行“pacman -Syu”更新包 安装mingw: pacman -S gcc mingw-w64-i686-toolchain yasm mingw-w64-i686-SDL2 //mingw32 pacman -S gcc mingw-w64-x86_64-toolchai…

Hyperscan Windows 编译指南

Hyperscan Windows 编译指南 Hyperscan 源码下载&#xff1a;https://www.hyperscan.io/准备环境&#xff1a; Windows 10 X64 Cygwin : https://www.cygwin.com/ CMake&#xff1a;https://cmake.org/ Visual Studio 2017 Python (2.7 版本) Boost : https://www.boost…

Hyperscan 5.4.0 安装教程 (CentOS7环境)

参考&#xff1a;Getting Started — Hyperscan 5.4.0 documentationhttp://intel.github.io/hyperscan/dev-reference/getting_started.html 目录 1.下载 2.安装环境配置 2.1 硬件需求 2.2 软件需求 3.安装 3.1 创建构建目录 3.2 设置编译选项 3.3 构建hyperscan 4.安…

Hyperscan 安装

源码下载 Ragel &#xff1a;http://www.colm.net/files/ragel/ragel-6.9.tar.gz boost &#xff1a;http://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gz hyperscan &#xff1a; https://download.csdn.net/download/u014608280/12745509 第…

centos 8 编译安装hyperscan

一、编译安装环境配置 官方文档&#xff1a; http://intel.github.io/hyperscan/dev-reference/getting_started.html 1.1硬件配置 配置参数CPUIntel Xeon Gold 5218R CPU 2.10GHzCPU核数8核 注&#xff1a;需要满足以下条件 1、X86架构 2、Supplemental Streaming SIMD E…

ubuntu20.04下源码安装hyperscan库安装记录

安装测试环境&#xff1a; vmware-ubuntu20.04&#xff0c;gcc 4.8.5&#xff0c;ragel-6.10.tar.gz&#xff0c;boost_1_69_0.tar.gz&#xff0c;hyperscan-5.1.0.tar.gz 1.安装ragel&#xff08;必须的依赖包&#xff09;1MB&#xff1a; 下载地址&#xff1a;http://www.…

基于CentOS 8 系统环境下的 Snort 3 安装指南

O、 阅读要求 本教程并不适合初学者&#xff0c;大家在阅读本文之前&#xff0c;需具备CentOS 8 Linux、Snort 2.9的成功安装经验。本次安装对网络依赖很大&#xff0c;所以大家一定要将网络状态调节好&#xff0c;本指南介绍的内容&#xff0c;仅在测试环境中使用。 一、环境…

msys2+mingw64+ragel安装

[msys2mingw64ragel安装] [简介] 这几天部门老大让解析几个东西&#xff0c;要求用ragel编写&#xff0c;在Windows环境下&#xff0c;要运用到mingw64&#xff0c;安装时发现mingw里没有pacman&#xff0c;需要现安装&#xff0c;然后发现Wget也没有。。。&#xff0c;所以改…

Ragel State Machine Compiler 的速度测试

据说Ragel生成的自动机程序&#xff0c;速度飞快&#xff0c;特地测试了一下&#xff0c;所得结果如下。 测试环境&#xff1a; VC6 Release下编译 测试规模&#xff1a; 一亿次 测试用例&#xff1a; Ragel编译r_atoi.rl文件 vs crt lib的 atoi函数 测试结果&…