微信小程序的业务逻辑的全过程--业务流程

2024-05-07
来源:网络整理

我花了几天时间写了小程序的支付模块接口。 我可能对微信公众号有一些开发经验,但并没有陷入太多的漏洞。 我想在这里记录整个过程。

1、手机小程序微信支付图片:

相信能百度搜索的同学基本上都不是很理解文档的描述。 下面我简单总结一下业务逻辑的整个流程。

微信小程序的商户系统一般以接口的形式开发。 小程序通过调用与后端约定的接口传递参数并接收数据。 在小程序支付中,我们还需要与微信服务器进行交互。 流程大致是这样的:

1、小程序调用登录接口获取code,将code传给商户服务器获取用户的

我们知道,在微信平台中,同一个微信公众号有不同的ID,这些ID就是用户识别ID,也就是说我们用它们来区分不同的用户。 有微信开发背景的人应该很熟悉。 为了知道谁在付费,您需要先获取当前用户。 那么如何获取呢? 请看下面的图片:

小程序调用wx.()获取临时登录证书代码并发回开发者服务器。 开发者服务器用代码交换用户的唯一标识符和会话密钥。 你不明白吗? 别急,让我慢慢解释。 这个业务流程大致就是要先在小程序的代码中调用wx.()从微信获取code,然后通过请求将code发送到商户服务器,然后商户服务器会请求和通过骚操作从微信服务器获取。

伪代码如下(小程序):

3360 (){//调用登录接口 wx . 登录({ 3360 (RES){ =RES .code; wx.({ url:商户服务器接口地址, data:{code:code},:'发布', 3360 (RES){ wx .(' ', RES . data . ); //存在于小程序缓存中}, : (RES log(RES . data); }})}}} 调用这些代码从微信服务器获取代码并发送到商户服务器,记住,这里最好使用post发送请求,因为我们避免其他人滥用接口,所以我们将商户服务器返回的存储在小程序缓存中。

那么服务器应该做什么呢?

我们使用小程序提交的代码、小程序以及下面的URL,使用curl发出get请求。

_ 代码= _ 类型= _ 代码

返回的数据是一个json对象,使用(JSON, true)将其解析为数组。 数据包括用户的 和 。 我们拿到之后,应该将其存储到数据库中,它代表了用户的身份。 那么我们应该如何生成呢?

2. 令牌生成和缓存

我们根据一张用户表关联id和,对应的id就是用户的uid,所以我们可以这样封装

//要缓存的数据数组 $ =$ //包含和_key $['uid'] = $uid; // 用户id $[' '] = num user; // 我们可以选择、、文件缓存等,并以键值方式存储它们。 记得设置一个过期时间。 在这里,我们用来分配一个值,可以这样生成:

//获取32位随机字符串 $str=(32); //通过自定义方法生成32位随机字符串 //使用MD5 $=$_['']加密三组字符串; // 盐 $salt = (' . _ salt '); // 随机字符串 // 返回标记 返回 MD5 ($str)。 $时间戳。 $盐); 这个算法基本上保证了的唯一性。 因为是 和 所在的数组,所以我们需要将数组转为json后再存储。 以后需要uid的时候,可以直接通过访问缓存取这个号码。

三、调用统一下单接口,获取,重新签名

完成订单操作后,如何让用户支付订单费用? 这里是重点,我一步步说:

1.下载微信JS-SDK:

(文章=11_1)

解压并打开lib文件夹:

支付小程序开发_小程序支付_支付小程序如何做要多少钱

我们需要将文件放入框架中的lib中。 例如,如果我使用 tp5,我会将它们放在下面,最好在下面构建子文件夹。 其中.Api.php是入口,..php是配置文件。 安装后需要进行一些更改。 将 ..php 中的以下项目替换为您的项目。

然后询问.Api.php的..php,如图:

首先,使用:()将某个控制器或服务层中的代码引入到.Api.php中,相当于引入了5段代码。

2、调用统一下单API

这里,怎么写一个关于买卖商品的小程序,所以在付款前需要再次检查一下库存,因为用户下单后可能不会立即付款,而如果付款期间库存没了,就会出现问题将会出现。 业务逻辑我就不过多讲了,就看你写代码的严谨程度了。

我们引入上面的文件之后,首先实例化这个类,并通过调用相应的方法传入需要的参数。

伪代码如下:

//调用微信支付统一下单接口 $ =new \(); //设置相关参数 $ - _ _ no($this- no); $ - _ 类型(' '); $ - _ 费用($ * 100) ; //这里的价格单位是$ -set body('Mc'); $ -($ 打开 ID); $ - _ URL(('.还款_ URL ')); //支付回调中,第一个是您的订单号,订单号生成方式可以自定义。 第二个是死参数,第三个是订单总价,第四个是需要转码的中文名称,第四个是此时可以从缓存中检索。 最后一个是支付回调,这是支付成功后微信会访问的地址。 它必须可以从公共网络访问,或者您可以使用反向代理和转发本地服务器。

设置好参数后,直接调用SDK方法

$=\:3360 ($); 如果参数没有错误的话,返回的数据中会包含_id,这就是我们需要的参数。

3. 再次签名

//提交输入对象 $=new \(); //设置$-set(('wx.')); // $ -((字符串) 时间()); //随机字符串 $=MD5(time().(0,1000)); $ -($ ); //数据报 $ -(' ']); //输入$-('MD5'); // 生成签名 $$sign = $-(); // 获取签名数组 $sign data = $-(); // 添加字段支付符号 $sign data['支付符号'] = $sign; //删除($sign data[' '])中未设置的字段; $ 重签后,这五个参数返回给小程序。

第四,小程序获取到这五个参数后,进行支付验证和调整。

伪代码(小程序)

//提交输入对象 $=new \(); //设置$-set(('wx.')); // $ -((字符串) 时间()); //随机字符串 $=MD5(time().(0,1000)); $ -($ ); //数据报 $ -(' ']); //输入$-('MD5'); // 生成签名 $$sign = $-(); // 获取签名数组 $sign data = $-(); // 添加字段支付符号 $sign data['支付符号'] = $sign; //删除($sign data[' '])中未设置的字段; $ 如果一切顺利,二维码将显示在微信开发者工具中。

如果在真机上测试,会直接弹出支付页面。 小程序会直接显示支付成功或失败页面,然后微信服务器开始访问我们之前设置的支付回调地址,推送支付结果,并根据结果更新订单状态。 这里就不写业务逻辑了,简单说一下。

五、货款回拨

实际上,我们需要重写类方法。 这里,请记住:()引入了入口类。

/* * * * *回调方法入口,可以被子类重写。 *注:* 1.微信回调超时时间为2秒。 建议用户使用异步处理,确认成功后立即回复微信服务器。 * 2.当调用失败或未确认收到包裹时,微信服务器将开始重试。 确保您的回调可以重新输入 *@$data 回调解释的参数。 * @$msg 如果回调处理失败,可以向此方法输出错误消息。 * @ true 回调完成,但不继续回调。 true回调处理未完成,回调需要继续 */ ($data, $msg) {//todo用户库,该方法需要在该类后重写,成功则返回true,失败则返回;} in 也就是说,需要编写一个新的类来继承,然后重写该方法。 您可以通过检查 $data[''] 是否成功来判断是否成功。 如果成功,就可以根据业务需求编写业务逻辑,最后返回true。 这时我就在想重写这个方法后如何调用微信。 事实上,微信并没有直接调用这个方法。 你应该在微信支付回调方法中实例化这个新类,然后根据获得的对象调用()方法。 $obj=new 新类(), $obj-()。

分享