首页 > 编程语言 >PHP生成签名方法

PHP生成签名方法

时间:2023-01-05 11:03:33浏览次数:43  
标签:PHP 商户 生成 签名 key yes postString data MD5

将参数按照顺序组合
merchant=201905240200152433&orderAmount=10&orderId=bbb1561367503&outcome=yes&payMethod=2&payType=21&signType=MD5&version=1.0
拼接商户密钥
merchant=201905240200152433&orderAmount=10&orderId=bbb1561367503&outcome=yes&payMethod=2&payType=21&signType=MD5&version=1.09ED5F15DA1DA14A0F70052F4434F3936
然后md5得到sign参数的值
4641318824DB30EC3668CD727FCB4642
如果加密规则不是md5,那么就替换成需要加密的方式
$data = [
        "orderAmount" => "50", //金额
        "orderId" => time() . rand(1000, 9999),//订单号
        "merchant" => '2021112801004572213', //商户号 新的账号 原来商户202111211223066429
        'payMethod' => '1', //1.微信 2.支付宝
        "payType" => "13",//21
        "signType" => "MD5",
        "version" => "1.0",
        "outcome" => "yes",
    ];
参与加密的参数

 $key = 'DD1D847BA1B104F287FA896C4D85D4ED'; //key 新的账号   
    ksort($data);//函数对关联数组按照键名进行升序排序。
    $postString = http_build_query($data);//返回一个 URL 编码后的字符串。
    $signMyself = strtoupper(md5($postString . $key));生成需要验证的sign签名值
//#以PHP  #语言为例:
<?php
$data = array(
    "orderAmount"=>"10", //金额
    "orderId"=> time().rand(1000,9999),//订单号
    "merchant"=>"", //商户号
    'payMethod'=>'1', //支付方式
    "payType"=>"11", //支付类型
    "signType"=>"MD5",
    "version"=>"1.0",//此参数作用为返回的数据的格式  ‘yes’时返回的是json格式数据,并且没有支付页面,只返回支付链接  ‘no’时返回的是支付页面
    "outcome"=>"no",
);
//组装参与签名的字段,生成一个数组$data;
$key = '1'; //商户号所对应的商户密钥
ksort($data); //按照键名对关联数组进行升序排序
//生成 URL-encode 之后的请求字符串
$postString = http_build_query($data);
//将$postString连接上商户密钥后再MD5加密
$mdString = md5($postString.$key);
//将MD5后的数据全部专为大写 生成签名
$signMyself = strtoupper($mdString);
//将签名加入数组
$data["sign"] = $signMyself;
$data['productName'] = '1323123123';
$data['productDesc'] = '1111111' ;
$data['isLoop'] = 'no ' ;//使用轮训模式时此参数为yes
$data['createTime'] = time();//time()为当前时间戳 秒级
//接收订单回调数据的URL
$data['notifyUrl'] = 'http://132.232.133.220/notify.php';
//支付成功后跳转到的地址
$data['returnUrl'] = 'https://www.baidu.com/';
//使用GET方式访问需要生成 URL-encode 之后的请求字符串
// 这里可以用 GET 也可以用POST方式
$postString = http_build_query($data);
$url="http://124.71.24.24/api/add?".$postString;
header("Location: " .$url); 

 

标签:PHP,商户,生成,签名,key,yes,postString,data,MD5
From: https://www.cnblogs.com/kevin-yang123/p/17026912.html

相关文章

  • 查找php-fpm
    [root@VM-4-6-centos/]#find/-namephp-fpm/opt/remi/php74/root/usr/sbin/php-fpm/etc/opt/remi/php74/sysconfig/php-fpm/var/opt/remi/php74/log/php-fpm/var/opt/r......
  • 有意思,小程序还可以一键生成App!
    小程序≠微信小程序说到小程序,大部分同学的第一反应,可能是微信小程序、支付宝小程序,确实,小程序的概念深入人心,并且已经被约定俗成的绑定到某些互联网公司的APP上。但是......
  • [加密]公钥/私钥/数字签名理解
    公钥,私钥和数字签名一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让......
  • LNMP架构环境之PHP+Mariadb环境项目:部署博客wordpress项目
    1)配置nginx博客虚拟主机cat>/etc/nginx/conf.d/02_blog.etiantian.org.conf<server{server_nameblog.etiantian.org;listen80;root/data/blog;indexindex.php......
  • 微信小程序canvas验证码生成及使用
    先看效果:  wxml:<canvasclass="v-code"bindtap="changeImg"style="width:100px;height:40px;"canvas-id="canvas"></canvas>js:constMCAP=require('.......
  • php发送钉钉消息,模板例子
    <?php#key与secret私钥$appkey="ding6prlu53np9e6ly0vv2";$appsecret="KW9_HiBHyLs5YYgb0zfHd3uAvtrbbMZy5bv5eEsQzzctA9nbZjk6KuEMudJFWllVeI";//请求token$u......
  • java生成jwt并使用RSA签名
    一、生成jwt在java中生成jwt的库用得比较多的是nimbus-jose-jwt、jose4j、java-jwt和jjwt(已迁移为jwt-api)。这里使用nimbus-jose-jwt。引入依赖:implementation("com.......
  • php
    1.php代码格式<?php......?>2.;代表一行语句结束  {}代表一段语句结束3.echo可输出一行或多个字符串,用逗号隔开  print只允许输出一个字符串echo1......
  • 利用phpmyadmin拿Webshell
    利用phpmyadmin拿Webshell当拿到phpmyadmin的用户名密码后,如何拿到webshell呢,步骤如下:确认可以通过phpmyadmin写入文件,执行SQL语句:showglobalvariableslike"secur......
  • hmac php java结果不一样问题
    比如我们有个服务是PHP提供的,要求的签名方式hmacSha256取摘要,然后Base64编码转化成可见字符。PHP那边的源码是这样的$result=base64_encode(hash_hmac("SHA256"......