C#如何解密微信退款req_info结果通知

C#如何解密微信退款req_info结果通知,这个加密过的,网上找了没C#版本的,最好给源代码啊,不要思路。

0

2个回答

先对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com

)-->账户设置-->API安全-->密钥设置 ),再用用key*对加密串B做AES-256-ECB解密,注意返回的已经是base64解码的字符串,不需要再base解码,要不用AES256解码会报错
源代码看这里:

1
1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
微信退款结果通知之解密
@RestController @RequestMapping("/manage") public class AESUtil { @RequestMapping("/ceshijiemi") public String getjiemi() throws Exception {//此处的a是获得的微信退款通知结果的加密信息 String a = "m4Nnwrt...
微信退款结果通知
先理清思路 一  首先在微信商户平台配置,退款结果通知回调路径,这个和支付结果通知一样。微信返回的消息也是流信息,需要解析。 二 接下来按照微信开发文档进行解析流,得到返回数据 三 根据返回数据进行操作,推送模板消息之类的 下面代码,注意编码格式: //解析微信返回的流 InputStream inStream; inStream = request.getInputStream(
【java】微信退款结果通知解密
整理了一份较为完整的java关于微信退款结果通知解密 (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置 ) (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding) 因为解密为PKCS7...
微信退款结果通知报文AES解密
最近做微信支付涉及到退款,查看官方文档,发现通知报文是加密的,解密方式如下: (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 ) (3)用key*对加密串B做AES解密 这里分别涉及到了BASE64,MD5,AES
最新微信退款通知解密
最新微信退款通知解密 微信退款 AES256 PK7 ECB加密解密
微信退款注意事项及退款通知信息解密
1.商户退款单号 (out_refund_no)必须唯一,如果不唯一微信端返回的错误提示是“支付单号校验不一致”,需要注意。 2.退款解密算法注意操作密钥。在此记录下解密代码。 (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置
微信退款及退款通知结果 java
下面的评论有很多想看我的postSSL的源码,这里奉上 public static String postSSL(String url, String data, String certPath, String certPass) { String DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/5...
微信支付退款通知解密
微信支付退款通知解密 aes256 ecb pk7
最新微信退款结果通知解密(php版)
微信官方给出的退款通知解密方法如下: (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 ) (3)用key*对加密串B做AES-256-ECB解密 以下是自己亲测可用的解密方法 <?php header("cont
Java微信APP支付-退款结果通知
前面已经讲过微信APP支付的统一下单、支付结果通知、申请退款的接口开发,现在我们讲述一下退款结果通知的流程开发。 官方的API地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_16&amp;amp;index=11 1、应用场景 当商户申请的退款有结果后,微信会把相关结果发送给商户,商户需要接收处理,并返回应答。  对后台...
退款结果通知
<p>n 课程目标n</p>n<p>n 让开发者快速学习微信支付功能,本课程基于Java开发工作,通过SpringBoot实现微信支n</p>n<p>n <br /></p>n<p>n 适用人群n</p>n<p>n 针对互联网项目开发者,实现微信支付功能开发n</p>n<p>n <br /></p>n<p>n 课程简介n</p>n<p>n <span style="color:#666666;">从零讲起微信支付,基于Spring Boot框架实现微信网页扫码支付,涵盖整个统一下单、订单查询、退款申请、退款查询、微信回调等接口开发。并从注册微信服务号讲起到Java实现微信扫码支付。</span>n</p>n<p>n <span style="color:#666666;"><span>整个开发环境是基于IntelliJ IDEA开发,通过Spring Boot框架实现微信支付开发</span></span>n</p>
微信退款通知
需要2个jar吧 替换掉 jdk1.8 下的jre 下的 lib -security下 http://download.csdn.net/download/u013802160/10128378 byte[] decode =new BASE64Decoder().decodeBuffer(reqInfo); SecretKeySpec ke
微信退款回调解密
根据u010660575大佬的博客改的,附上了MD5和BASE64工具类
支付API: 退款结果通知
<p>n <span style="font-size:12pt;"><span>帮助学员快速掌握微信支付开发</span>, <span>并提供相关工具及封装类使得学员开发周期从</span><span>2-4</span><span>周的时间缩短至</span><span>2-4</span><span>天</span><span>.</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;"><span>培训目标</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">1.<span>掌握微信支付相关账号开通</span><span>,</span><span>应用场景及流程</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">2.<span>掌握微信支付开发环境的搭建及</span><span>web2py</span><span>使用</span><span>.</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">3.<span>学会相关</span><span>api</span><span>的使用</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">4.</span><span style="font-size:12pt;"><span>跟老师一起</span></span><span style="font-size:12pt;"><span>进行需求分析</span>,接口</span><span style="font-size:12pt;"><span>设计</span></span><span style="font-size:12pt;"><span>完成</span>api</span><span style="font-size:12pt;"><span>封装类</span></span><span style="font-size:12pt;"><span>的开发</span></span><span style="font-size:12pt;">,进一步简化微信支付开发</span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">5.<span>使用课程提供的工具及新设计的</span><span>python</span><span>类</span><span>,</span><span>将开发周期从</span><span>2-4</span><span>周缩短至</span><span>2-4</span><span>天</span></span><span style="font-size:12pt;"></span>n</p>n<p style="text-align:left;">n <span style="font-size:10.5pt;"> </span>n</p>n<p>n <span style="font-size:12pt;"><span>培训内容主要分为</span>5<span>大部分</span><span>: </span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">1.<span>微信支付相关账号开通</span><span>,</span><span>应用场景及支付流程</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">2.<span>开发环境搭建及相关工具介绍</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">3.web<span>框架</span><span>web2py</span><span>的使用</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">4.<span>设计</span><span>WxPay</span><span>类</span><span>, </span><span>封装</span><span>api</span><span>调用</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">5.<span>使用封装类进行微信支付开发</span></span><span style="font-size:12pt;"></span>n</p>n<br />
【微信公众号开发】微信支付-退款通知
退款通知: 就算商户系统没有开通微信退款结果通知,微信也会自己发送消息告诉用户退款流程和结果。如果是立马到账的,会直接发送退款结果通知;非立马到账的,会先发一条“退款发起通知”,到账之后再发一条到账通知。 如果商户系统(在本文中指公众号)开通微信退款结果通知,然后根据退款结果推送消息告知用户的,那么用户就会收到两份退款通知,一份来自公众号,一份来自微信,如下图: ...
微信退款回调AES解密
根据u010660575大佬的博客改的,附上了MD5和BASE64工具类
微信退款AES解密包
AES加密时的 java.security.InvalidKeyException: Illegal key size 异常
PHP微信退款通知解密最新,支持openssl
强调下:是PHP PHP PHP! mcrypt | openssl 二种形式自选,注意开启对应扩展。另外高版本如php7已逐渐废弃mcrypt
微信无密退款-通知接口返回内容解密
    微信退款通知接口说明:  https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_16&amp;amp;index=11重点:       Java本身限制密钥的长度最多128位,而AES256需要的密钥长度是256位,因此需要到Java官网上下载一个java Cryptography Extension (JCE) Unlimite...
微信支付退款通知解密-java版
(1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* (3)用key*对加密串B做AES-256-ECB解密 包含需要替换的jar包,1.6、1.7、1.8
微信支付退款通知接口API AES解密
个人博客原文:http://www.lampnick.com/php/397   微信支付退款通知接口API 含AES解密,github地址:https://github.com/lampnick/wxpay-refund-notify-decrypt-helper 使用方法: 微信退款通知解密,消息回复帮助类 此类实现了微信退款通知消息的解密及回复过程,处理自己的业务逻辑需要实现\li...
微信退款通知ase信息解码
package com.mmall.util; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base...
java版-微信支付退款通知解密-AES-256-ECB解密(PKCS7Padding)
https://blog.csdn.net/u010660575/article/details/76672402 建议参考上面的文档,如果代码还不跑不通,强烈建议下载我的资源包。 请阅读压缩包里面的readMe.txt文档,
PHP7 微信预支付+红包+企业转账到零钱+退款+退款通知内容解密
每次写微信支付新的内容都要找一些文档,有点烦了,就干脆发一波代码好了,懒得用微信的sdk,就是这么懒,看都没看过注意,代码使用laravel框架写的,不影响使用,加入你的namespace,替换成你的Exception,配置好你的微信支付参数,相关的信息改写成你需要的,基本就能直接上手使用了class  WeChatPayServicefunction1 qrCodePay 生成支付二维码2 tr...
asp.net C# 微信小程序退款通知代码的坑
设置完回调后 req_info解密代码C#官方没提供! string req_info = DecodeReqInfo(notifyData.GetValue(“req_info”).ToString()); if (req_info == null) { res.SetValue(“return_code”, “FAIL”); res.SetValue(“return_msg”, “解密信息出错...
微信支付退款成功回调结果的解密
微信退款成功后,会向用户指定的地址发送一个请求,参数是微信退款的状态,成功,失败都有回复,但是数据是加密的 网上的很多说解密的,但是那些解密的函数已数被php弃用了 //可逆加密 function encrypt($data, $key) { $prep_code = serialize($data); $block = mcrypt_get_block_size('des'...
微信退款报文AES解密参考代码
当商户申请的退款有结果后,微信会把相关结果发送给商户,商户需要接收处理,并返回应答。退款结果对重要的数据进行了加密,商户需要用商户秘钥进行解密后才能获得结果通知的内容。退款报文解密参考代码
微信退款回调AES解密--JDK8版本
微信支付退款回调接口,需要对req_info字段进行解密,其中需要用到AES-256进行加解密,这是修改本地jdk/jre文件的两个jar包,因为我是jdk8,所以此处是jdk8版本的,敬请下载,相关博文可以点击我博客名进行查询
微信退款加密字段AES解密
微信退款加密数据解密工具代码,真的没搞懂微信怎么想的,微信退款,公众号消息,小程序,微信支付的加密解密方式全都不一样,每一个都要单独调试,简直要死人,那我就调试好一个就传一个上来
微信退款回调信息解密笔记
微信退款回调信息解密过程记录,方便自己查看 解密步骤:  (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)--&amp;gt;账户设置--&amp;gt;API安全--&amp;gt;密钥设置 ) (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding)   ...
微信退款
[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/8.gif][/img]rn在WeChatFragment 类中点击退款rncase R.id.button:rn wechatRefundUtils = new WechatRefundUtils(mContext);rn new Thread()rn @Overridern public void run() rn try rn wechatRefundUtils.refundMoney(1);rn catch (Exception e) rn e.printStackTrace();rn rn super.run();rn rn .start(); rn break;rnrnrnrn在下面这个类里面具体执行退款操作:rnpackage com.zng.cashier.utils;rnrnimport java.io.File;rnimport java.io.FileInputStream;rnimport java.security.KeyStore;rnimport java.util.LinkedList;rnimport java.util.List;rnimport java.util.Map;rnrnimport javax.net.ssl.SSLContext;rnrnimport org.apache.http.HttpResponse;rnimport org.apache.http.HttpStatus;rnimport org.apache.http.NameValuePair;rnimport org.apache.http.client.methods.HttpPost;rnimport org.apache.http.conn.ssl.SSLConnectionSocketFactory;rnimport org.apache.http.entity.StringEntity;rnimport org.apache.http.impl.client.CloseableHttpClient;rnimport org.apache.http.impl.client.HttpClients;rnimport org.apache.http.message.BasicNameValuePair;rnimport org.apache.http.ssl.SSLContexts;rnimport org.apache.http.util.EntityUtils;rnrnimport android.content.Context;rnimport android.util.Log;rnrnrnrn/**rn * 退款工具类rn * @author zqhrn *rn */rnpublic class WechatRefundUtils rn private int mTotalFee;rn private Context mContext;rn private KeyStore keyStore;rn private FileInputStream instream;rn public WechatRefundUtils(Context context) rn mContext = context;rn rn rn public Map refundMoney(int totalFee) throws Exceptionrn rn mTotalFee = totalFee;rn String url = String.format(WeChatUrl.REFUND_URL);rn String entity = genProductArgs();//设置请求的参数 为 XML形式rn rn byte[] buf = httpPost(url, entity);//请求返回的数据转换为 byte数组rn rn String content = new String(buf);//将byte数组 数据转换为字符串 rn rn Map xml = WeChatutils.decodeXml(content);//将字符串转换为Map key=value集合的形式 rn rn Log.e("退款请求返回的数据key=value;result : ", xml+"");rn rn return xml;rn rn rn rn rn rn @SuppressWarnings("deprecation")rn public byte[] httpPost(String url, String entity) throws Exception rnrn if (url == null || url.length() == 0) rn // Log.e(TAG, "httpPost, url is null");rn return null;rn rn //HttpClient httpClient = getNewHttpClient(); rn //指定读取证书格式为PKCS12rn KeyStore keyStore = KeyStore.getInstance("PKCS12"); rn //读取本机存放的PKCS12证书文件rn Log.e("存储路径", mContext.getFilesDir().getAbsolutePath()+"/apiclient_cert.p12");rn FileInputStream instream = new FileInputStream(new File("mnt/sdcard/cert/apiclient_cert.p12")); rn try rn //指定PKCS12的密码(商户ID)rn keyStore.load(instream, "111111111".toCharArray());rn finally rn instream.close();rn rn SSLContext sslcontext = SSLContexts.custom()rn .loadKeyMaterial(keyStore, "11111111".toCharArray()).build(); rn //指定TLS版本rn SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(rn sslcontext,new String[] "TLSv1" ,null,SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);rn //设置httpclient的SSLSocketFactoryrn CloseableHttpClient httpclient = HttpClients.custom()rn .setSSLSocketFactory(sslsf).build();rn rn rn rn rn rn rn rn rn rn rn rn HttpPost httpPost = new HttpPost(url);rn rn try rn httpPost.setEntity(new StringEntity(entity));rn httpPost.setHeader("Accept", "application/json");rn httpPost.setHeader("Content-type", "application/json");rn rn HttpResponse resp = httpclient.execute(httpPost);rn if (resp.getStatusLine().getStatusCode() != HttpStatus.SC_OK) rn Log.e("TAG", "httpGet fail, status code = " + resp.getStatusLine().getStatusCode());rn return null;rn rn rn return EntityUtils.toByteArray(resp.getEntity());rn catch (Exception e) rn Log.e("TAG", "httpPost exception, e = " + e.getMessage());rn e.printStackTrace();rn return null;rn rn rn rn rn rn //拼接要发送的请求参数 其中还要获得签名信息rn private String genProductArgs() rn StringBuffer xml = new StringBuffer();rn try rn String nonceStr = WeChatutils.genNonceStr();//获取随机字符串 rn xml.append("");rn List packageParams = new LinkedList();rn rn /*String outTradeNo = RandomUtil.getOutTradeNo();rn rn SharePreUtil.putString(mContext, "outTradeNo", outTradeNo);*/rn rn packageParams.add(new BasicNameValuePair("appid", Contacts.APP_ID));//appidrn packageParams.add(new BasicNameValuePair("mch_id", Contacts.MCH_ID));//商户号rn packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));//随机数 rn packageParams.add(new BasicNameValuePair("op_user_id", "11111111"));//操作员rn packageParams.add(new BasicNameValuePair("out_trade_no","2015122210502200276904538"));//商户 后台的贸易单号 rn packageParams.add(new BasicNameValuePair("out_refund_no","201512221050220027690453"+"1"));//商户退款单号 rn packageParams.add(new BasicNameValuePair("refund_fee", mTotalFee+""));//退款金额必须为整数 单位为分rn packageParams.add(new BasicNameValuePair("total_fee", mTotalFee+""));//总金额必须为整数 单位为分rn rn String sign = WeChatutils.genPackageSign(packageParams);//生成签名rn packageParams.add(new BasicNameValuePair("sign", sign));//根据微信签名规则,生成签名rnrn String xmlstring = WeChatutils.toXml(packageParams);rn Log.e("xmlstring = ", xmlstring);rn return xmlstring;rnrn catch (Exception e) rn Log.e("TAG", "genProductArgs fail, ex = " + e.getMessage());rn return null;rn rnrn rnrnrnrn但是运行过之后 就会出现rn12-24 11:19:43.030: D/dalvikvm(28432): DexOpt: couldn't find static field Lorg/apache/http/conn/ssl/StrictHostnameVerifier;.INSTANCErn12-24 11:19:43.030: I/dalvikvm(28432): DexOpt: unable to optimize static field ref 0x1121 at 0x08 in Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;.rn12-24 11:19:43.030: W/dalvikvm(28432): Exception Ljava/lang/NoSuchFieldError; thrown while initializing Lorg/apache/http/conn/ssl/SSLConnectionSocketFactory;rn12-24 11:19:43.030: W/dalvikvm(28432): threadid=13: thread exiting with uncaught exception (group=0x40a6b1f8)rn12-24 11:19:43.030: W/System.err(28432): java.lang.ExceptionInInitializerErrorrn12-24 11:19:43.030: W/System.err(28432): at com.zng.cashier.utils.WechatRefundUtils.httpPost(WechatRefundUtils.java:94)rn12-24 11:19:43.030: W/System.err(28432): at com.zng.cashier.utils.WechatRefundUtils.refundMoney(WechatRefundUtils.java:52)rn12-24 11:19:43.030: W/System.err(28432): at com.zng.cashier.fragment.WeChatFragment$4.run(WeChatFragment.java:435)rn12-24 11:19:43.030: W/System.err(28432): Caused by: java.lang.NoSuchFieldError: org.apache.http.conn.ssl.AllowAllHostnameVerifier.INSTANCErn12-24 11:19:43.030: W/System.err(28432): at org.apache.http.conn.ssl.SSLConnectionSocketFactory.(SSLConnectionSocketFactory.java:144)rn12-24 11:19:43.030: W/System.err(28432): ... 3 morern错误,哪个大神能解决一下
微信公众号退款通知(Java)
官方给出的开发文档解密步骤如下:  (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 ) (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding) 准备工作:   1.
微信api退款及退款查询
相比支付宝的接口,微信的接口与实现都很简单其实,官方文档都有很详细的讲解。 官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 步骤: 1.下载 安全证书!!【关键】 2.按官方文档组织参数,生成URL 3.CURL等同步访问URL,获取XML返回值(支付宝同步返回的是受理结果,异步才返回
微信支付-----申请退款和退款通知接收
    这一篇博客跟着我上一篇博客的思路和流程继续,如果想看上一篇博客的童鞋,可以点击微信支付----统一下单接口对接进行阅读,本篇博客将介绍申请退款和退款通知两个接口的开发。 一,申请退款接口  注意点: ​​​此处需要使用证书,Java版本的话只需要导入apiclient_cert.p12格式的证书即可,其他版本请参考微信官方文档 必须要当天先做交易才能退款,我的理解是每天微信都会...
delphi如何使用微信退款
openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem  这个命令不变 openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem  这个需要改一下,不然每次输出key文件的时候,总是要输入一个 密码,烦死了
微信支付退款通知解密-java-亲测可用版
微信支付退款通知解密-java-亲测可用版 (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* (3)用key*对加密串B做AES-256-ECB解密 包含需要替换的jar包,1.6、1.7、1.8
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合