微信商户号转账到个人银行卡加密算法及结果查询问题

最近客户平台做的越来越大了,之前给代理商的分红都是提现到微信零钱的,由于数额比较大了,于是他们就想直接把钱提现到银行卡里,翻阅了一遍“微信”的官方文档,一如既往地各种烦躁,心里那个万马奔腾呀,无奈还得用人家呀,只能求助万能的的“度娘”了,有价值的文章毕竟是寥寥无几,不管怎样,最终还是把功能实现了,万幸!!!!!!!

此文仅作记录,以备查用

首当其冲的是参数的加密算法:

虽然这里有获取公钥的文档,但是相信还是有很多人跟我一样,看了文档也不知所措的。不废话了,下面上干货:

这里第一步先 发送http请求获取公钥文本,注意这里发送的请求必须携带商户号证书才可以

String nonce_str = WeixinUtil.genNonceStr();
Map<String, String> packageParams = new HashMap<>();
packageParams.put("mch_id", WXConfig.sub_mch_id);
packageParams.put("nonce_str",nonce_str);
packageParams.put("sign_type", "MD5");
String prestr = PayUtils.createLinkString(packageParams);
String sign = PayUtils.sign(prestr, WXConfig.sub_mch_key, "utf-8").toUpperCase();
String xml="<xml>"+
                "<mch_id>"+WXConfig.sub_mch_id+"</mch_id>"+
                "<nonce_str>"+nonce_str+"</nonce_str>"+
                "<sign>"+sign+"</sign>"+
                "<sign_type>"+"MD5"+"</sign_type>"+
                "</xml>";
String result= HttpUtil.sendPostWidthCert("https://fraud.mch.weixin.qq.com/risk/getpublickey", xml,WXConfig.sub_mch_id);
Map<String, String> resultData = WeixinUtil.doXMLParse(result);
if(resultData.get("result_code").equals("SUCCESS")){
   System.out.println(resultData.get("pub_key"));
}else{
   System.out.println("获取微信证书失败:"+resultData.get("return_msg"));
}

代码里的工具类文章结尾的源码里都有。

执行上面代码后,获取到了公钥文本为PKCS#1格式(如下图所示),全选复制后,以此文本内容创建一个名叫publicKey.pem的文本文件

然后在命令行里执行命令:

openssl rsa -RSAPublicKey_in -in publicKey.pem -pubout

 

执行完上面的命令后,就会得到PKCS#8版本的公钥了,Java只能使用PKCS#8版本的公钥,如果您的系统没有安装openssl,请自行安装,这里不做赘述

最后把上面红色框里的内容复制并创建一个 pksc8_public.pem的文本文件即可,这个就是我们加密时需要用到的公钥文件了,不得不说微信这里实在太绕了,直接个PKCS#8版本的文件下载接口不就完事了?

然后就是第二个坑了,提现请求完了以后,怎么查询提现结果呢?找了N遍都没找到查询接口在哪里?跟我躲猫猫呢?最后在一位博主的博客里看到了,那位博主用的是php语言。

提现到银行卡的结果查询接口是:

https://api.mch.weixin.qq.com/mmpaysptrans/query_bank

最后,我整理了一份demo,里面包含了提现到微信零钱,提现到银行卡;以及两种提现方式的结果查询功能,创作不易,收点小小费用,介意的请绕行,实在经济困难的也可私信我要

资源链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都搞点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值