近几天因为公司的项目中遇到了需要支持给国外本土支付提供支持,经过调研了市面上几款的产品后选择了stripe支付

由于资料比较少没有太多讨论,慢慢查看官方文档以下是我对官方文档梳理和对接过程中的一些经验和理解记录了下来

关于Stripe

Stripe是一家提供给个人或公司在网上接受付款服务的科技公司 ,支持可以在无需开设商家账户的情况下在网上接受付款。Stripe在付款后两天内等候期检查交易所涉及的公司,以防止潜在的诈骗,然后Stripe便会把资金发送到收款人的户口 而且Stripe还可以支持使用比特币付款

Stripe的优势

  • Stripe接受135类型的货币
  • Stripe对所有交易都采用统一费率,这使它透明且易于理解,统一费率是2.9%+ $ 0.30
  • api接口便于对接调试,只需要少量代码就可以完成功能

理解

Stripe的支付和操作大部分都掌握在我们自己手里,使用stripe提供的Checkout可以安全的收集和标记卡信息,创建嵌入式支付表单,将表单提交到服务端,然后调用他提供的api就可以完成支付 整个过程非常简洁方便

Stipe不像支付宝和微信支付那样,他不存在订单的概念,只管支付本笔交易操作

但他的设计流程都是大同小异大致情况:

  • 客户端通过stripe提供的Checkout插件收集付款所需要的信息
  • 将信息传递给服务端,服务端收集整理后请求stripe提供的所需api
  • 在stripe官方配置页配置各事件的webhook
  • 先验签 通过后根据不同事件先回应stripe 然后在处理我们自己的业务操作

Stripe集成

  1. 在官方https://stripe.com/申请注册账户 按照官方的提示操作成功页面

2.支付方式采用信用卡支付

          当我们遇到一个新东西的时候,仔细的查看官方文档往往可以解决我们80%的问题 ,stripe文档写的还是很有好的,当你注册后,查看官方文档里面给的案列测试代码的时候,所有的变量都是关于你自身的真实数据。

信用卡支付方式

第一步直接在页面里面添加一个form表单,其中一些属性是变量值

<form action="serverApi" method="POST"><scriptsrc="https://checkout.stripe.com/checkout.js" class="stripe-button"data-key="pk_test_k7wYXLcKJqGM75Ag25Kiwx"data-amount="500"data-name="UVIC Limited"data-description="Example charge"data-image="https://stripe.com/img/documentation/checkout/marketplace.png"data-locale="auto"data-currency="gbp"></script>

成功嵌入后我们点击提交会看到这个弹框页面  卡号和信息在官方都有测试信息

第二步直接请求付款接口  (下面是我写的node案例的部分代码)

 async createCharges() {const {ctx} = thisconst orderId = ctx.query.order_idctx.tryThrow(!orderId, 'orderId miss')const orderResult = await this.service.emall.order.getOrderDetail(orderId)ctx.tryThrow(!orderResult, 'order not exist')const data = _.pick(ctx.request.body, ['stripeToken', 'stripeEmail'])const result = await stripe(this.config.stripe.key).charges.create({amount: (orderResult.SKUs[0].price) * 100,currency: 'gbp',source: data.stripeToken,receipt_email: this.config.stripe.receiptEmail,metadata: {order_id: orderId}})ctx.body = result}

详情和返回结果请查看:https://stripe.com/docs/api/charges/create

返回的信息有很多每个字段的描述都有详细介绍,当然我们对于其中几个属性还是要重点提出

amount代表的金额是以分为单位

metadata是可以存储一些其他对你以后有用的信息(在hook的时候会把数据在返回给你)敏感信息(个人身份信息,卡详细信  息等不要存储)

status表示的状态

第三步在官网设置事件的webhook    https://dashboard.stripe.com/account/webhooks

使用webhooks作用:

  • 付款成功后,可以修改业务信息
  • 付款失败时向客户发送电子邮件或信息告知
  • 支付转账时记录会计分录
  • 或者任何修改账户的操作都会告知

注意测试的时候点击View test data查看测试数据不然设置的信息都是正式版

webhook事件有两种选择一种是监听所有事件然后我们自己根据处理一种是可以选择监听

在上一步中我们调用了stripe.charges.create()函数,我们需要监听和charges等一些有关事件

不管stripe.charges.create()函数调用的成功与否都会返回给我们事件,当然我们也不能

盲目的接收,首先要先验证这个请求是不是stripe官方发出还是第三方发出的

验证方式官方也是提供了两种一种官方用法一种是自定义 (当然推荐官方的 省时 省力 省心就对了)

下面的代码片段也是我写的测试案例的代码操作  详细查看官网:https://stripe.com/docs/webhooks/signatures

  return async function (ctx, next) {let sig = ctx.request.header['stripe-signature']try {stripe(ctx.app.config.stripe.key).webhooks.constructEvent(Buffer.from(ctx.request.rawBody), sig, ctx.app.config.stripe.endpointSecret)const eventType = ctx.request.body.typeif (knownEvents[eventType]) {return knownEvents[eventType](ctx, next)}else {return next()}}catch (err) {ctx.status = 400return next()}}
stripe.webhooks.constructEvent(req.body, sig, endpointSecret);

注意点:

  • 调用这个函数成功就验签通过失败就不通过不需要返回处理
  • req.body一定要是原始数据请求体

当我们验证成功之后会收到charge.succeeded事件进行下一步处理,

stripe会调用我们预留的url把信息传递回来 我们来大致看一下body返回的东西

还有一些头或者其他信息可以自己测试的时候打印看下:

我们要先仔细观察下他事件返回的数据结构 其中metadata里面就是我们调用的时候添加的附加信息

在这里会返回很重要的一个属性是type事件类型,我们可以根据这个值做相应处理处理我们自己的业务

其实整个流程还是蛮简单的当然他还包含很多其他功能和对接其他平台 有兴趣的可以了解下

案例代码我正在整理过几天会发布到github上大家相互学习

如果你想咨询了解更多问题方案解答,请扫描关注下方二维码发送消息回复,第一时间为你解答

Stripe支付流程相关推荐

  1. Stripe支付流程简要描述

    在国外,除了Paypal支付之外,Stripe支付也占有很大一部分市场份额,Stripe支付官网 https://stripe.com/ 下面简单介绍一下Stripe的支付流程. 1.用户页面输入充值 ...

  2. Springboot 整合 Stripe 国际支付进行收款操作,Stripe 国际支付的支付流程

    之前我们写了海外的印度 Razorpay 支付,Razorpay 的付款流程跟国内基本是一样的,首先拿着金额等信息生成订单号,再根据订单号进行支付,本次简单的了解下 Stripe 支付流程,进行一下支 ...

  3. Stripe支付 ios

    Stripe支付笔记 stripe-iOS 参考地址:https://stripe.com/docs/payments/accept-a-payment#ios-submit-payment 安装(略 ...

  4. 【Android】Stripe支付

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.Stripe是什么? 二.使用步骤 1.引入库 2.配置publishable key 来和Stripe通讯 3.创建 ...

  5. 美国Stripe支付Android端集成流程

    上家公司想要拓展自己在新加坡的市场,打算做一个新加坡本地的生活服务应用,其中少不了的就是支付了.国外支付这块一直是个头疼的问题.想用Google Wallet吧,但它是采用NFC接触式交易,想要进行线 ...

  6. stripe支付集成

    最近公司要做一下Stripe支付的集成,浅浅地谈一下自己的一点理解 1.stripe是什么? stripe是第三方的支付平台,就像国内的支付宝.微信支付... stripe官方文档:Developer ...

  7. java 对接 stripe支付

    stripe 支付跟国内的 支付宝 .微信.等第三方支付平台不一样 码字不易,开源更不易,点赞收藏关注,多多支持 开源地址  https://gitee.com/J-LJJ/stripe-demo 支 ...

  8. stripe支付使用指南_Stripe vs Braintree:终极指南

    stripe支付使用指南 If you're developing an app that needs to accept payments, you'll likely consider Strip ...

  9. php集成Stripe支付插件,Stripe支付对接

    一.由于文档丢失原因,我就直接上代码了. 这个Stripe支付可以支持多个币种,我下面就采用"HDK"来参照支付先上一个支付效果图 提示:先上代码,在说明博主自己理解的流程. 一. ...

  10. Stripe支付服务端(java)

    环境准备 1.注册 2.两个重要的密钥 首先在STRIPE官网注册账号之后进入首页,点击API密钥,查看账号对应的密钥以及测试密钥,测试密钥以sk_test,正式sk_live开头 sk_test开头 ...

最新文章

  1. 周志华教授:关于深度学习的一点思考
  2. 网传的 Spring 大漏洞
  3. leetcode算法题--从先序遍历还原二叉树
  4. 汽车之家APP车型配置--参数分析
  5. element菜单默认展开和选中
  6. 计算机辅助工艺设计张胜文,计算机辅助工装设计.ppt
  7. 关于eclipse的indigo版中文注释时字体太小的问题(转)
  8. ZooKeeper启动过程2:FastLeaderElection
  9. VisualSVN Server 的安装(windows版本)
  10. 负载均衡 > 用户指南 > 证书管理 > 证书要求
  11. JS总是带有一种神奇的魔力
  12. 在javascript使用EL表达式注意事项
  13. android窗口泄漏
  14. python安装教程-Python安装包+安装教程
  15. matlab对多维数组转置,C++向matlab engine传递二维数组,互为转置
  16. 计算机配置音箱便宜,5款性价比高的电脑小音箱推荐(每一款音质都相当ok
  17. 重启镜像DOCKER
  18. 服务器显示屏 超出工作频率范围,win7电脑显示器超出工作频率范围的详细处理方法...
  19. 什么是Linux发行版 以及各发行版的区别
  20. HSE\HEI\PLL\LSE\LSI

热门文章

  1. 防火门行业研究及十四五规划分析报告
  2. 给 Android 开发者的 RxJava 详解
  3. 变焦和对焦_在Randonautica内部,该应用程序可带领变焦器发现彩虹,尸体和隐藏的宝藏
  4. iframe调用其他网站出现验证码错误
  5. vmix一块屏幕分成三块_定点爆破三块绊脚石,OLED电视或可星火燎原
  6. qpushbutton设置居中_在右侧对齐图标并将文本居中放置在QPushButton中
  7. java对打字速度,java课程设计-- 打字速度测试程序
  8. 正则表达式小Tips
  9. 7z文件linux怎么解压,Ubuntu 12.04下解压7z文件
  10. can收发器TJA1043