include("wxhongbao.class.php");
$usrWXOpenId = "123456987654"; //接收红包的用户的微信OpenId,捕获和辨识方法略~
$hb = new WXHongBao();
$hb->newhb($usrWXOpenId ,1000); //新建一个10元的红包,第二参数单位是 分,注意取值范围 1-200元
//以下若干项可选操作,不指定则使用class脚本顶部的预设值
$hb->setNickName("土豪有限公司");
$hb->setSendName("王富贵");
$hb->setWishing("恭喜发财");
$hb->setActName("发钱活动");
$hb->setRemark("有钱!任性!");
//发送红包
if(!$hb->send()){ //发送错误
echo $hb->err();
}else{
echo "红包发送成功";
}
查半天!错误是因为 http_build_query 会对中文进行urlencode,而微信要求的是utf8的原文,难怪md5出来的值不一致!老老实实把数组转换串接的那一行改写,用foreach循环手动串接。就正确了private function gen_Sign(){ unset($param); //将所有的变量构造成一个数组先 $param["act_name"]=$this->act_name; ... //过程略 $param["wxappid"]=$this->wxappid; ksort($param); //按照键名排序,sign算法要求 $sign_raw = http_build_query($param); //数组转换串接 $sign_raw .= "&key=".$this->apikey; //黏附最后的api秘钥参数,sign算法要求 $this->sign = strtoupper(md5($sign_raw)); //md5之后转大写,sign算法要求 }
private function gen_Sign(){ unset($param); //将所有的变量构造成一个数组先 $param["act_name"]=$this->act_name; ... //过程略 $param["wxappid"]=$this->wxappid; ksort($param); //按照键名排序,sign算法要求 //$sign_raw = http_build_query($param); //数组转换串接
$sign_raw = ""; foreach($param as $k => $v){ $sign_raw .= $k."=".$v."&"; } $sign_raw .= "key=".$this->apikey; //黏附最后的api秘钥参数,sign算法要求 $this->sign = strtoupper(md5($sign_raw)); //md5之后转大写,sign算法要求 }