微信 发放代金券 api

<?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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值