你所在的位置:微信群>互联网推广>正文

微信公众平台开发技术-业务流程

原创
发布时间: 2023-07-15 13:10:07 热度: 229 作者: 李斯特 来源: 微信加 本文共 2560 字 阅读需要 9 分钟
业务流程业务流程如图7-11所示。图7-11业务流程JSAPI接口开发获取微信版本号由于微信5.0版本后才加入微信支付模块,低版本用户调用微信支付功能将无效。
业务流程

业务流程如图 7-11 所示。

图 7-11 业务流程

JSAPI接口开发 获取微信版本号

由于微信 5.0 版本后才加入微信支付模块,低版本用户调用微信支付功能将无效,因此,建议商户先通过 user agent 确定用户当前的版本号,然后再调用支付接口。以 iPhone 版本为例,可以通过 user agent 获取如下微信版本示例信息:

"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X)

AppleWebKit/534.46(KHTML,like Geocko)Mobile/9B206 MicroMessenger/5.0"

其中,5.0 为用户安装的微信版本号,商户可以判定版本号是否高于或者等于 5.0。

H5调用支付API

现在的微信支付方式有多种,如图 7-12 所示,有刷卡支付、公众号支付、扫码支付和 APP 支付。对于支付工具的开发,这里对公众号支付接口进行介绍,其他几种支付接口的开发思路基本上都是一样的。

图 7-12 微信支付方式

1. 思路详解

从微信支付接口文档里的业务流程图(如图 7-11 所示)看,基本思路如下。

首先在后台生成一个链接,展示给用户并让用户点击(例如页面上有微信支付的按钮)。用户点击按钮后,网站后台会根据订单的相关信息生成一个支付订单。此时会调用统一下单接口,对微信支付系统发起请求,而微信支付系统收到请求后,会根据请求过来的数据生成一个预支付交易会话标识(prepay_id,就是通过这个来识别该订单的)。网站收到微信支付系统的响应后,会得到 prepay_id,然后构造微信支付所需要的参数,接着将支付所需参数返回给客户端。用户此时可能会有一个订单信息页,会有一个按钮,点击支付,此时会调用 JS API 接口对微信支付系统发起请求支付。微信支付系统检查了请求的相关合法性之后,就会提示输入密码,用户此时输入密码确认,微信支付系统会对其进行验证,通过的话会返回支付结果,然后微信跳转回 H5 页面。这其中有一步是异步通知网站支付结果,网站需要对此进行处理(比如异步支付结果通过后,需要更新数据表或者订单信息,同时也需要更新订单日志,防止用户重复提交订单)。

2. 代码讲解

这里先简单说一下微信公众号支付的流程。首先获得 code,然后获得 openid,再根据 openid 获取预支付 ID(prepay_id)。获取到 prepay_id,自然得到 packages,这个最难获得的参数获得之后,基本上就做好一半了,剩余的参数包括 appId(公众号 ID)、timeStamp(时间戳)、nonceStr(随机字符串)、signType(签名方式)、paySign(支付签名)。

获取到这些参数后,新建一个页面,复制微信的代码。

  1. function onBridgeReady(){   2. WeixinJSBridge.invoke(   3. 『getBrandWCPayRequest』, {   4. 「appId」 : 「wx2421b1c4370ec43b」,//公众号名称,由商户传入   5. 「timeStamp」:「 1395712654」, //时间戳,自 1970 年以来的秒数   6. 「nonceStr」 : 「e61463f8efa94090b1f366cccfbbb444」,    //随机字符串   7. 「package」 : 「prepay_id=u802345jgfjsdfgsdg888」,   8. 「signType」 : 「MD5」, //微信签名方式   9. 「paySign」 : 「70EA570631E4BB79628FBCA90534C63FF7FADD89」    //支付签名   10. },   11. function(res){   12. if(res.err_msg == 「get_brand_wcpay_request:ok」 ) {}    // 使用   13. // 以上方式判断前端返回,微信团队郑重提示:res.err_msg 将在用户支付成功后   14. // 返回 ok,但并不保证它绝对可靠   15. }   16. );   17. }   18. if (typeof WeixinJSBridge == 「undefined」){   19. if( document.addEventListener ){   20. document.addEventListener(『WeixinJSBridgeReady』,onBridge    Ready, false);   21. }else if (document.attachEvent){   22. document.attachEvent(『WeixinJSBridgeReady』, onBridgeReady);   23. document.attachEvent(『onWeixinJSBridgeReady』, onBridgeReady);   24. }   25. }else{   26. onBridgeReady();   27. }

这样,微信就会自动调用支付。

版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/9558