接入支付宝小程序以及支付宝支付记录

2,009 阅读3分钟

接入支付宝小程序以及支付宝支付记录

前期开发准备工作

  • 需要去开放平台 , 小程序控制台 , 选择公钥模式 , 生成 应用公钥私钥. 以及使用支付宝公钥 , 主要用于出入参的加签验签 .
  • 同时生成 AES 内容加密秘钥 . 主要用于内容加解密.
  • 基本上开发需要用到的配置就 appId , 应用私钥 , 支付宝公钥, 内容加密秘钥(AES) , 直接照着文档在控制台操作就行.

用户授权相关

用户授权登录

  • 前端调用 获取授权码 , 获取authCode .

    • 注意 authCode 分为两种获取场景

      image-20221014155036376

      image-20221014154439972

      • 方式1 : 前端静默获取 , 不需要用户进行手动授权. 这种情况下获取的 authCode 仅能用于获取 支付宝用户id (类似于微信的openId) . 无法获取其他用户其他信息
      • 方式2 : 弹起授权窗. 用户主动授权. 此时前端获取到 authCode 传递给后端, 后端调用 alipay.system.oauth.token 接口获取的 accessToken 可以用于来调 alipay.user.info.share

获取手机号

支付

  • 支付宝支付的调用流程基本跟微信支付一致 . 但是支付宝的文档描述有误 . 猜了个坑.

  • 支付宝的线上支付接口 , 小程序未上线也可以进行调用. 没什么必要可以不用走沙箱模式了 , 开发调试全程调线上的接口就好.

  • 首先按 小程序支付接入指南 描述的 , 在开放签约了**[当面付]** .

  • 同时在商户平台绑定了 需要接入支付的小程序 appId

  • 后端调用 alipay.trade.create(统一收单交易创建接口) . 将响应的参数 tradeNo 返回给前端 . 用于唤起支付.

    • 注意 !!!

      这里文档显示的 product_codeJSAPI_PAY.

      按照文档描述传 JSAPI_PAY 支付宝支付接口会报错 errCode:40004 msg:ACQ.ACCESS_FORBIDDE.

      image-20221014171427757

      最后登录 蚂蚁技术支持 . (开放平台的社区提问完全没人回复 :joy: .....) 咨询技术人员发现是文档写错了 ,

      签约的支付产品为 当面付时 , 这里product_code 应该传 FACE_TO_FACE_PAYMENT :smile:......

      当开通支付产品 为 [JSAPI基础包] (支付宝的技术是这么跟我说的 , 但是在开放平台产品列表中找不到这个产品. 技术大哥排查了很久也不知道为什么没有.....) 时 , 这里才传 JSAPI_PAY . 小程序支付同时支持这两种签约的支付产品.

  • 前端 : my.tradePay

  • 后端补充支付结果回调接口 支付结果异步回调

退款

其他

写在最后

  • 有一说一 , 支付宝开放平台登录上去之后动不动就报错501 , 再刷新就白屏. 配置点东西得反复切换浏览器登录 , 反复扫十几次码. 真的麻了.

    image-20221014181458183

    image-20221014181402761

  • 沙箱模式...一言难尽. 开发调试直接调线上接口吧... 实在不行多开一个专门用来测试号.