以上为微信官方的文档,想要实现微信退款通知处理业务,使用的thinkphp3.2

通过对上述完成

使用php 无论如何对都req_info 无法解密

求大神指导 ,或提供一个dmeo

const CIPHER = MCRYPT_RIJNDAEL_256;

const MCRYPT_MODE = MCRYPT_MODE_ECB;

$tools = new \WxPayNotify();

$xml = $GLOBALS['HTTP_RAW_POST_DATA'];//获取xml回调数据

$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);//转换xml数据为数组

// $data = json_decode('{"return_code":"SUCCESS","appid":"wxa88a657b659971cd","mch_id":"1290531301","nonce_str":"c88807107134237f13d7d6e6cdd1b3a1","req_info":"ujyWCvgLmXzJdHIrf1ltoHtIJX5u\/EBepMYNSXPp9ZsgieGhhdXMtfXF8eL82Gbk1fb4cjk2tFX0GNkKRilfcglxDQVEVqYhMGIIyqTfEYs+So\/V\/EYSvYCOM9TjlzJ4sXzqLOwTh4PaPRAYRN9RFy1w3uN7pmYiDC7mhB2WrhTvTJl5j22u+Ywpb9xk96vMDxo62nlJl7XohdYIPY2TPbYOQp0sfeMCeWoKilUGjJcadjcSiF2LUfrjOdW+AD3Ow6axOFbjpwV\/rheoUzt1REN1jZWD23bwmVrwvz4ZVoBKcUG7F\/9MU8LdI7HDuk2EzICr8R6Uj4rpN8zvm4RHb853bJ6W1Vctvphy5N66q\/DFKu0Xl\/z+Kxn38LEzANomFuV2XF8vdZumWnqVVVUmyQkSXmXSj2lyONkK9jUQgQBsDHa1Gq6e3g54gDqgQdmEYIk5FmSU\/xn\/1pPZB3\/jOG6qXm03VEmD6sw8jSnAypl0vBDJfH7If5bQXihYDmFoipTzhaWOQJO6UTmj1gk\/nAq3BlBz4KuOIFWM7PsyGjzlf+SpCbIlzEje+uYKcrqVRr8qpZSCtRlS59crk3LrHiNfPGImthhHIZO+l9zbmf5LQnQKqCvvwxy7M8Izu\/iVyXjeNz0pN+6oeZ\/VCYAGGCmhSVkT3Pau8ta3xZGUMqduPMTCEp+IkU46a02m2FWArK9vXKoZpehyvCpCSlyrSy6zxUJYQ\/mE8bIuHAJBS7oN9lvltw4\/mRsFSjJ1v0H5F7IU4vZJ7O+wnpnxTmmUa5ziaLEZ\/YQe5AGo78\/ozg8I5toEJzXV3n5bVrNjgSb5b7Y3yaKTXibylfaeV98OzRz09DqJRqUdRWoO2BLU3KtA+1loEQkEoh5pKAEBcmXII4w5CN7Y7A9aP2qXt6Bf\/atP5eJBvspKTZk4aWsfnSbXey961bO6zVA9Ge08965gCObaBCc11d5+W1azY4Em+VaUiNnQCKRVQ9XDZcR96AQ2gnLDZtUg+pqCt2x+pfaOl+4vCVDeWhUkjbfl48UtEwUPCxHlm7Ip69wxYSXFT1hMTSO6OnzGXMH9Q\/6VbNhN7k6KYqB\/W3cMuAFEOthqX4XkmzustCzymRiNslCmuDo="}',true);

// $data = $tools->handle($array_data);

$wxpay = C('payment.wxpay');

//指定初始化向量iv的大小:

$encryptData = base64_decode($array_data['req_info']);

$decryptedData = $this->_decryptAesData($encryptData);

/**

* decrypt data

* @param string $encryptData

* @param string $md5LowerKey

* @return array

*/

private function _decryptAesData( $encryptData, $md5LowerKey = '')

{

if (empty($md5LowerKey)) {

$wxpay = C('payment.wxpay');

$md5LowerKey = strtolower(md5($wxpay['APPID']));

}

// var_dump($wxpay);

$iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER, self::MCRYPT_MODE), MCRYPT_RAND);

$decrypted = mcrypt_decrypt(self::CIPHER, $md5LowerKey, $encryptData, self::MCRYPT_MODE, $iv);

return $this->xml2array($decrypted);

}

/**

* reply to wechat

* @param $xml

*/

public function replyNotify($xml)

{

if (is_array($xml)) {

$xml = $this->toXml($xml);

}

echo $xml;

}

/**

* @param string $xml

* @return array

* @throws \Exception

*/

public function xml2array( $xml)

{

if (empty($xml)) {

throw new \Exception('Error xml data!');

}

$p = xml_parser_create();

xml_parse_into_struct($p, $xml, $values, $index);

xml_parser_free($p);

$result = [];

foreach ($values as $val) {

$result[strtolower($val['tag'])] = $val['value'];

}

return $result;

}

php微信退款回调通知,微信退款异步回调通知相关推荐

  1. php paypal ipn回调,Paypal IPN / Webhook 异步回调流程是怎样的?

    里面提到的内容跟我遇到的差不多,我使用的是 Omnipay Paypal 包. 我之前直以为只要用户在 paypal 端完成支付,无论是否跳转回网站执行同步回调,IPN / Webhook 异步回调都 ...

  2. paypal异步回调超时或无法请求到我们的服务器解决方案

    业务场景 由于我司最近接入海外业务,支付使用了paypal支付,在线上跑一段时间后频频的收到用户反馈购买商品时用户已经支付了,系统却提示用户未购买成功.这导致用户体验相当的差,也影响到了业务正常运作. ...

  3. 转:在 .NET 中实现异步回调访问数据库

    在 .NET 中实现异步回调访问数据库 时间:2009-11-17 19:52来源:网络收集 作者:佚名 点击: 334 次 技术论坛 某些场合下,在对数据库进行访问时,为了避免同步访问数据时所带来的 ...

  4. android 异步回调中操作UI线程,UI同步、卡死阻塞等性能问题

    android开发中,回调无处不在,整个android开发的框架就是以回调机制建立起来的.如:activity,service,broadcast,fragment,view事件监听,baseadap ...

  5. java异步多线程 判断线程状态_java多线程和异步回调

    在实际开发过程中遇到的多线程情况不多,但是在生产环境中多线程是最基本的情况,java面试时也会考到,所以看看多线程的知识还是很有必要的. Thread,Runnable,Callable,Future ...

  6. 并发编程之进程池,线程池 和 异步回调,协程

    1.进程池和线程池 2.异步回调 3.协程 4.基于TCP使用多线程实现高并发 一.进程池和线程池 什么是进程池和线程池: ''' 池 Pool 指的是一个容器 线程池就是用来存储线程对象的 容器创建 ...

  7. js同步异步 回调函数

    学js这么久 只知道它是一个单线程的语言,同步异步听了这么多从未深思过. 在写ajax请求时再一次看见回调函数,想到在网上去查查详细的知识,没想到查出一大堆讲同步异步的,看了不少人的文章,这才感觉自己 ...

  8. Java 微信支付接口(统一下单,异步回调,订单退款,取消订单)

    一.准备工作 APP绑定微信商户平台获取商户id(mchID).证书(商户后台下载).支付签名密钥(商户后台设置api密钥).退款签名密钥(商户后台设置api密钥ipv3)等 1.导入微信支付SDK ...

  9. 回调函数,回调函数,回调函数,什么是回调函数

    文章 目录 简介 一.回调函数是什么? 二.回调的demo 1.异步回调 2.安卓中的回调onclick 简介 问题引入: 在一个下载系统中,我要实现文件的下载和下载进度的显示.学习过面向对象的人来说 ...

  10. c# .net core 微信、支付宝H5支付链接获取,支付回调方法,退款方法小计

    支付链接获取 //隐藏代码:获取一个订单model实体,并判断此订单是否发起过支付链接吊起,如发起过且链接没过期,则直接返回支付链接(仅限微信)if (//隐藏代码:判断是否为待付款){switch ...

最新文章

  1. 0x14.基础数据结构 — hash表与字符串hash
  2. JBPM4.4_jBPM4.4应用(与Spring集成自行控制事务等)
  3. 治标不治本:POI Ptg错误的解决方法
  4. 《好未来编程题》 输入n个整数,输出出现次数大于等于数组长度一半的数
  5. 吴恩达获英特尔投资!这次,英特尔拿出7.85亿砸向AI创业公司
  6. DEDECMS安装遇到NO input files specified解决方案
  7. 2013年计算机试题(四),2013年计算机一级考试试题(精简版):第四套
  8. OpenCasCade开发环境搭建
  9. 混响消除插件-Acon Digital DeVerberate 2 v2.1.2 WiN-MAC
  10. linux 小度wifi,树莓派2小度wifi(MT7601U)驱动
  11. EVEREST的使用教程
  12. mysql数据的查寻练习
  13. SDN,虚拟化,TSN,协议概述。
  14. 盘点Hadoop生态圈:13个让大象飞起来的开源工具
  15. 高通UEFI研究[三]
  16. 唯品会(VIP)按关键词搜索 API
  17. Python编写一个程序来计算 BMI 值。
  18. 安卓应用开发小程序!字节跳动+京东+360+网易面试题整理,聪明人已经收藏了!
  19. 差分走线_HFSS学习笔记(2)
  20. LIN 总线数据采集助手 Python

热门文章

  1. JQuery 02 转换图片
  2. c语言的数学题目及答案,C语言编程实例:爱因斯坦的数学题
  3. 01_ue4进阶末日生存游戏开发[基础概念]
  4. 欧莱雅中国管理培训生项目今年计划在中国招募300余位
  5. 程序员选择创业必须掌握的技术
  6. java web是前端吗_Java Web 是前端还是后端?
  7. iOS drawRect绘制圆形/圆环/饼图
  8. 射频安全-记一次无线钥匙射频信号分析(未果)
  9. BETA函数的简单证明
  10. 硬盘mdr转换成gdp linux,外行给老爷机装linux系统始末