小程序实现微信支付功能步骤流程

960 阅读3分钟

使用uniapp开发,下面对相关业务进行说明

需要用到的字段的说明:

AppID: 小程序的身份证,微信客户端用来确认你的小程序的身份

AppSecret:小程序秘钥

openid:一个用户对于一个小程序的标识(用户唯一标识),用来确认用户的唯一身份

UnionID:用户在微信开放平台帐号下的唯一标识(小程序绑定开放平台帐号才会有)

session_key:会话秘钥(如果微信API返回加密数据,解密就要用到session_key)

前置工作

要实现支付功能需要做一些前置工作,如果未完成则微信支付不可用


1,申请微信支付商户号****

需要公司来申请,在微信商户平台中。 扫二维码在手机操作****

image.png

1.1扫码进入页面点击底部‘成为商家**’**

1.2在成为商家页面点击

1.3进入页面之后,点击

1.4进入页面之后,点击

1.5进入页面之后,点击

1.6进入页面之后,选择自己的主体,需要提供营业执照才可以办理(个体工商可以对私,有限公司需要对公),

需要准备的资料****

营业执照、法人身份证、法人银行卡、手机号、邮箱号、(小程序或公众号提供APPID和截图2张;如果是实体门店则提供门店LOGO和门店/办公环境照片2张;)下面步骤:

0 image.png

1image.png

2image.png

3image.png

4image.png

2,进入页面点击底部‘绑定商户号’点击 绑定已有商户号并开通微信支付****

image.png

由小程序管理员开通, 登录微信公众平台中。 点击微信支付****

 

商户与小程序之间的关系:****

一个商户可以关联多个小程序,一个小程序也可以绑定多个商户。

对应日常开发,在多商户的情况,每一个商户号在后台都会进行配置,存入数据库,支付时根据当前不同的账户决定使用那一个商户号,这一块需要后台对每一个AppId和商户号做关联,支付时才能确认具体使用那个商户号。(这一块需要后台处理相关逻辑)****

image.png

关联 配置完成 图:****

image.png

获取openid********

小程序支付必须携带openid,一般openid可以后台获取返给前端,因为考虑安全必须要这么做,微信的接口不能放在安全域名中,前端获取openid 也可以,但是只能在本地调试开发版体验版也拿到。已上线就GG了,前端不要轻易和第三方接口打交道,前端是有后台的人,记得凡事找后台。

image.png

1,调用wx.login 接口,获取code

2,Code给到后端根据code,appid,appsecert获取openid。并在登录接口中返回 openid,前端存储 openid,以便后期使用。

image.png

微信支付****

image.png

返回核心数据如下: 后端工程师书写****

        "appId": "xxxx",

        "nonceStr": "xxxx",

        "packageValue": "prepay_id=xxxxx",

        "paySign": "xxxxxx",

        "signType": "MD5",

        "timeStamp": "xxxxxx"

前端调用后端接口,后端传回调用微信支付API所需参数。获取到支付参数后就可以调用微信小程序的 requestPayment API 调起微信支付,因为开发使用的 uniapp,可以使用 uni.requestPayment API,如下:

image.png

调用后,弹出付款界面

image.png

到此微信小程序支付功能完成。

 

报错问题****

1,支付场景非法

--后台需要在创建预支付接口时将trade_type修改为JSAPI模式

2,支付验证签名失败

--需要后台检查生成签名时填写的appid是否正确,一个是小程序appid一个是应用的appid,确保没填错

3,调用支付JSAPI缺少参数:total_fee

--可能是参数有误,注意package参数格式为:"prepay_id=wx20161......"