博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信发送红包示例(php)
阅读量:7111 次
发布时间:2019-06-28

本文共 4648 字,大约阅读时间需要 15 分钟。

微信红包接口

微信红包是微信支付推出的一款基于微信客户端的免费服务应用,微信红包以微信支付

为核心安全保障,为广大用户提供安全,快捷的移劢支付服务。

 

请求URL

现金红包

https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack

 

裂变红包

https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack

 

企业付款

请求的参数:

3924735281.png

以现金红包为例:请求参数示例:

 
123123
1281216601201609200000000000
1281216601
1231
1.00
1

核心代码如下:

$config里面包含了必须的appid,和其他参数,可以看上图详情。只需调用yiy_send(要发送给谁的(openid),金额,配置参数)
/*随机字符串*/	private function random($length, $numeric = FALSE) {		$seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);		$seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));		if ($numeric) {			$hash = '';		} else {			$hash = chr(rand(1, 26) + rand(0, 1) * 32 + 64);			$length--;		}		$max = strlen($seed) - 1;		for ($i = 0; $i < $length; $i++) {			$hash .= $seed{mt_rand(0, $max)};		}		return $hash;	}	//发送红包	private function yiy_send($openid,$price,$config) {		$uniacid = 2;		$api = $config['api'];		$activity = $config['activity'];		$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';		$pars = array();		$pars['nonce_str'] = $this->random(32);		$pars['mch_billno'] = $api['mchid'] . date('YmdHis');		$pars['mch_id'] = $api['mchid'];		$pars['wxappid'] = $api['appid'];		$pars['send_name'] = $activity['provider'];		$pars['re_openid'] = $openid;		$pars['total_amount'] = $price*100;		$pars['total_num'] = 1;		$pars['wishing'] = $activity['wish'];		$pars['client_ip'] = $api['ip'];		$pars['act_name'] = $activity['title'];		$pars['remark'] = $activity['remark'];			ksort($pars);		$string1 = '';		foreach($pars as $k => $v) {			$string1 .= "{$k}={$v}&";		}		$string1 .= "key={$api['password']}";		$pars['sign'] = strtoupper(md5($string1));		$xml = $this->array2xml($pars);		define(M_PATH, dirname(__FILE__). '/./../../../../addons/ly_huilife/');		$extras = array();		//此处为证书位置(绝对路径),改成适合自己的,我这里放的比较那啥。。。。忽略///		$extras['CURLOPT_CAINFO'] = M_PATH . '/cert/rootca.pem.' . $uniacid;		$extras['CURLOPT_SSLCERT'] = M_PATH . '/cert/apiclient_cert.pem.' . $uniacid;		$extras['CURLOPT_SSLKEY'] = M_PATH . '/cert/apiclient_key.pem.' . $uniacid;		$procResult = null;		$resp = $this->CurlPostSsl($url, $xml, $extras);		return $resp;	}	//提交	private function CurlPostSsl($url,$xml,$extras){		$ch = curl_init();   		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);			curl_setopt($ch,CURLOPT_TIMEOUT,60);		curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);    			curl_setopt($ch,CURLOPT_URL,$url);		curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);		curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);		curl_setopt($ch, CURLOPT_SSLVERSION, 1);		curl_setopt($ch,CURLOPT_SSLCERT,$extras['CURLOPT_SSLCERT']);    			curl_setopt($ch,CURLOPT_SSLKEY,$extras['CURLOPT_SSLKEY']);		curl_setopt($ch,CURLOPT_CAINFO,$extras['CURLOPT_CAINFO']);		curl_setopt($ch,CURLOPT_POST, 1);		curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);		$data = curl_exec($ch);		var_dump($data);		if($data){			curl_close($ch);            			$rsxml = simplexml_load_string($data);			if($rsxml->return_code == 'SUCCESS' && $rsxml->result_code == 'SUCCESS'){				return array('code'=>1,'msg'=>'发放成功');			}else{			//这里你可以获取,并返回详细失败信息,我这里都用这种方式返回了。				return array('code'=>0,'msg'=>'#1未知错误,稍后再试');    			}		}else{ 			$error = curl_errno($ch);			curl_close($ch);			return array('code'=>0,'msg'=>$error );		}	}	function array2xml($arr, $level = 1) {		$s = $level == 1 ? "
" : ''; foreach ($arr as $tagname => $value) { if (is_numeric($tagname)) { $tagname = $value['TagName']; unset($value['TagName']); } if (!is_array($value)) { $s .= "<{$tagname}>" . (!is_numeric($value) ? '' : '') . "
"; } else { $s .= "<{$tagname}>" . array2xml($value, $level + 1) . "
"; } } $s = preg_replace("/([\x01-\x08\x0b-\x0c\x0e-\x1f])+/", ' ', $s); return $level == 1 ? $s . "
" : $s; }

正确的返回结果是:

QQ图片20160920230430.pngQQ截图20160920224924.png

注意:传入的金额是以分为单位,比如1元,要写成100,不然红包过小会失败的(红包大于等于1元,小于等于200元),比如这样返回:

1

更详细的文档:官方pdf:

转载于:https://www.cnblogs.com/ukzq/p/6344354.html

你可能感兴趣的文章
beego1---beego,bee环境配置
查看>>
MinGW下编译openssl, json-c
查看>>
thinkphp跨模块调用
查看>>
Go 文件操作(创建、打开、读、写)
查看>>
JS获取周、月、季度日期
查看>>
python 异步采集,网页爬虫编写 | 一步一步学python
查看>>
Flash调用XML文件的方法
查看>>
Android ArrayAdapter 详解
查看>>
【iOS开发笔记26/50】我自己写的苹果应用程序XQViewer终于上架了,解决了一系列的问题,终于挺过来了...
查看>>
JSF---->其他标签
查看>>
Python应用01 原始Python服务器
查看>>
Add Console Application Program to the MFC Program
查看>>
Oracle中可被并行化执行的SQL操作
查看>>
新的Layout布局系统
查看>>
java链表
查看>>
VC获取操作系统版本和名称
查看>>
iOS: 消息通信中的Notification&KVO
查看>>
FZU Problem 2105 Digits Count
查看>>
禁止复制
查看>>
Accessing Hardware in Silverlight using COM
查看>>