uniapp 微信支付 PHP代码

$url = 'https://api.mch.weixin.qq.com/v3/pay/transactions/app';//域名

$appid = '';//自己的appid

$body = [//主体信息
'appid' => ' ',//appid
'mchid' => ' ',//商户号
'description' => ' ',//商品名称
'out_trade_no' => ' ',//自己的单号
'notify_url' => ' ',//通知地址
'amount' => [
'total' => ' ',//价格
]
];

$http_method = "POST";//请求方式

$timestamp = time();//时间

$nonce = md5(json_encode(rand(0000,9999)));//随机字符串

$body = json_encode($body);//主体信息JSON格式

$mch_private_key = file_get_contents("../public/file/apiclient_key.pem");//获取证书

$url_parts = parse_url($url);
$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));//获取URL的后缀

//按照微信文档排格式(注意 双引号“\n”)
$message = $http_method."\n".
$canonical_url."\n".
$timestamp."\n".
$nonce."\n".
$body."\n";

openssl_sign($message, $raw_sign, $mch_private_key, 'sha256WithRSAEncryption');//加密(sha256WithRSAEEncryption)
$sign = base64_encode($raw_sign);//加密

$merchant_id = ' ';//商户号

$serial_no = ' ';证书序列号

$schema = 'WECHATPAY2-SHA256-RSA2048';//微信文档默认 前缀

$token = sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"',
$merchant_id, $nonce, $timestamp, $serial_no, $sign);//按照这个格式获得$token

// print_r($message);
// return $token;

$tokens = $schema . ' ' . $token;//前缀+token(中间留空格)

//

$header_data = [
'Accept:application/json',
'User-Agent:Mozilla/4.0',
'Content-Type:application/json',
'Authorization: '.$tokens
];

 

$ch = curl_init();//开启

curl_setopt($ch,CURLOPT_URL,$url);//网址

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//写在页面

curl_setopt($ch,CURLOPT_POST,1);//传输方式

curl_setopt($ch,CURLOPT_HTTPHEADER,$header_data);//头文件

curl_setopt($ch,CURLOPT_POSTFIELDS,$body);//主体

$data = curl_exec($ch);//发送请求

curl_close($ch);//关闭

$data = json_decode($data,true);//转化数组】

//以下是吊起APP吊起微信支付后

$sign = $appid."\n".//和上面一样获取请求头
$timestamp."\n".
$nonce."\n".
$data['prepay_id']."\n";

openssl_sign($sign, $signs, $mch_private_key, 'sha256WithRSAEncryption');
$signd = base64_encode($signs);//加密

$paydata = [//数据
"appid"=>$appid,
"partnerid"=>$merchant_id,
"prepayid"=>$data['prepay_id'],
"package"=>'Sign=WXPay',
"noncestr"=>$nonce,
"timestamp"=>$timestamp,
"sign"=> $signd,
];

return api_success('Successful', $paydata);/返回

posted @   阿果2021  阅读(309)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示