前言

Stripe的文档还是比较专业的,开发起来还是有点难度的,同时虽然入门很简单,但是还是有很多需要学习掌握的地方

官方Checkout的Payment Link最大的问题是不能调用支付宝和微信(看演示支付宝在中国IP是可用的,但是实际测出来的是不行的)

相关链接

Stripe与电商支付网关综合解决方案、指导和辅助

Stripe 全解教程(一):注册与使用 综合指导与展示

Stripe 全解教程(二) :GitHub Student Developer Pack 1000USD付款手续费免费

Stripe 全解教程(三): 风控与审查的应对第一期:业务审核失败相关的实战教学

Stripe 全解教程(四):基于服务器PHP 构建官方Checkout 调用支付宝&微信支付&银行卡&ApplePay&Gpay等

Stripe 全解教程(五):风控与审查的应对第二期: 警惕银行拒付、如何正确养号、可能的KYC

Stripe 全解教程(六): 支付宝Alipay和微信支付WeChatPay的限制政策与综合使用指南

Stripe 全解教程(七):开户与新手养号综合指导[最低仅需身份证]

Stripe 全解教程(八):养号进阶指导

Stripe 全解教程(九):通过英国注册公司来完美注册Stripe UK

Stripe 全解教程(十):Radar 智能风控系统入门指导

Stripe 全解教程(十一):科普篇-进一步学习 银联+发现Discover支付网关和苹果&谷歌钱包

基础入门

环境准备

首先服务器环境(PHP等部署好)

我这边选择宝塔全家桶,语言用PHP,官方也有给Java啊,GO啊什么的,但是额外部署挺麻烦,还是PHP简单易用

Stripe Checkout PHP构建的话,需要用到PHP Composer,而这玩意宝塔PHP内置了,直接网站设置页安装就行

原理详解

本次参考对象是官方的PHP+HTML版,基于服务器构建

HTML本质上并不重要,主要功能是入口和付款成功提示页

PHP是重点,PHP核心文件 create-checkout-session.php ,字面意思就是创建Checkout会话

预构建文件下载

https://stripe.com/docs/checkout/integration-builder?client=html

首先上方 Download full app 是下载完整版后端,不含三个默认前端,需要自己复制(Checkout、Success、Cancel)

左侧可调参数 包括

  • 预建商品
  • 支付方式
  • 自定义UI
  • 自动税费

首先自动税费没啥用,不管他,然后商品这边只能调用test模式下,所以你可用新建一个,等下可改,自定义UI开上

然后支付方式勾选 支付宝微信银行卡等,根据你需要的勾选

然后这时候右侧的4个文件就构建好了

其他提示不用管他,我们有宝塔

首先你需要把Full App上传到网站跟目录,然后把右侧四个文件也丢进去覆盖掉,然后去宝塔网站设置安装 Composer

然后在网站域名 /checkout.html 打开 点击按钮,就可以跳转StripeCheckout了

进阶设置

无需调用开局HTML

把网站默认设置改成那个PHP文件就行

重定向URL修改

在PHP 文件尾部的 success_url 那边

默认域名修改

在PHP文件的参数 $YOUR_DOMAIN 里面,带http(s),默认需要带 /public

支付宝支付适配

支付宝无需奇怪的操作,直接 payment_method_types 里面有alipay就行,预构建里面帮你加进去了

微信支付适配

微信支付需要额外设置,默认包无法使用微信(但是预览正常)

需要在和 payment_method_types 并行的地方增加如下参数

  'payment_method_options' =>[
'wechat_pay' => [
'client' => 'web',
],
],

官方介绍在这里
https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-payment_method_options-wechat_pay-client

如果没有,则会报错 payment_method_options[wechat_pay][client]` to be set to `web`
Client变量为 web,ios,android
默认建议web,如果你会做UA适配,那随意
不过需要注意这个是必填的,且没有Auto

如果你用过独角数卡就知道,你的微信码,保存到手机相册再用APP从相册扫码会报错,不给付款
这里Stripe文档也提到 “在微信支付注册的应用程序ID。只有当客户端是ios或android时才需要。”
那很明显了,如果是IOS、安卓的Client的话,你需要APPid,这个要是微信支付官方的,而这个id哪里来我不知道,自己研究微信吧
Client为web时需要微信用APP直接相机扫码

Api设置

默认是Test API ,在PHP文件头部有很明显的API,你要换成sk-live开头的

Submit_type

建议改为Auto

允许自定义商品数量

参考如下写法

  'line_items' => [[
    'price' => 'price_1XXXXXXXXXkO',
    'quantity' => 1,
    'adjustable_quantity' => [
        'enabled' => true,
        'minimum' => 1,
        'maximum' => 99,
      ],
  ]],

自定义商品信息

在Line items中的Price修改这个ID就行,这个ID在Stripe后台里面设置有

免前端,打开自动跳转付款

把默认文件改成这个php文件就行

自定义商品价格

我是把商品定价1USD然后自定义数量来解决这个问题

官方给出的解决方案比较繁琐

需要Post进来金额参数,自己看文档吧

ApplePay

已内置,原则上需要 iOS、iPadOS、MacOS的 Safari 浏览器下才可用,其他浏览器可能不行

需要注意的是,哪怕美区支持银联,但是ApplePay的银联卡仍然不可用

Gpay(Google)

已内置,原则上需要 Android、Windows的 Chrome 浏览器下才可用,其他浏览器可能不行