接入支付宝小程序以及支付宝支付记录
前期开发准备工作
- 需要去开放平台 , 小程序控制台 , 选择公钥模式 , 生成 应用公钥私钥. 以及使用支付宝公钥 , 主要用于出入参的加签验签 .
- 同时生成 AES 内容加密秘钥 . 主要用于内容加解密.
- 基本上开发需要用到的配置就
appId
,应用私钥
,支付宝公钥
,内容加密秘钥(AES)
, 直接照着文档在控制台操作就行.
用户授权相关
用户授权登录
-
前端调用 获取授权码 , 获取
authCode
.-
注意
authCode
分为两种获取场景- 方式1 : 前端静默获取 , 不需要用户进行手动授权. 这种情况下获取的
authCode
仅能用于获取支付宝用户id
(类似于微信的openId
) . 无法获取其他用户其他信息 - 方式2 : 弹起授权窗. 用户主动授权. 此时前端获取到
authCode
传递给后端, 后端调用 alipay.system.oauth.token 接口获取的accessToken
可以用于来调 alipay.user.info.share
- 方式1 : 前端静默获取 , 不需要用户进行手动授权. 这种情况下获取的
-
获取手机号
- 基本按照 my.getPhoneNumber 描述
- 主要流程基本与微信一致 .
- 前端引导用户主动授权 .
- 获取加密的用户手机号数据.
- 传递给后端. 使用支付宝公钥进行验签 , 使用支付宝加密key (AES) 解密 . 解析前端传递加密手机号数据
支付
-
支付宝支付的调用流程基本跟微信支付一致 . 但是支付宝的文档描述有误 . 猜了个坑.
-
支付宝的线上支付接口 , 小程序未上线也可以进行调用. 没什么必要可以不用走沙箱模式了 , 开发调试全程调线上的接口就好.
-
首先按 小程序支付接入指南 描述的 , 在开放签约了**[当面付]** .
-
同时在商户平台绑定了 需要接入支付的小程序
appId
-
后端调用 alipay.trade.create(统一收单交易创建接口) . 将响应的参数
tradeNo
返回给前端 . 用于唤起支付.-
注意 !!!
这里文档显示的
product_code
传JSAPI_PAY
.按照文档描述传
JSAPI_PAY
支付宝支付接口会报错errCode:40004 msg:ACQ.ACCESS_FORBIDDE
.最后登录 蚂蚁技术支持 . (开放平台的社区提问完全没人回复 :joy: .....) 咨询技术人员发现是文档写错了 ,
签约的支付产品为 当面付时 , 这里
product_code
应该传FACE_TO_FACE_PAYMENT
:smile:......当开通支付产品 为 [JSAPI基础包] (支付宝的技术是这么跟我说的 , 但是在开放平台产品列表中找不到这个产品. 技术大哥排查了很久也不知道为什么没有.....) 时 , 这里才传
JSAPI_PAY
. 小程序支付同时支持这两种签约的支付产品.
-
-
前端 : my.tradePay
-
后端补充支付结果回调接口 支付结果异步回调
退款
- alipay.trade.refund(统一收单交易退款接口)
- 注意 : 与微信不同的是 , 支付宝的退款是同步执行 而不是异步回调的 . 需要根据调起退款接口的响应参数进行判断是否退款成功
其他
- 其他支付宝小程序API接入自己参考 小程序 API 概览 吧 ...
写在最后
-
有一说一 , 支付宝开放平台登录上去之后动不动就报错501 , 再刷新就白屏. 配置点东西得反复切换浏览器登录 , 反复扫十几次码. 真的麻了.
-
沙箱模式...一言难尽. 开发调试直接调线上接口吧... 实在不行多开一个专门用来测试号.