<?php
wechat()
{
# 发放代金券批次API 发送完成之后对应的用户可能看不到券(有运营专员的商户才能实际看到) 只要返回没问题就行 去指定商户测试只要满足条件 就会显示
$outRequestNo = "A000100099".time().rand(0,100);
$stockId = ""; # 批次号
$appId = ""; # 微信appid
$mchId = ""; # 商户id
$serialNo = ""; # 密钥对应的序列号
$openid = ""; # 用户openid
$url = "https://api.mch.weixin.qq.com/v3/marketing/favor/users/$openid/coupons";
$timeStamp = time();
$nonceStr = generateNonceStr();
$method = "POST";
$canonicalUrl = "/v3/marketing/favor/users/$openid/coupons";
$temple = array(
"stock_id"=>$stockId,
"out_request_no"=>$outRequestNo,
"appid"=>$appId,
"stock_creator_mchid"=>$mchId
);
$data = json_encode($temple,JSON_UNESCAPED_UNICODE);
$privateKey = "-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----";
$Authorization = signS($method,$canonicalUrl,$timeStamp,$nonceStr,$data,$privateKey,$mchId,$serialNo);
$headerArray = array(
'Content-Type: application/json',
'Accept: application/json',
'Authorization:'.$Authorization,
'User-Agent: https://zh.wikipedia.org/wiki/User_agent'
);
$response = DoPost($url,$data,$headerArray);
print_r($response);
}
function generateNonceStr(int $length = 32)
{
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str ="";
for ( $i = 0; $i < $length; $i++ ) {
$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
return $str;
}
function signS($method,$canonicalUrl,$timeStamp,$nonceStr,$data,$privateKey,$mchId,$serialNo)
{
$message = $method . "\n"
.$canonicalUrl . "\n"
. $timeStamp . "\n"
. $nonceStr . "\n"
. $data . "\n";
openssl_sign($message, $raw_sign, $privateKey, 'sha256');
$sign = base64_encode($raw_sign);
return 'WECHATPAY2-SHA256-RSA2048 mchid="'.$mchId.'",nonce_str="'.$nonceStr.'",signature="'.$sign.'",timestamp="'.$timeStamp.'",serial_no="'.$serialNo.'" ';
}
function DoPost($url,$data,$headerArray)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>$data,
CURLOPT_HTTPHEADER =>$headerArray
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
只有发券 参考地址:https://blog.csdn.net/csdn_Y_w/article/details/116588793#comments_17821719