微同商城支付逻辑分析(微信小程序支付实现流程)

2024-03-24
来源:网络整理

◆ 密钥设置路径:微信商户平台()-->账户设置-->API安全-->密钥设置

Java签名工具类:

(Map < , > , ){ = ;Set < > = .();[]keys = .();.sort(keys); 临时=新(); = true;for( 键: 键){if( ){ = ;}else{temp.("&");}temp.(key).("="); =(键); ="";if(null != ){ = .();} if(){try{temp.(.(, "UTF-8"));}( e){e.();}}else {temp.();}}temp.("&key="); 温度.();.输出(温度.()); = MD5.(温度.()); ;} sign = (, "商户密钥");

发起支付 使用wx.()发起支付

// 发起微信支付 wx.(pay)

所需参数如下,请求预付费接口后由服务器返回:

文章插图

查询订单请求后端的查询接口进行查询:

// 查询订单状态 res = ({ url: "/my//", : "POST", data: { } });

微通商城支付逻辑分析【微信小程序支付实现流程】

文章插图

参考补充微信支付开发文档 微通商城微信小程序登录换取微信小程序登录+基础认证

基本流程 用户操作流程

文章插图

小程序流程

文章插图

整体支付流程

文章插图

该代码实现了创建订单。 前端主要向后端提交订单信息。 但在创建订单之前需要做一些准备工作:

获取用户数据,获取用户授权,获取用于创建订单的用户信息,然后使用wx.()获取代码(用户登录凭证)。 获取后可以在后台下发,验证用户操作。

登录过程时序:

支付小程序开发_小程序支付是什么意思啊_小程序支付

文章插图

回调方法返回参数示例:

: "NC9d+qwqz": ":ok"iv: "Og==": "{"":"1024","":1,"":"","城市":"","":" ","":"","":""}": ""

{ , , iv, } = e.; { 代码 } = (); = { , , iv, , code };// 将小程序获取到的用户信息提交给后端 // 后端调用微信的鉴权接口 // 可以获取,, 等内容 // 用于创建充值订单和安全验证 {} = ({ url: "//", data: , : "post" });

获取后添加到请求头字段中。 然后发送请求,后端程序保存订单内容,然后进行预付款。

// 中间是订单商品信息 = { : } { } = ({ url: "/", : "POST", data: , })

wx.()

授权。

对于预付款,小程序会将订单号发送到后端预付款接口,然后接口返回必要的付款参数。

// 发起预付费接口添加-type即可成功 { pay } = ({ url: "/my//", : "POST", data: { }, : { "-type": "/x-www-形式 -” } });

这时,后台服务器会先判断订单是否待付款。 如果是,则需要提交以下参数

文章插图

统一订购接口:

参数说明:接口参数说明

请求微信下单接口成功后会返回。 封装后,会返回后续支付所需的参数。

Java随机数生成:

// 获取随机字符 (num) { base = ""; =新的(); sb = new ();for (int i = 0; i < num; i++) {int = .(base.());sb .(base.());} sb.();} = (18) .();

签名生成的一般步骤如下:

第一步,假设所有发送或接收的数据是一个集合M,集合M中参数值非空的参数按照参数名称(字典顺序)从小到大排序,使用格式URL 键值对(即 key1= &key2=...)连接成一个字符串。

请特别注意以下重要规则:

◆ 将参数名称从小到大排序(字典顺序);

◆ 如果参数值为空,则不参与签名;

◆ 参数名称区分大小写;

◆ 当验证调用返回或微信主动通知签名时,传输的sign参数不参与签名,生成的签名与sign值进行验证。

◆ 微信接口可能会添加字段,添加的扩展字段在验证签名时必须支持。

第二步,最后拼接key得到字符串,并进行MD5运算,然后将得到的字符串所有字符转换为大写,得到符号值。 注:密钥长度为32字节。

分享