微信API发红包学习记录

31次阅读
没有评论

本攻城狮不是很熟悉PHP开发,一个小项目还必须的用,搜遍网络仅仅找到一个可用的代码,不是其他不可用,都是模块啥的不熟悉,下面的只是我调试通过的。。莫名其妙,IP地址填写120.0.0.1就通过了。。呵呵,,需要的拿去,,本代码基本都网上找的,版权不知道谁的。

账户设置-->API安全-->密钥设置
            $nonce_str =  md5(rand());                                  //随机字符串,不长于32位
            $m_arr = array (
                    'mch_billno' => $mch_billno,
                    'mch_id' => $mch_id,
                    'wxappid' => $wxappid,
                    'send_name' => $send_name,
                    're_openid' => $re_openid,
                    'total_amount' => $total_amount,
                    'total_num' => $total_num,
                    'wishing' => $wishing,
                    'client_ip' => $client_ip,
                    'act_name' => $act_name,
                    'remark' => $remark,
                    'nonce_str'=> $nonce_str
            );
            array_filter ( $m_arr ); // 清空参数为空的数组元素
            ksort ( $m_arr ); // 按照参数名ASCII码从小到大排序
                   
            $stringA = "";
            foreach ( $m_arr as $key => $row ) {
                $stringA .= "&" . $key . '=' . $row;
            }
            $stringA = substr ( $stringA, 1 );
            // 拼接API密钥:
            $stringSignTemp = $stringA."&key=" . $apikey;
            $sign = strtoupper ( md5 ( $stringSignTemp ) );         //签名
       
            $textTpl = '
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        ';
     $resultStr = sprintf($textTpl, $sign, $mch_billno, $mch_id, $wxappid, $send_name,$re_openid,$total_amount,$total_num,$wishing,$client_ip,$act_name,$remark,$nonce_str);
      return curl_post_ssl($url, $resultStr);
    }
    //裂变红包
    function sendgroupredpack($openid)
    {
			$mch_billno = '88888888888' . date ( "YmdHis", time () ) . rand ( 1000, 9999 );      //商户订单号
            $mch_id = '8888888888888';                         //微信支付分配的商户号
            $wxappid = 'wx3**************8';        //公众账号appid
            $send_name = "商户名称";                          //商户名称
            $re_openid = $openid;         //用户openid
            $total_amount = "100";                              //付款金额,单位分
            $total_num = 1;                                          //红包发放总人数
            $amt_type = "ALL_RAND";                      //红包金额设置方式 ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额
            $wishing = "恭喜发财";                             //红包祝福语
            $act_name = "关注有礼";                         //活动名称
            $remark = "测试";                                      //备注
            $apikey = "5******************************3";   // key 商户后台设置的  微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
            $nonce_str =  md5(rand());                                  //随机字符串,不长于32位
            $m_arr = array (
                    'mch_billno' => $mch_billno,
                    'mch_id' => $mch_id,
                    'wxappid' => $wxappid,
                    'send_name' => $send_name,
                    're_openid' => $re_openid,
                    'total_amount' => $total_amount,
                    'total_num' => $total_num,
                    'amt_type' => $amt_type,
                    'wishing' => $wishing,
                    'act_name' => $act_name,
                    'remark' => $remark,
                    'nonce_str'=> $nonce_str
            );
            array_filter ( $m_arr ); // 清空参数为空的数组元素
            ksort ( $m_arr ); // 按照参数名ASCII码从小到大排序
                   
            $stringA = "";
            foreach ( $m_arr as $key => $row ) {
                $stringA .= "&" . $key . '=' . $row;
            }
            $stringA = substr ( $stringA, 1 );
            // 拼接API密钥:
            $stringSignTemp = $stringA."&key=" . $apikey;
            $sign = strtoupper ( md5 ( $stringSignTemp ) );         //签名
       
            $textTpl = '
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        ';
            $resultStr = sprintf($textTpl, $sign, $mch_billno, $mch_id, $wxappid, $send_name,$re_openid,$total_amount,$amt_type,$total_num,$wishing,$act_name,$remark,$nonce_str);
            $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack";
            return curl_post_ssl($url, $resultStr);
    }
function curl_post_ssl($url, $vars, $second=30,$aHeader=array())
{
    $ch = curl_init();
    //超时时间
    curl_setopt($ch,CURLOPT_TIMEOUT,$second);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
    //这里设置代理,如果有的话
    //curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');
    //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
   
    //以下两种方式需选择一种
   
    //第一种方法,cert 与 key 分别属于两个.pem文件
    //默认格式为PEM,可以注释
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/zhengshu/apiclient_cert.pem');
    // 默认格式为PEM,可以注释
    curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/zhengshu/apiclient_key.pem');
   
    //第二种方式,两个文件合成一个.pem文件
    //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');
 
    if( count($aHeader) >= 1 ){
        curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
    }
 
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
    $data = curl_exec($ch);
    if($data){
        curl_close($ch);
        return $data;
    }
    else {
        $error = curl_errno($ch);
        echo "call faild, errorCode:$error\n";
        curl_close($ch);
        return false;
    }
}
?>

红包api网页http://blog.csdn.net/yao978318542/article/details/49996303
红包api网页http://www.jb51.net/article/93297.htm
红包api网页http://www.jb51.net/article/75923.htm

正文完