关于微信支付后回调验证的处理
参考来源:
https://www.php.cn/php-weizijiaocheng-407545.html
https://blog.csdn.net/rain_silently/article/details/79390377
https://blog.csdn.net/chenrui310/article/details/80830798
废话不多说,直接上代码:
public function demo(){// 获取微信回调的数据$notifiedData = file_get_contents('php://input');//XML格式转换$xmlObj = simplexml_load_string($notifiedData, 'SimpleXMLElement', LIBXML_NOCDATA);$xmlObj = json_decode(json_encode($xmlObj),true);$key = "公众号的key";//请求回来的数据格式 // $xmlObj = [ // 'appid' => 'wxf546a8df41c2ce18', // 'attach' => '商品', // 'bank_type' => 'CFT', // 'cash_fee' => '1', // 'fee_type' => 'CNY', // 'is_subscribe' => 'Y', // 'mch_id' => '1534940151', // 'nonce_str' => 'jld6md2ky75emve7spsrf2tolturngrm', // 'openid' => 'oyljP5y2HbOHsEAuOLpHP2dXQChw', // 'out_trade_no' => '20190808164259728748651734197807', // 'result_code' => 'SUCCESS', // 'return_code' => 'SUCCESS', // 'sign' => 'A68DC8C8E61DCA90D4454963982A7B12', // 'time_end' => '20190808164308', // 'total_fee' => '1', // 'trade_type' => 'JSAPI', // 'transaction_id' => '4200000342201908088760422065', // ];//是否成功支付if ($xmlObj['return_code'] == "SUCCESS" && $xmlObj['result_code'] == "SUCCESS") {//把签名去掉$xmlSign = $xmlObj['sign'];unset($xmlObj['sign']);$sign = $this -> appgetSign($xmlObj,$key);if ($sign === $xmlSign){//验证通过,确认已经支付
//告诉微信不用重复通知 return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
}}}/** 格式化参数格式化成url参数 生成签名sign*/private function appgetSign($Obj,$appwxpay_key){foreach ($Obj as $k => $v){$Parameters[$k] = $v;}//签名步骤一:按字典序排序参数ksort($Parameters);$String = $this -> ToUrlParams($Parameters);//签名步骤二:在string后加入KEYif($appwxpay_key){$String = $String."&key=".$appwxpay_key;}//签名步骤三:MD5加密$String = md5($String);//签名步骤四:所有字符转为大写$result_ = strtoupper($String);return $result_;}private function ToUrlParams($Parameters){$buff = "";foreach ($Parameters as $k => $v){if($k != "sign" && $v != "" && !is_array($v)){$buff .= $k . "=" . $v . "&";}}$buff = trim($buff, "&");return $buff;}
转载于:https://www.cnblogs.com/laijinquan/p/11325249.html
关于微信支付后回调验证的处理相关推荐
- java 微信支付成功回调_微信支付成功但并未走回调方法(小程序支付)
问题描述 项目采用: Spring Cloud + Boot + Gateway服务网关 + Consu 注册中心 在小程序发起微信支付后, 调用后台服务的发起微信预支付,通过预支付拿到的返回信息小程 ...
- java微信支付v3系列——5.微信支付成功回调
目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...
- python django 微信支付成功回调url(notify_url)
微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 首先 这个 notify_url 有俩个要求 1.公网能直接访 ...
- django 微信支付成功回调url(notify_url)
微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 首先 这个 notify_url 有俩个要求 1.公网能直接访问 ...
- PHP微信支付获取回调数据
微信支付获取回调数据 微信回调接口比较麻烦一点就是不方便测试 微信支付回调函数都是使用以下变量获取POST数据: php配置中,必须启用 always_populate_raw_post_data / ...
- 微信支付后“自动”绑定用户手机号与公众号
微信支付后"自动"绑定用户手机号与公众号 说明: 这里的微信支付是指 微信网页支付(h5) 微信支付的内容必定是和手机号码有关联的(当然交易中涉及的其他用户信息也是可以用同样的办法 ...
- 微信回调接口java返回true_java 微信支付异步回调接口
1.微信支付异步回调接口 @SuppressWarnings("static-access") @RequestMapping("callback") @Res ...
- PHP对微信支付v2回调进行验签并将相关数据加入数据库
PS:对于V2版本微信支付的回调需要在线上环境进行,本文中出现的数据库的相关字段,各位请按照个人需求进行修改,此处只对微信回调数据进行相关解析; 代码方面写的比较杂乱,多看注释,相关代码根据个人需求进 ...
- 微信支付退款回调踩坑及解决方案(附解密代码)
文章目录 1. 回调失败问题(沙箱环境) 2. 解决方案 3. 退款回调的解密代码 1. 回调失败问题(沙箱环境) 问题始末: 最近再弄微信退款回调发现设置的回调的url根本就没有被调用,但是微信支付 ...
- 微信支付同时回调多次的解决办法
遇到一个问题,微信支付成功回调,再本地使用ngrok做内网穿透,也不知到是ngrok的问题,还是微信的问题,支付成功回调会执行多次,2分钟内5,6次左右,但是debug只拦截到一次请求,其他的请求会跟 ...
最新文章
- python文本分类评价指标 top1如何计算_使用paddlehub自定义任务,具体是自定义文本分类任务中的评价指标时按照官方文档的方法做了之后报错了,请问应该如何解决?...
- RecyclerView遇到的问题
- 对Lucene PhraseQuery的slop的理解
- 最小,独立,可分发的跨平台Web服务器
- 回文日期(NOIP2016 普及组第二题)
- myeclipse编程技巧--中编辑器输入任何字母都出现提示功能
- ubuntu18设置屏幕旋转_无线电对讲机,常用电台上中继台设置
- DevOps使用教程 华为云(9)代码检查
- 面试题思考:try 代码块中含 return 语句时,代码执行顺序
- Web前端-HTML基础
- 安卓学习日志 Day15 — 数据库基础
- 百度编辑器Ueditor多文本域实现
- Aladdin and the Flying Carpet LightOJ - 1341
- Codeforces Round #572(div2)部分题解(A~C,E)
- PDF Expert for mac(pdf编辑工具)
- 零基础Python爬虫实现(百度贴吧)
- leetcode13——罗马数字转整数(简单,0)
- java从入门到弃坑十五天
- php header 生成pdf,PHP如何生成PDF文档
- jquery.cookie.js 每天首次打开页面时弹出广告
热门文章
- selenium+python3+excel测试框架
- 结队编程与日程管理系统维护改善
- mysql命令行闪退解决办法。
- [itint5]交替字符串
- c++文件操作之读取全部文本文件【zz】
- xxx.lib(xxx.obj)fatal error LNK1103: debugging information corrupt; recompile module 的解决方案
- python字符串注意点
- Linux下启动/关闭Oracle
- vmware16安装centos7超详细说明
- CSS3 blur滤镜实现