php微信现金红包实例,php微信公众号开发之现金红包

本文详细介绍了如何通过PHP实现商户在微信公众号上自动化发送红包的过程,包括参数设置、签名生成、XML转换、CURL请求及结果解析。重点展示了get_unique_value()函数生成唯一标识和数据签名的生成步骤。
摘要由CSDN通过智能技术生成

get_unique_value();

//签名

$data['sign']="";

//商户号,输入你的商户号

$data['mch_id']="**********";

//商户订单号,可以按要求自己组合28位的商户订单号

$data['mch_billno']=$data['mch_id'].date("ymd")."888888".rand(1000,9999);

//公众帐号appid,输入自己的公众号appid

$data['wxappid']="*********";

//商户名称

$data['send_name']="*******";

//用户openid,输入待发红包的用户openid

$data['re_openid']="*********";

//付款金额

$data['total_amount']="100";

//红包发放总人数

$data['total_num']="1";

//红包祝福语

$data['wishing']="********";

//IP地址

$data['client_ip']=$_SERVER['LOCAL_ADDR'];

//活动名称

$data['act_name']="*******";

//备注

$data['remark']="没有备注";

//场景ID

// $data['send_id']="PRODUCT_5";

//活动信息

// $data['risk_info']="";

// 生成签名

//对数据数组进行处理

//API密钥,输入自己的appsecret

$appsecret="*****";

$data=array_filter($data);

ksort($data);

$str="";

foreach($data as $k=>$v){

$str.=$k."=".$v."&";

}

$str.="key=".$appsecret;

$data['sign']=strtoupper(MD5($str));

/发红包操作:

1.将请求数据转换成xml

2.发送请求

3.将请求结果转换为数组

4.将请求信息和请求结果录入到数据库中

4.判断是否通信成功

5.判断是否转账成功/

//将请求数据由数组转换成xml

$xml=$this->arraytoxml($data);

//进行请求操作

$res=$this->curl($xml,$url);

//将请求结果由xml转换成数组

$arr=$this->xmltoarray($res);

//请请求信息和请求结果录入到数据库中

// $transfer['partner_trade_no']=$data['partner_trade_no'];

// $transfer['request_data']=serialize($data);

// $transfer['response_data']=serialize($arr);

// if($arr['return_code']=="SUCCESS" && $arr['result_code']=="SUCCESS"){

// $transfer['success']=1;

// $transfer_res['success']=1;

// }else{

// $transfer['success']=0;

// $transfer_res['success']=0;

// $transfer_res['desc']=$arr['return_msg'];

// }

// $transfer['add_time']=time();

// D("weixin_transfer")->add($transfer);

// 输出请求结果数组

echo "";

print_r($arr);

exit("weixin_red_packet");

}

// 生成32位唯一随机字符串

private function get_unique_value(){

$str=uniqid(mt_rand(),1);

$str=sha1($str);

return md5($str);

}

// 将数组转换成xml

private function arraytoxml($arr){

$xml="";

foreach($arr as $k=>$v){

$xml.="".$v."".$k.">";

}

$xml.="";

return $xml;

}

// 将xml转换成数组

private function xmltoarray($xml){

//禁止引用外部xml实体

libxml_disable_entity_loader(true);

$xmlstring=simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA);

$arr=json_decode(json_encode($xmlstring),true);

return $arr;

}

//进行curl操作

private function curl($param="",$url) {

$postUrl = $url;

$curlPost = $param;

//初始化curl

$ch = curl_init();

//抓取指定网页

curl_setopt($ch,CURLOPT_URL,$postUrl);

//设置header

curl_setopt($ch,CURLOPT_HEADER,0);

//要求结果为字符串且输出到屏幕上

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

//post提交方式

curl_setopt($ch,CURLOPT_POST,1);

// 增加 HTTP Header(头)里的字段

curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);

// 终止从服务端进行验证

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);

//这个是证书的位置

curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'\cert\apiclient_cert.pem');

//这个也是证书的位置

curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'\cert\apiclient_key.pem');

//运行curl

$data = curl_exec($ch);

//关闭curl

curl_close($ch);

return $data;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值