微信支付–代金券免充值代金券
开通免充值代金券需 进行接口升级:
https://pay.weixin.qq.com/wiki/doc/api/download/mczyscsyl.pdf
接口升级组合: 103+104+105
进行接口升级组合调用前 获取沙箱秘钥:
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=23_1
<?php
//生成随机字符串
function generateNonceStr($length = 32)
{
// 密码字符集,可任意添加你需要的字符
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $str;
}
$paykey = '';//api的key值
$mch_id = '';//商户号
$url = "https://apitest.mch.weixin.qq.com/sandboxnew/pay/getsignkey";
$nonce_str = generateNonceStr();//随机字符串
$data = [
'mch_id'=>$mch_id,
'nonce_str'=>$nonce_str,
];
ksort($data);
//签名前完整字符串
$stringA = '';
foreach ($data as $key => $v) {
if (is_array($data[$key])) {
$stringA .= $key . '=' . $data[$key].'&';
$data[$key] = $data[$key];
} else {
$stringA .= $key . '=' . $v.'&';
}
}
$stringSignTemp=$stringA."key=$paykey"; //注:key为商户平台设置的密钥key
$sign=strtoupper(MD5($stringSignTemp));//注:MD5签名方式
$xml_data = "<xml>
<mch_id>$mch_id</mch_id>
<nonce_str>$nonce_str</nonce_str>
<sign>$sign</sign>
</xml>";
echo "<pre>";
print_r($xml_data);
echo "</pre>";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey',
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 => $xml_data,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/xml'
),
));
$response = curl_exec($curl);
curl_close($curl);
$obj = simplexml_load_string($response,"SimpleXMLElement", LIBXML_NOCDATA);
$arr = json_decode(json_encode($obj),true);
echo "<pre>";
print_r($arr);
echo "</pre>";
if($arr["return_code"]=="SUCCESS"){
echo $arr["sandbox_signkey"];
}
Array
(
[return_code] => SUCCESS
[return_msg] => ok
[sandbox_signkey] => ea4c9717cd45d11f8351b373dd74cd27
)
?>
103:下单 与 查询
<?php
/**
* 下单
*/
$sandbox_signkey = "";
$ip = $_SERVER['REMOTE_ADDR'];//终端IP
$time = date('mdHis');
$req_seq = date('ymdHis'). rand(100, 999); //流水号
$mch_id="";//商户号
//生成随机字符串
function generateNonceStr($length = 32)
{
// 密码字符集,可任意添加你需要的字符
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $str;
}
$appid = "";
$openid = "";
$nonce_str = generateNonceStr();//随机字符串
$body = "会员余额充值";//商品描述
$out_trade_no=$req_seq;//商户订单号
//$total_fee=$_POST["money"]*100;//标价金额
$total_fee="552"