365体育备用网址报道17.6.1一般红包_365体育备用网址官网资讯

微信红包是指发放红包时,一次只有一个用户的形式。
发放一般红包的接口如下所示:
https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
发放一般红包时,POST数据示例如下所示。

<XML>
    <sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>
    <mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>
    <mch_id><![CDATA[888]]></mch_id>
    <wxappid><![CDATA[wxcbda96de0b165486]]></wxappid>
    <send_name><![CDATA[send_name]]></send_name>
    <re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>
    <total_amount><![CDATA[200]]></total_amount>
    <total_num><![CDATA[1]]></total_num>
    <wishing><![CDATA[恭喜发财]]></wishing>
    <client_ip><![CDATA[127.0.0.1]]></client_ip>
    <act_name><![CDATA[新年红包]]></act_name>
    <remark><![CDATA[新年红包]]></remark>
    <scene_id><![CDATA[PRODUCT_2]]></scene_id>
    <consume_mch_id><![CDATA[10000097]]></consume_mch_id>
    <nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str>
    <risk_info>posttime%3d123123412%26clientversion%3d234134%26mobile%3d122344545%26deviceid%3dIOS</risk_info>
</xml>

同时,发送一般红包时,需要带上文件证书,提高安全级别。
上述数据的参数说明如表17-6所示:


表17-6发放一般红包接口参数说明
正确创建时,返回的数据示例如下。

<xml>
    <return_code><![CDATA[SUCCESS]]></return_code>
    <return_msg><![CDATA[发放胜利.]]></return_msg>
    <result_code><![CDATA[SUCCESS]]></result_code>
    <err_code><![CDATA[0]]></err_code>
    <err_code_des><![CDATA[发放胜利.]]></err_code_des>
    <mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>
    <mch_id>10010404</mch_id>
    <wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid>
    <re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>
    <total_amount>1</total_amount>
</xml>

上述数据的参数说明如表17-7所示:

表17-7 发放一般红包接口返回参数说明
微信红包接口类的实bet365中国官方网站码如下所示。

 1 class WxPay
  2 {
  3     var $appid = APPID;
  4     var $appsecret = APPSECRET;
  5 
  6     //构造函数,猎取Access Token
  7     public function __construct($appid = NULL, $appsecret = NULL)
  8     {
  9         if($appid && $appsecret){
 10             $this->appid = $appid;
 11             $this->appsecret = $appsecret;
 12 
 13             //3. 本地写入
 14             $res = file_get_contents('access_token.json');
 15             $result = json_decode($res, true);
 16             $this->expires_time = $result["expires_time"];
 17             $this->access_token = $result["access_token"];
 18             if (time() > ($this->expires_time + 3600)){
 19                 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
 20                 var_dump($url);
 21                 $res = $this->http_request($url, null, false);
 22                 $result = json_decode($res, true);
 23                 $this->access_token = $result["access_token"];
 24                 $this->expires_time = time();
 25                 file_put_contents('access_token.json', '{"access_token": "'.$this->access_token.'", "expires_time": '.$this->expires_time.'}');
 26             }
 27         }
 28     }
 29 
 30     //发起支付要求
 31     function wxpay($url, $obj, $cert = false)
 32     {
 33         $obj['nonce_str'] = $this->create_noncestr();
 34         $stringA = $this->formatQueryParaMap($obj, false);
 35         $stringSignTemp = $stringA . "&key=" . PARTNERKEY;
 36         $sign = strtoupper(md5($stringSignTemp));
 37         $obj['sign'] = $sign;
 38         $postXml = $this->arrayToXml($obj);
 39         $responseXml = $this->http_request($url, $postXml, $cert);
 40         return $responseXml;
 41     }
 42 
 43     //随机字符串
 44     function create_noncestr($length = 32)
 45     {
 46         $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 47         $str = "";
 48         for ( $i = 0; $i < $length; $i++ )  {
 49             $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
 50         }
 51         return $str;
 52     }
 53 
 54     //格式化字符串
 55     function formatQueryParaMap($paraMap, $urlencode)
 56     {
 57         $buff = "";
 58         ksort($paraMap);
 59         foreach ($paraMap as $k => $v){
 60             if (null != $v && "null" != $v && "sign" != $k) {
 61                 if($urlencode){
 62                    $v = urlencode($v);
 63                 }
 64                 $buff .= $k . "=" . $v . "&";
 65             }
 66         }
 67         $reqPar;
 68         if (strlen($buff) > 0) {
 69             $reqPar = substr($buff, 0, strlen($buff)-1);
 70         }
 71         return $reqPar;
 72     }
 73 
 74     //数组转XML
 75     function arrayToXml($arr)
 76     {
 77         $xml = "<xml>";
 78         foreach ($arr as $key=>$val)
 79         {
 80             if (is_numeric($val)){
 81                 $xml.="<".$key.">".$val."</".$key.">";
 82             }else{
 83                  $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
 84             }
 85         }
 86         $xml.="</xml>";
 87         return $xml;
 88     }
 89 
 90     //将XML转为array
 91     function xmlToArray($xml)
 92     {    
 93         //禁止引用外部xml实体
 94         libxml_disable_entity_loader(true);
 95         $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);        
 96         return $values;
 97     }
 98 
 99     //带证书的post要求
100     function http_request($url, $fields = null, $cert = true)
101     {
102         $ch = curl_init();
103         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
104         curl_setopt($ch, CURLOPT_URL, $url);
105         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
106         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
107         curl_setopt($ch, CURLOPT_SSLCERT, 'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');
108         curl_setopt($ch, CURLOPT_SSLKEY, 'cert'.DIRECTORY_SEPARATOR.'apiclient_key.pem');
109         curl_setopt($ch, CURLOPT_CAINFO, 'cert'.DIRECTORY_SEPARATOR.'rootca.pem');
110         if (!empty($fields)){
111             curl_setopt($ch, CURLOPT_POST, 1);
112             curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
113         }
114         $data = curl_exec($ch);
115         if(!$data){echo "CURL ErrorCode: ".curl_errno($ch);}
116         curl_close($ch);
117         return $data;
118     }
119 }

调用微信红包的方法如下所示。

 1$money = 101;
 2$sender = "方倍工作室";
 3$obj = array();
 4$obj['wxappid']         = APPID;
 5$obj['mch_id']          = MCHID;
 6$obj['mch_billno']      = MCHID.date('YmdHis').rand(1000, 9999);
 7$obj['client_ip']       = $_SERVER['REMOTE_ADDR'];
 8$obj['re_openid']       = $openid;
 9$obj['total_amount']    = $money;
10$obj['total_num']       = 1;
11$obj['nick_name']       = $sender;
12$obj['send_name']       = $sender;
13$obj['wishing']         = "恭喜发财";
14$obj['act_name']        = "猜灯谜抢红包";
15$obj['remark']          = "猜越多得越多";
16var_dump($obj);
17$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';
18$wxHongBaoHelper = new WxPay();
19$data = $wxHongBaoHelper->wxpay($url, $obj, true);
20$res = $wxHongBaoHelper->xmlToArray($data);
21var_dump($res);

执行上述代码后,用户将收到红包,效果如图17-9所示。

图17-9 微信支付一般红包

------分隔线----------------------------

公布评论 (112人察看0条评论)
请自觉遵守互联网相关的政策法规,严禁公布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换金沙真人开户网
最新评论