前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php微信公众号开发之现金红包

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

作者头像
用户8664418
修改2021-07-13 18:12:09
6980
修改2021-07-13 18:12:09
举报
文章被收录于专栏:自留地2自留地2

本文实例为大家分享了php微信公众号之现金红包的具体代码,供大家参考,具体内容如下

以下有关微信支付中现金红包的开发参考自微信支付开发文档,如下图所示。

现金红包,是微信支付商户平台提供的营销工具之一,上线以来深受广大商户与用户的喜爱。商户可以通过本平台向微信支付用户发放现金红包。用户领取红包后,资金到达用户微信支付零钱账户,和零钱包的其他资金有一样的使用出口;若用户未领取,资金将会在24小时后退回商户的微信支付账户中。

以下为本人用于测试微信支付发红包的代码片段,仅供参考。

/

/

public function weixin_red_packet(){

// 请求参数

// 随机字符串

$data['nonce_str']=$this->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.判断是否转账成功

*/

//发红包接口地址

$url="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

//将请求数据由数组转换成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']=se/**【一个开发人员,能懂服务器量好,反之一个服务器维护人员,也应该懂开发】**/rialize($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")-&g/

/t;add($transfer);

// 输出请求结果数组

echo "<pre>";

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="<xml>";

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

$xml.="&lt;".$k.">".$v."&lt;/".$k.">";

}

$xml.="</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().'certapiclient_cert.pem');

//这个也是证书的位置

curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'certapiclient_key.pem');

//运行curl

$data = curl_exec($ch);

//关闭curl

curl_close($ch);

return $data;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档