微信支付
接入支付的前提
注册企业主体的微信小程序账号
- 注册地址:微信公众平台
注册方式:微信小程序账号注册## 注册微信商户号
注册微信商户号并开通支付功能(你需要拥有与所开发的项目运营内容相关的营业执照)
- 注册微信商户号:按照网页提示完成注册,注册参考文档
- 开通支付功能:产品中心 - 我的产品 - JSAPI支付
- 配置 JSAPI 支付:产品中心 - 开发配置 - JSAPI支付 - 授权目录:https://zion-app.functorz.com/
- 关联小程序 AppID
- 产品中心 - AppID账号管理 - 关联 AppID 将小程序的 AppID 填入之后确认绑定(AppID 在微信公众平台的基本设置里或Zion预发布界面中)
- 证书文件申请&更换:申请证书之后可获得(注:证书文件需要 .p12 的后缀证书,更换证书需要将序列号和新的证书文件全部发给开发人员),需要商户号的 *cert.p12 的证书文件
- 设置并获取微信商户号ID、APIv2 密钥,并提供给 Zion 工作人员
- APIv2密钥: 账号中心 - API安全 - APIv2密钥 (如果重置需要通知开发人员更新)
- 如果需要退款功能,则需要进一步提供API证书文件
导入支付模块
当您已经完成了微信支付的准备工作,并且购买了【专业版】,请联系工作人员为您导入微信支付模块,即微信支付的行为流,发起微信支付时,需要调用各个行为流完成支付流程配置
配置订单列表页
在项目中创建【订单页】,用于展示用户的个人订单内容,并且在项目设置中选择该页面
微信支付配置流程
通常在您的应用中,进入到微信支付页面时,一般显示订单的总价或者成为会员的价格,然后在页面中显示【立即支付】相关的按钮等待用户点击进行支付,您可以按照下方配置刘晨作为参考,利用已经导入的微信支付相关行为流进行配置。
在 Zion 中具体的支付功能
这里以注册成为小程序会员,支付会员费用为例,展示配置微信支付的具体步骤,点击进入项目找到「付费页」查看具体配置方法:点击进入参考项目
微信支付界面
在该案例中,用户需要先输入手机号码,获取并输入、校验验证码之后,并且勾选了用户协议相关的内容之后方可开始微信支付的配置
向订单表中插入一条「待支付」的订单数据
通常在未支付成功之前,我们已经向数据库中添加了一条状态为「待支付」的订单数据,表示用户已经存在购买意愿
创建交易记录
在上一步添加「待支付」订单数据的成功时,调用【创建交易记录】**的行为流,并根据上方配置流程输入/绑定入参,并自其成功时进行创建交易记录是否成功的判断:创建交易记录的结果数据的 status = succeeded
- amonut:真正要让用户支付的金额
- orderId(订单id):上一步添加订单信息的结果数据中的id
- accountId(购买者id):当前用户id
- description(订单描述):半年会员
进行支付签名认证
在创建交易记录的成功的条件行为下,添加并设置页面数据 payment_transaction_id = 创建交易记录的结果数据的 paymentTransactionId(整数类型),同时调用【进行支付签名认证】的行为流,并设置对应参数:paymentTransactionId = 创建交易记录的结果数据的 paymentTransactionId,在其成功时根据上方配置流程判断签名是否成功
img | img |
---|---|
调用微信支付行为&【创建交易历史】行为流
在签名成功的条件行为下,调用【微信支付】行为以及【创建交易历史】行为流,并在微信支付成功时进行数据的刷新以及页面的跳转。 在【微信支付】的行为中,只能够绑定「支付信息」 = 签名成功的结果数据的 signedPaymentInfoMessage,不允许调用修改表数据行为(需要在【微信支付成功时回调】的行为流中将「待支付」订单数据更新为「支付成功」) 在【创建交易历史】的行为流中,绑定之前创建并设置的页面数据 paymen_transaction_id 即可
img | img |
---|---|
微信支付成功回调配置
在【微信支付成功的回调】中的的代码块,会在微信支付成功之后,抛出如下四个参数用于更新订单数据作为过滤条件,其中status 表示微信支付的状态,order_id 表示你自己创建的订单表中刚才插入的「待支付」的订单id,account_id 表示进行微信支付时付款人的id(账户表的那个id)
在【微信支付成功的回调】中调用【更新数据】的行为,将刚才的订单信息更新为「支付成功」,更新过滤条件即为订单表中订单id等于【微信支付成功的回调】出参中的order_id,购买者id 等于 【微信支付成功的回调】抛出的出参中的 account_id
到此,我们完成了微信支付的基本流程,但对于此案例(支付成为小程序会员)来说,我们还需要考虑这个人是第一次成为会员、到期续费,没到期续费,或者是其他会员种类的情况,那么我们就需要继续在【微信支付成功的回调】下进行这个人信息的判断
- 第一次成为会员:直接设置其会员到期日为一年以后,并更新其角色为「会员」
- 未到期续费:在其到期日之后再加上一年的时间
- 到期续费:直接设置其会员到期日为一年以后,并更新其角色为「会员」