签名生成方法

// 解析url
$url_parts = parse_url($url);
$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));
// 获取时间戳
$timestamp = time();
// 获取随机字符串
$nonce = $this->randomString(32);
// 拼接签名字段
$message = $method . "\n" .
$canonical_url . "\n" .
$timestamp . "\n" .
$nonce . "\n" .
$data . "\n";// 获取私钥文件
$mch_private_key = file_get_contents('path');
// 生成签名
openssl_sign($message, $raw_sign, $mch_private_key, 'sha256WithRSAEncryption');
$sign = base64_encode($raw_sign);$token = sprintf(
'WECHATPAY2-SHA256-RSA2048 mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"',
$merchantId, //商户ID
$nonce,
$timestamp,
$merchantSerialNumber, //商户证书序列号
$sign
);// 设置响应头
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-Type: application/json',
'User-Agent: /',
'Authorization: ' . $token,
));

生成随机字符串的方法

// 生成随机字符串
private function randomString($len = 32)
{$string = '';$char = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';for ($i = 0; $i < $len; $i++) {$string .= $char[mt_rand(0, strlen($char) - 1)];}return $string;
}

新增

v3接口要求的RFC3339格式时间可以通过PHP的 DATE_RFC3339 常量生成

date(DATE_RFC3339, 'time')

PHP 微信支付v3签名生成相关推荐

  1. 微信支付v3 签名与验签

    微信支付v3 新需求为了在网页上进行Native支付,在开发过程中走了很多弯路,网上的代码很多运行无法正常加解密,经过几天的读文档,百度,终于调通. 微信文档详见微信支付开发文档 签名 HTTP请求方 ...

  2. springboot利用官方SDK(wechatpay-apache-httpclient)接入微信支付V3

    利用微信官方提供的SDK wechatpay-apache-httpclient 实现.以微信小程序支付为例,其他支付也是一样的,就是参数和接口地址不同. 微信支付V3文档 首先要在微信商户平台设置好 ...

  3. 微信支付v3版本对接记录

    微信支付v3版本对接记录 1.申请公众号和商户号 2.配置商户API_V3_key和商户证书 3.导入依赖 4.构建调用接口httpclient 5.调用jsapi下单示例 6.签名解释 7.回调示例 ...

  4. 微信支付V3版本的 签名生成,验签,解密,统一下单的简单封装

    微信支付 V3版本的 签名生成,验签,解密,统一下单的简单封装 V3Base 获取平台证书 回调报文解密 统一下单 暂时看了文档只完成了这部分,感觉封装的不是特别完美,希望有大佬指点一下,想着封装好一 ...

  5. 微信支付V3 生成平台证书

    微信支付V3里必须有平台证书文件,才能唤起唤醒支付 平台证书生成前提需要提前下载好设置apikey3后下载的证书3个证书文件 apiclient_key.pem apiclient_cert.pem ...

  6. java微信支付验证签名_Java中的微信支付(3):API V3对微信服务器响应进行签名验证...

    1. 前言 牢记一句话:公钥加密,私钥解密:私钥加签,公钥验签. 微信支付V3版本前两篇分别讲了如何对请求做签名和如何获取并刷新微信平台公钥,本篇将继续展开如何对微信支付响应结果的验签. 2. 为什么 ...

  7. 微信支付V3 微信小程序签名失败问题

    微信支付的V3版本使用的是RSA加密,从前的V2版本使用的是MD5加密.今天在调试微信小程序的时候,始终无法调起微信支付,提示"支付签名验证失败" 问题排查思路: 1. 先调起其它 ...

  8. 微信支付V3版 java

    微信支付V3版 1.引入依赖 2.创建时间工具类 DateTimeZoneUtil.class 3.解密工具类 AesUtil.class 4.对外暴露方法 公共参数 4-1.支付下单 V3PayGe ...

  9. SpringBoot集成微信支付V3

    河南循中网络科技有限公司 - 精心创作,详细分解,按照步骤,均可成功! 文章目录 吐槽! 此文章包含实现了哪些接口? 学习资料 集成微信支付V3 什么是"商户证书"?什么是&quo ...

最新文章

  1. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...
  2. shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令
  3. Git/码云上多人协作,创建分支,上传修改
  4. 永不丢失照片:防弹照片备份的完整指南
  5. 头同尾合十的算法_乘法速算之首同尾合十
  6. 配置 CentOS 7 的网络,及重命名网卡名
  7. 硬盘写保护软件_三星T7 Touch 1TB移动固态硬盘评测:新奇又安全的加密方式普及?...
  8. 程序员讨论《黑客帝国》(一)真实与虚拟
  9. The error may exist in /com/bjpowernode/dao/StudentDao.xml ### Cause: org.apache.ibatis.builder.Buil
  10. [深度学习] (sklearn)多层感知机对葡萄酒的分类
  11. 这四个原因会导致域名解析错误
  12. java界面添加mid音乐,使用jfugue来演奏mid音乐
  13. EasyExcel:读取Excel数据到List集合中
  14. 搜狗输入法怎么输入上下标
  15. 如何让你的无线网络速度飞快
  16. 数据代码分享|Python用NLP自然语言处理LSTM神经网络Twitter推特灾难文本数据、词云可视化与SVM,KNN,多层感知器,朴素贝叶斯,随机森林,GBDT对比
  17. 秒,毫秒,微秒,纳秒,皮秒,飞秒
  18. HTML+CSS:设计一个网站登录页面 学起来很简单
  19. 利用爬虫和Tkinter控件实现电影展示与收藏
  20. python中制表符、换行符

热门文章

  1. VGG论文原文重点提炼解析
  2. Ditto 复制粘贴
  3. 基于Echarts实现可视化数据大屏实时监测地图
  4. 计算机卡慢解决方法,电脑很卡怎么办,详细教您电脑很卡很慢应该怎么解决
  5. 去除桌面快捷方式上的小箭头
  6. pycharm preparing workspace 项目打不开怎么办?
  7. mysql 处理emij表情_判断是否emij表情
  8. C/C++小写数字转换成大写数字
  9. 编写程序,根据输入的n,输出如下例所示的图形。
  10. C51串口通信(张毅刚)例8-1程序解释