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 @ 2022-08-01 14:31  阿果2021  阅读(341)  评论(0)    收藏  举报