使用uniapp开发,下面对相关业务进行说明
需要用到的字段的说明:
l AppID: 小程序的身份证,微信客户端用来确认你的小程序的身份
l AppSecret:小程序秘钥
l openid:一个用户对于一个小程序的标识(用户唯一标识),用来确认用户的唯一身份
l UnionID:用户在微信开放平台帐号下的唯一标识(小程序绑定开放平台帐号才会有)
l session_key:会话秘钥(如果微信API返回加密数据,解密就要用到session_key)
前置工作
要实现支付功能需要做一些前置工作,如果未完成则微信支付不可用 。
1,申请微信支付商户号****
需要公司来申请,在微信商户平台中。 扫二维码在手机操作****
1.1扫码进入页面点击底部‘成为商家**’**
1.2在成为商家页面点击
1.3进入页面之后,点击
1.4进入页面之后,点击
1.5进入页面之后,点击
1.6进入页面之后,选择自己的主体,需要提供营业执照才可以办理(个体工商可以对私,有限公司需要对公),
需要准备的资料****
营业执照、法人身份证、法人银行卡、手机号、邮箱号、(小程序或公众号提供APPID和截图2张;如果是实体门店则提供门店LOGO和门店/办公环境照片2张;)下面步骤:
0
1
2
3
4
2,进入页面点击底部‘绑定商户号’点击 绑定已有商户号并开通微信支付****
由小程序管理员开通, 登录微信公众平台中。 点击微信支付****
商户与小程序之间的关系:****
一个商户可以关联多个小程序,一个小程序也可以绑定多个商户。
对应日常开发,在多商户的情况,每一个商户号在后台都会进行配置,存入数据库,支付时根据当前不同的账户决定使用那一个商户号,这一块需要后台对每一个AppId和商户号做关联,支付时才能确认具体使用那个商户号。(这一块需要后台处理相关逻辑)****
关联 配置完成 后 如 下 图:****
获取openid********
小程序支付必须携带openid,一般openid可以后台获取返给前端,因为考虑安全必须要这么做,微信的接口不能放在安全域名中,前端获取openid 也可以,但是只能在本地调试开发版体验版也拿到。已上线就GG了,前端不要轻易和第三方接口打交道,前端是有后台的人,记得凡事找后台。
1,调用wx.login 接口,获取code
2,Code给到后端根据code,appid,appsecert获取openid。并在登录接口中返回 openid,前端存储 openid,以便后期使用。
微信支付****
返回核心数据如下: 后端工程师书写****
"appId": "xxxx",
"nonceStr": "xxxx",
"packageValue": "prepay_id=xxxxx",
"paySign": "xxxxxx",
"signType": "MD5",
"timeStamp": "xxxxxx"
前端调用后端接口,后端传回调用微信支付API所需参数。获取到支付参数后就可以调用微信小程序的 requestPayment API 调起微信支付,因为开发使用的 uniapp,可以使用 uni.requestPayment API,如下:
调用后,弹出付款界面
到此微信小程序支付功能完成。
报错问题****
1,支付场景非法
--后台需要在创建预支付接口时将trade_type修改为JSAPI模式
2,支付验证签名失败
--需要后台检查生成签名时填写的appid是否正确,一个是小程序appid一个是应用的appid,确保没填错
3,调用支付JSAPI缺少参数:total_fee
--可能是参数有误,注意package参数格式为:"prepay_id=wx20161......"