Discuz3.2插件添加微信扫码支付模式二失败分析

    $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
    
	if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
		system_error('request_tainting');
	}
	return true;
前些天因为公司有一些业务需求,需要往Discuz插件里添加微信扫码支付的功能,毕竟之前做过微信支付这一块,觉得应该不会花太久,但事实是,直接击穿了我的玻璃心 哭

扫码支付二流程

1.开通微信公众号后设置扫码支付 地址为 https://mp.weixin.qq.com

开通扫码支付二,不用在公众号设置支付回调,可以在代码里面添加回调通知安静

2.生成支付二维码


3.支付成功回调处理

由于微信官方缺乏测试调试工具,我多次分析无果只好硬着头皮用了第三方集成支付SDK点击打开链接,启动调试模式发送消息时返回错误提示信息,根据提示内容我去

source\class\discuz\discuz_application.php 找到


可以发现底层处于安全性的考虑,把部分带有特殊标记的原生数据给截断掉,导致回调已经发送却中途丢失的情况。经处理,改为


          $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
	  if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {
		system_error('request_tainting');
	  }
	  return true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值