最近写了一篇关于微信公众号支付的文章。可能作者实在是经验不足。微信文档看了好几遍,总觉得夹层纱布有点乱。 。 。然后拿到了sdk,自己测试了一下。我更改了配置,立即成功。然而,当我真正投入到项目中时,我却不知道如何开始。研究了两天的结果,分享给大家。我希望它能帮助像我这样的人。刚接触微信开发的朋友。
大前提:微信公众号属于公司,必须有对应的商户和商户密钥(百度会自己找到的...)
笔者这里使用的.1框架+微信支付仅完成了简单的支付。这里是介绍:
1、进入微信公众号商户平台,获取商户密钥,然后配置回调地址
坑!坑!坑!这个地方已经乱七八糟很久了!如果你想在/user/pay下进行支付操作,那么你的授权目录
必须是/用户。
2、配置好后,引入微信支付SDK,放入libs中。我们的第三方都在其中。
了解要使用的文件:
.php--->重写成你自己的方法。然后一般根据自己项目的逻辑,付费查看
页面使用js方法。
3.以下是视图Js部分。需要按照逻辑写ajax,然后跳转到控制器:
我们简单说一下这个ajax的逻辑:这里的ajax方法就是里面的js方法:
()。
我们自己写在支付视图上。当用户选择支付金额后,用户点击支付。这时候我们通过url进行跳转
您自己的付款逻辑。
..就是给get传递一些参数,所以不用关注。
这块的逻辑:(1)通过url进入支付控制器,控制器返回结果if
如果您使用ajax方式,发起微信支付。
(2)开通微信支付。微信会进入你编写的回调函数页面,并执行回调函数的逻辑。这就是我们
下面我会讲到,但是这里我只讲一下大概的逻辑。
(3)回调函数将返回xml数据给微信。微信识别后,会返回支付成功或失败。
4. 这里是支付控制器方法,也就是重写的.php方法:
导入您需要的文件。微信授权页面已保存在数据库中,可以直接使用。
这个时候你需要引入你需要使用的sdk文件,然后获取它,因为我在微信授权的时候它就已经存在了。
数据库,所以我直接使用了,然后按照我自己生成订单的算法生成订单,并存储在
数据库中,此时给出一个状态值:0代表未付费,1代表已付费。对于微信回调,
(对比订单数据是否正确)
5.
执行.php中的方法生成订单信息并传递给我们第3步的ajax,这里的回调地址写为
您已准备好路由处理支付逻辑的控制器。返回的 $ 是第 3 步中的 $
。
如果成功返回,则进入步骤3的(1)(2)部分,微信将访问您的回调地址。
6、此时微信服务器会访问你的回调控制器。
该方法就是回调地址的路由对应的方法。注释部分是访问该方法时微信自带的xml数据。
这也是订单数据。这里,我们首先需要获取微信传输过来的数据,并将数据转换为数组格式。
获取一些值并进行比较操作。
在回调控制器中,首先验证签名(我这里重写了签名),然后查询订单。如果有命令,就执行你的逻辑。
我自己重写了验证签名的方法,和微信的类似,只不过传入的值变成了我们的转换
xml数据获取$arr数组。
7、先验证签名,然后根据微信传过来的订单号查询您已经存入数据库的订单号。
当订单号一致的时候,执行自己的业务逻辑。 (比如增加用户消费等等,记得
订单状态变为已付款),返回微信的格式如下:
成功或失败一定是这个xml数据。只有这样,微信才能识别成功或失败。
8. 回调函数返回xml数据后,我们进入第三步的第(3)节。此时
按照官方文档的写法,当Js的res. == “est:ok” 的意思
付款成功。至此,即视为支付成功。您可以检查数据库以查看订单状态是否已更改。
总结:我个人认为微信支付应该不会像我写的那么麻烦。这可能是我第一次使用微信。
支付的原因可能是因为我以前是做app和网站的,对微信不是很熟悉,所以走了很多弯路。
在这里,我非常仔细地记录了微信支付的流程。大家可以跟着我的流程和想法。
写付款应该没问题。当然,如果谁有更好的方法或者demo,欢迎发布在
下面留言,让我们一起学习、共同进步。
我写的时候很着急。毕竟我是在工作时间写的。我四处张望,生怕被老板发现。
我没有工作,我是一个努力工作的人,所以如果有什么问题可以在下面留言,我们一起讨论。
最好能帮助一些朋友。
结尾