关于php 调用接口 微信云支付 HmacSha256 加密 request_content

关于php 调用接口 微信云支付 HmacSha256 加密 request_content 生成 authen_code

关于php 调用接口 微信云支付 authen_code 生成 HmacSha256 加密 request_content

因为官方没有给php 的demo , php官方给出的代码

//Message 要加密的字符串内容 secret 加密的key

$s = hash_hmac('sha256', 'Message', 'secret', true);

echo base64_encode($s);

$data = [

"out_sub_mch_id"=>"sz011sUX5s7xxxxxxxxx",//商户门店xx

"order_type"=>1,

"start_time"=>1595211255,

"end_time"=>1600049655,

"nonce_str" => 'fewfdsafaaaafeefwf'.rand(10000,99999)

];

dump($data);

$mech_id = '151*****';//你的商户号

# secret 我的密钥

$isdir = root_path().'extend/weixin/cert/'.$mech_id."/";

$filename = $isdir.'authcode.key';

$fh = fopen($filename, "r");

$str = fread($fh,filesize($filename));

$key = str_replace("\r\n","
",$str);//获取到我的密钥

$jsonstr = json_encode($data);

print_r($jsonstr);

$repos['request_content'] = $jsonstr;

$code = hash_hmac('sha256',$jsonstr,$key,true);

dump($code);

$code1 = base64_encode($code);

$urlcode1= urlencode($code);

dump($code1);

dump($urlcode1);

打印结果为

^ array:5 [▼

"out_sub_mch_id" => "sz011sUX5s7xxxxxxxxx"

"order_type" => 1

"start_time" => 1595211255

"end_time" => 1600049655

"nonce_str" => "fewfdsafaaaafeefwf78837"

]

{"out_sub_mch_id":"sz011sUX5s7xxxxxxxxx","order_type":1,"start_time":1595211255,"end_time":1600049655,"nonce_str":"fewfdsafaaaafeefwf78837"}

^ b"\x1A-õ;]-Z??£ù¶$?\x18­\x03÷£æKz?lH,¯?wzâ&"

^ "Gi31O10tWpuIo/m2JJUYrQP3o+ZLej9sSCyvjHd64iY="

^ "%1A-%F5%3B%5D-Z%9B%88%A3%F9%B6%24%95%18%AD%03%F7%A3%E6Kz%3FlH%2C%AF%8Cwz%E2%26"

ok ,乱码 ,一看这肯定不对的 ,身边又没有java,官方给了java的jdk,C的示例,我又用不了。

想出了办法,百度 在线加密,将字符串 key 复制进去 得出的结果

3218d546714f18888f5ff20063cdd0f66d40d34996cda264276d0f62ce1bf9bb

一看这个结果跟我的差了不知道多少,网上各种百度php sha256 加密的,试了个遍

public static function generateSHASign($signpl,$secert){

$signature = self::base64UrlEncode(hash_hmac('sha256',$signpl,$secert,true));

return $signature;

}

public static function base64UrlEncode($str){

return rtrim(strtr(base64_encode($str),'+/','-_'),'=');

}

public static function base64url_decode($data)

{

return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));

}

public static function base64url_encode($data)

{

return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');

}

没有效果 ,得出的结果都不是我们想要的,还好,至少不是乱码了,离结果不远了.

最后找到一个方法打印结果 ,奇迹发生了, 结果一样的

$code = bin2hex(hash_hmac('sha256',$str,$key,true))

微信云支付接口调用说明里面 authen_code 全部为大写

最后修改的方法为

public static function upper_bin2hex_hash_hmac($str,$key){

return strtoupper(bin2hex(hash_hmac('sha256',$str,$key,true)));

}

成功!

最后修改后的代码

$isdir = root_path().'extend/weixin/cert/'.$mech_id."/";

$filename = $isdir.'authcode.key';

$fh = fopen($filename, "r");

$str = fread($fh,filesize($filename));

$key = str_replace("\r\n","
",$str);

$jsonstr = json_encode($data);

$repos['request_content'] = $jsonstr;

$bin2hex1 =self::upper_bin2hex_hash_hmac($jsonstr,$key);

$auth_info = [

"a"=> [

"authen_type"=>1, "authen_code"=>$bin2hex1

]

];

$repos['authen_info'] = $auth_info;

$repos = json_encode($repos,true);

$url = 'https://pay.qcloud.com/cpay/query_order_list_overview';

$res = $this->http_post_json($url,$repos);

$res = json_decode($res->response_content);

关于php 调用接口 微信云支付 HmacSha256 加密 request_content相关教程

微信提现php 该怎么加密,关于php 调用接口 微信云支付 HmacSha256 加密 request_content...相关推荐

  1. 微信小程序之登录跳转及调用接口获取信息

    最近学习微信小程序,新学了网页跳转及获取个人信息 网页跳转需要  wx.switchTab方法 获取信息的话,首先调用接口,然后取出数据就可以了. 首先创建两个html文件,代码如下 <view ...

  2. 微信小程序发布后,真机调用接口失败:ERR_CERT_AUTHORITY_INVALID

    前言 微信小程序基础库:2.12.0 现象 真机调试出现错误:ERR_CERT_AUTHORITY_INVALID,模拟器调试无错误. 小程序上线后,部分机型能够正常使用,另一部分机型不能正常使用. ...

  3. 微信公众号开发(一)服务器及接口的配置

    微信公众号开发(一)服务器及接口的配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比 ...

  4. php实现微信清粉功能,PHP实现微信提现功能

    PHP实现微信提现功能 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  PHP实现微信提现功能.txt ] (友情提示:右键点上行txt文档名->目标另存为 ...

  5. php实现金币提现,PHP实现微信提现功能

    本文实例为大家分享了PHP实现微信提现功能的具体代码,供大家参考,具体内容如下 一.实现功能 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官 ...

  6. 拼团功能实现 php_PHP实现微信提现功能

    提现必须得用双向证书.所以大家一定要在微信的商户平台找到相应的地方去设置.因为做这个提现已经有一段时间了.所以设置微信商户平台的那几个地方没有图的情况.也说不清楚.下次再做提现的时候.给大家分享如何设 ...

  7. php微信绑定银行卡_PHP实现微信提现功能

    本文实例为大家分享了PHP实现微信提现功能的具体代码,供大家参考,具体内容如下 一.实现功能 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官 ...

  8. 微信提现(V2版本)

    注意事项: 1.v2版本提现需要用到证书(证书的密码就是你的mchid) 2.发送请求的时候需要setSSLSocketFactory 1.组装好提现需要的参数 Map<String,Objec ...

  9. 【微信】微信提现到零钱

    微信提现到零钱代码,可直接运行,代码如下: import java.io.File; import java.io.FileInputStream; import java.security.KeyS ...

  10. 微信企业付款到零钱(微信提现)

    由于项目中要用到微信提现,参考网上代码和官方文档写了提现的工具类 用到的相关类库 dom4j commons-lang3 httpclient-4.4.1 具体相关流程可以看微信企业付款到零钱的开发文 ...

最新文章

  1. iPhone App开发实战手册学习笔记(5)之IOS常用机制
  2. swift的可选值(optional)
  3. 【数据竞赛】5行代码检测分布不一致,代码少效果好!
  4. Windows Socket和Linux Socket编程的区别
  5. PHP获取QQ等级,php仿QQ等级太阳显示函数
  6. 使用php自动将文章标题或内容进行分词,添加和删除标签功能实例!
  7. 解决ERROR 1396 (HY000): Operation ALTER USER failed for root@localhost
  8. 微信小程序代码组成 小程序涉及到的文件类型
  9. 动画(animation)
  10. 盒子box在网页中居中的方法
  11. 账号权限问题导致数据泄露频发,如何破解“万豪们”的安全难题?
  12. 个体工商户营业执照在网上如何年检?
  13. php获得当前时间差,PHP获取当前时间差8小时的问题
  14. js 动态给style标签内添加样式
  15. Rest-assured + testNG1
  16. 王半仙儿的日记-0011——就这样做,一路做下去
  17. 《企业管理概论》在线平时作业2
  18. .Bank文件音效提取
  19. Mann-Whitney非参数多组比较R计算方法
  20. 微信数据库最新的解密方式,C++代码解密微信数据库信息!

热门文章

  1. Redis安装(Windows环境下Redis安装)
  2. 封装设计 SLC、MLC和TLC
  3. 使用pyautogui自动刷微信表情
  4. 小程序电子名片 制作
  5. javah 找不到类文件的解决办法
  6. R语言-批量转换变量类型为因子型
  7. 保研夏令营、考研复试个人升学简历模板与制作注意事项
  8. html5手机静态页面,html手机端WEB纯静态页面
  9. GD32F103移植FreeRTOS
  10. 斯坦福NLP名课带学详解 | CS224n 第6讲 - 循环神经网络与语言模型(NLP通关指南·完结)