TENCHIANG / blog

issue blog
10 stars 1 forks source link

微信JSAPI支付 #16

Open TENCHIANG opened 5 years ago

TENCHIANG commented 5 years ago

什么是JS-SDK

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。

通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

JSAPI支付就是属于JS-SDK的众多功能之一

什么是JSAPI支付

JSAPI支付也即公众号支付, 是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。应用场景有:

为什么要用JSAPI支付

在微信里面只能用JSAPI支付不能用微信H5支付更别说支付宝支付了

JSAPI支付为什么要用到网页授权

openid是微信用户在公众号appid下的唯一用户标识(appid不同,则获取到的openid就不同),可用于永久标记一个用户,同时也是微信JSAPI支付的必传参数。

关于网页授权请参考我之前的文章 #17

JSSDK使用步骤

步骤一:绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

备注:登录后可在“开发者中心”查看对应的接口权限。

步骤二:引入JS文件

在需要调用JS接口的页面引入如下JS文件:

备注:支持使用 AMD/CMD 标准模块加载方法加载

一、设置JSAPI支付支付目录

商户平台-->产品中心-->开发配置, 确保实际支付时的请求目录与后台配置的目录一致

注意: 配置后有一定的生效时间,一般5分钟内生效

二、设置授权域名

统一下单需要openid, 所以需要在公众平台设置(获取openid的)授权域名, 具体在公众号设置 --> 网页授权域名

openid是微信用户在公众号appid下的唯一用户标识(appid不同,则获取到的openid就不同),可用于永久标记一个用户,同时也是微信JSAPI支付的必传参数。

支付场景的交互逻辑

  1. 用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。

  2. 用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示。

  3. 商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。

注意

  1. 支付成功还是以支付成功通知, 甚至主动查询支付记录为标准
  2. 商品网页地址可以做成二维码, 用户可以用微信扫一扫再去支付

JSSDK-invalid signature签名错误的解决方案

确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。

参考

微信JS-SDK说明文档 JSAPI支付

dduo518 commented 5 years ago

有个问题想请教下,如果没有公司那些,注册的微信公众号或者服务号怎么解决支付等

TENCHIANG commented 5 years ago

有个问题想请教下,如果没有公司那些,注册的微信公众号或者服务号怎么解决支付等

恐怕不行,但是听说自己注册一家公司其实不难