开发 | 小程序变现必备,支付功能快速接入
文 | 吕子谋
在前两篇文章中,已经为大家简单讲解了如何结合知晓云开发一个订单收集类小程序。
从产品框架搭建到页面设计,从数据库建立到核心功能实现,知晓云(cloud.minapp.com)为小程序开发者提供了不少的便捷,例如常用的电商数据表模版和简单好用的 API,省去了后端数据接口的设计和开发时间,快速开发自己的小程序。
回过头来,我们再一次分析下「北江纺织牛仔新时尚」小程序,在商品展示再到购物下单的流程中,是否还缺少我们常见的支付环节呢?
实际上「北江纺织牛仔新时尚」的交易业务属于线下操作,并不涉及到在线支付。而对于线上业务,就需要接入支付才能完成整个交易环节,今天就给大家演示如何快速在小程序里实现在线支付功能。
小程序微信支付
小程序开发文档已经提供了微信支付的 API:wx.requestPayment(OBJECT)
从开发文档上看,想要成功调用微信支付 API 的必需参数有 5 个:timeStamp,nonceStr,package,signType,paySign。其中 nonceStr、package、paySign 的值是需要通过算法或调用接口后才能获取的。
- nonceStr 值可通过随机数生成算法生成;
- package 值所包含的 prepay_id 参数值是调用统一下单接口后的返回值(调用微信支付前需要调用微信统一下单API);
- paySign 的值需要通过一定的规则生成,点击小程序支付接口文档,我们可以看到 paySign 签名所需字段列表,再根据签名算法生成 paySign 值。
paySign 签名必需字段也是 5 个:appId,timeStamp,nonceStr,package,signType。除了 appId 参数,其余 4 个参数名都与微信支付 API 参数一样。
但需要注意的是,这里的签名方式 signType 需要与统一下单的签名类型一致,而不是与「微信支付 API」的签名类型一致。详细签名算法请参考签名算法 👇
知道每个参数值如何获取之后,就可以调用微信支付 API 了。
// 示例代码
wx.requestPayment({
‘timeStamp’: ”,
‘nonceStr’: ”,
‘package’: ”,
‘signType’: ‘MD5’,
‘paySign’: ”,
‘success’:function(res){
},
‘fail’:function(res){
}
})
当然,实现以上微信支付功能的前提是先在微信后台开通微信支付功能,获取商户号等相关信息,具体开通流程请在微信商户平台查看接入指引。
可以加入知晓云开发交流群跟我交流沟通 👇
使用知晓云快速接入微信支付
如果你觉得调用微信支付 APIwx.requestPayment(OBJECT) 有点复杂,接下来我会再介绍一种更简单的方法:知晓云为开发者提供的微信支付 API:wx.BaaS.pay(OBJECT)。
从知晓云提供的微信支付开发文档上看,调用微信支付 API 必需参数只有 2 个:totalCost,merchandiseDescription。
- totalCost 值(支付总额)本身就是订单的必需参数值,通过购买商品价格和数量等计算出来的;
- merchandiseDescription 值则是我们自定义的字符串数据。
对比之下,免去了复杂的算法生成和接口回调,轻轻松松就可以使用微信支付了。而且知晓云的开发文档也介绍了使用场景、接口说明和示例代码。
关注「知晓程序」微信公众号,回复「知晓云」,获取知晓云开发文档。
现在我们再结合「北江纺织牛仔新时尚」小程序来进一步了解知晓云微信支付 API 的使用。
用户在下单时会生成订单 order,订单内包含每项商品数量价格的订单子单 orderItem ,订单子单包含订单子单标志 id、商品记录标识 productId、商品价格 price 和商品数量 quantity 等信息。
通过以上信息先可以计算出每项商品订单子单的金额,累加后得到必需参数总金额 totalCost 。在结合知晓云调用微信支付时,将支付总金额参数及其他非必需字段(选传)传进去就可以了。
// 支付示例代码
// 假设 orderItems 为订单子单列表
let params = {}
params.totalCost = count(orderItems) // count 为开发者自定义的计算总金额方法,
params.merchandiseDescription = ‘北江纺织牛仔裤’
wx.BaaS.pay(params).then((res) => {
// success. 支付请求成功响应。
/* 如果支付成功, 则可以在 res 中拿到 transaction_no 和支付结果信息
如果支付失败, 则可以获取失败原因
注: 只要是服务器有返回的情况都会进入 success, 即便是 4xx,5xx 都会进入
所以非系统级别错误导致的支付失败也会进入这里, 例如用户取消,参数错误等
这是微信的处理方式与 BaaS 服务(器)无关
*/
}, (err) => {
// 未完成用户授权或发生网络异常等
console.log(err)
});
不过在你享受知晓云提供的微信支付便捷之前,请先在知晓云开发者「控制台-支付」为你的小程序绑定微信支付。
在绑定完微信支付后,不仅可以轻松地在小程序中调用微信支付,还能很方便地管理小程序的支付记录,可以看到支付记录的状态和详情以及申请退款等。
到此,这个系列就结束了,回顾阅读
通过这三篇文章,为大家介绍了从商品展示到购物车、下单功能再到完成支付的整个电商流程。每个功能同时可以在不同的场景下独立应用。
当然,这几个都是应用最广也最基础的功能,我们后续还会进行更多营销功能的开发复盘。
关注「知晓程序」公众号 ,在微信后台回复「开发」,获取小程序开发全套经验。