记住用户名密码
3. 调用类,以下是一个简单的sample 。
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 "红包发送成功";
}
原本的写法是
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算法要求
}
查半天!错误是因为 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 = "";
foreach($param as $k => $v){
$sign_raw .= $k."=".$v."&";
}
$sign_raw .= "key=".$this->apikey; //黏附最后的api秘钥参数,sign算法要求
$this->sign = strtoupper(md5($sign_raw)); //md5之后转大写,sign算法要求
}
目前有 0 条留言 其中:访客:0 条, 博主:0 条