PHP生成签名方法

将参数按照顺序组合
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); 

 h5支付之后调转

https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx051000040839776de4390146ccc3b80000&package=1472746547&redirect_url=https://unipay.10010.com/udpNewPortal/miniwappayment/weixinH5ReturnPre?payStr=he7oZY4ETsewizItcrJhfb%2F1%2BtST0Q2Ff2A2cU6zPuMo28Egby%2BDHK0BYCzJUkg1KY6QNHoqemTnOduvGRrDxMFnbY1vQzGi
微信支付成功之后,就去调取充值接口,进行处理

 native支付 二维码支付,调起微信支付

weixin://wap/pay?prepayid%3Dwx050925345971120702f897f5368b190000&package=4015943104&noncestr=1672881934&sign=9bf76673449aa169479a1c462ba09935

生成支付二维码,用微信扫一扫

posted on 2023-01-05 10:50  kevin_yang123  阅读(573)  评论(0编辑  收藏  举报