微信自动登录并获取昵称的例子
仅记录:微信获取昵称自动登录
经过反复几次验证,发现我这个方法有缺陷:
微信内 未关注进入网站,无法获得昵称。
关注后用我这个方法可以获得昵称。
是否是因为第一次生成openid 所以还未生成昵称?待测试。
/**
* 获取当前页面完整URL地址
*/
function get_url() {
$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
$php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
$relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);
return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
}
$wxch_config = $db -> getRow("SELECT * FROM `ecs_weixin_config` WHERE `id` = 1");
$appid = $wxch_config['appid'];
$appsecret = $wxch_config['appsecret'];
$APPID = $appid;
$SCRETID =$appsecret;
if(!$_SESSION['user_id'] && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false){
if (!isset($_GET['code']))
{
$backurl = get_url();
//$url = $jsApi->createOauthUrlForCode($backurl);
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$APPID."&redirect_uri=".urlencode($backurl)."&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
//echo $url;
Header("Location: $url");
}else
{
//获取code码,以获取openid
$code = $_GET['code'];
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$APPID."&secret=".$SCRETID."&code=".$code."&grant_type=authorization_code";
$re = curl_get_contents1($url);
$rearr = json_decode($re,true);
$openid = $rearr['openid'];
//var_dump($rearr);
//$jsApi->setCode($code);
//$openid = $jsApi->getOpenid();
$user_name = $db->getOne("select uname from ecs_weixin_user where wxid = '{$openid}'");
if($openid && !$user_name){ //注册进入
$passw = md5('shanmao.me'.rand(1,18650144002));
$wxch_user_sql = "INSERT INTO `ecs_weixin_user` (`wxid`,`setp`) VALUES ('$openid','3')";
$db -> query($wxch_user_sql);
$ecs_user_id = $db -> insert_id();
if($ecs_user_id<=0){
exit('error get insert_id');
}
$url3 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$SCRETID;
$re3 = curl_get_contents1($url3);
$re3arr = json_decode($re3,true);
$token = $re3arr['access_token'];
$url2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$openid."&lang=zh_CN";
$re2 = curl_get_contents1($url2);
$rearr2 = json_decode($re2,true);
$uc_username = $rearr2['nickname']?$rearr2['nickname']: 'doubag' . $ecs_user_id;
$time = gmtime();
$user_sql = "INSERT INTO `ecs_users` (`user_name`,`password`,`reg_time`) VALUES ('$uc_username','$passw','$time')";
$db -> query($user_sql);
$uc_update = "UPDATE ecs_weixin_user SET `uname` = '$uc_username' WHERE `uid` = '$ecs_user_id'";
$db -> query($uc_update);
$user->set_session($uc_username);
$user->set_cookie($uc_username,1);
update_user_info();
/*
$up_uid = get_affiliate();
if($up_uid>0){
$sql = 'UPDATE ecs_users SET parent_id = ' . $up_uid . ' WHERE user_id = ' . $ecs_user_id;
$db ->query($sql);
header('Location: user.php?newuser=1');
}*/
}else{
$user->set_session($user_name);
$user->set_cookie($user_name,1);
update_user_info();
}
//setcookie("sopenid",$openid,time()+864000,'/');
}
}
//var_dump($openid);
function curl_get_contents1($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
curl_setopt($ch, CURLOPT_USERAGENT, "IE 6.0");
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
例子,生成csv文件并下载
//要生成csv文件的数组
$csvArr=array();
$csvArr[]=array('用户编号1','上班日期1','签到时间1','签退时间1');
$csvArr[]=array('用户编号2','上班日期2','签到时间2','签退时间2')
download_send_headers("data_export_" . date("Y-m-d") . ".csv");
$head=array('用户编号','上班日期','签到时间','签退时间');
echo array2csv($csvArr,$head);
unset($csvArr);
die();
function array2csv(array &$array,$head)
{
if (count($array) == 0) {
return null;
}
ob_start();
$df = fopen("php://output", 'w');
if(!$head){
$head=array_keys(reset($array));
}
fputcsv($df,$head);
foreach ($array as $row) {
fputcsv($df, $row);
}
fclose($df);
return ob_get_clean();
}
function download_send_headers($filename) {
// disable caching
$now = gmdate("D, d M Y H:i:s");
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("Last-Modified: {$now} GMT");
// force download
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
// disposition / encoding on response body
header("Content-Disposition: attachment;filename={$filename}");
header("Content-Transfer-Encoding: binary");
}
php array生成csv文件
<?php
$data = array(
array( 'row_1_col_1', 'row_1_col_2', 'row_1_col_3' ),
array( 'row_2_col_1', 'row_2_col_2', 'row_2_col_3' ),
array( 'row_3_col_1', 'row_3_col_2', 'row_3_col_3' ),
);
$filename = "example";
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$filename}.csv");
header("Pragma: no-cache");
header("Expires: 0");
outputCSV($data);
function outputCSV($data) {
$outputBuffer = fopen("php://output", 'w');
foreach($data as $val) {
foreach ($val as $key => $val2) {
$val[$key] = iconv('utf-8', 'gbk', $val2);
// CSV的Excel支持GBK编码,一定要转换,否则乱码
}
fputcsv($outputBuffer, $val);
}
fclose($outputBuffer);
}
?>
解决 fgetcsv函数在php5.2.8 中的bug
环境linux
问题解析出来的数据不完整,有为空的字段
网上查了下说是在php5.2.8 中存在bug
解决办法是使用自定义函数
function __fgetcsv(& $handle, $length = null, $d = ',', $e = '"') {
$d = preg_quote($d);
$e = preg_quote($e);
$_line = "";
$eof=false;
while ($eof != true) {
$_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length));
$itemcnt = preg_match_all('/' . $e . '/', $_line, $dummy);
if ($itemcnt % 2 == 0)
$eof = true;
}
$_csv_line = preg_replace('/(?: |[ ])?$/', $d, trim($_line));
$_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/';
preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
$_csv_data = $_csv_matches[1];
for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) {
$_csv_data[$_csv_i] = preg_replace('/^' . $e . '(.*)' . $e . '$/s', '$1' , $_csv_data[$_csv_i]);
$_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);
}
return empty ($_line) ? false : $_csv_data;
}
excel无法正确读取长度超过32K的CSV域问题
php 导出csv文件用excel打开后,产品表述字段分两行显示。
查看了下这个字段发现这个字段超过32K的字符,excel会把字符串打断成两行,如果小于32K,显示正常。
这是EXCEL的限制,目前还没有找到解决办法。
excel一个单元格最多是32767个字符。
解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
PHP生成UTF-8编码的CSV文件用Excel打开中文显示乱码,是由于输出的CSV文件中没有BOM。
<?php
$now = gmdate("D, d M Y H:i:s");
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("Last-Modified: {$now} GMT");
// force download
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
// disposition / encoding on response body
header("Content-Disposition: attachment;filename={$filename}");
header("Content-Transfer-Encoding: binary");
$items_data=array(
'0'=>array('title'=>'test test test1'),
'1'=>array('title'=>'test test test2'),
'2'=>array('title'=>'test test test3')
)
print(chr(0xEF).chr(0xBB).chr(0xBF));
//设置utf-8 + bom ,处理汉字显示的乱码
echo array2csv($items_data);
function array2csv(array &$array)
{
if (count($array) == 0) {
return null;
}
ob_start();
$df = fopen("php://output", 'w');
fputcsv($df, array_keys(reset($array)));
foreach ($array as $row) {
fputcsv($df, $row);
}
fclose($df);
return ob_get_clean();
}
?>
导出csv文件数字会自动变科学计数法的解决方法
用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软甲查看csv文件时就会变成科学技术法的表现形式。
其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0。
解决这个问题
只要把数字字段后面加上显示上看不见的字符即可,字符串结尾加上制表符"\t".
php 程序可以这样判断,注意一定是"\t",不是'\t'.
is_numeric($val)?$val."\t":$val;
从一个数组中随机取出n个值,用array_rand()可以轻易的实现,当面对大数组的时候,我们会担心他的效率、性能问题。
我测试了一下,当在一个大小为一万的数组中随机取出20个值,即array_rand($arr, 20)的时候,程序只花费了0.005s左右,效率非常高。平时基本上都不会遇到这么大的数组吧,所以我们不必担心array_rand效率问题了。
同时,我用了另外一种用随机数的方法。
$arr = array(1,2,3,4,5...9999);
for($i=0; $i<20; $i++)
{
$rands = mt_rand(0,9999);
$aa[] = $arr[$rands];
}
运行程序,也只需要大概0.005s左右。
实例、随机数组
function make_password( $length = 8 )
{
// 密码字符集,可任意添加你需要的字符
$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!',
'@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',
'[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',
'.', ';', ':', '/', '?', '|');
// 在 $chars 中随机取 $length 个数组元素键名
$keys = array_rand($chars, $length);
$password = '';
for($i = 0; $i < $length; $i++)
{
// 将 $length 个数组元素连接成字符串
$password .= $chars[$keys[$i]];
}
return $password;
}
我猜想,array_rand底层的算法可能就是以上这种方法做出来的。所以取数组中随机值,放心大胆的用array_rand吧。
php版本微信卡卷测试代码api也是我们开发中的一个非常实用的插件了,下面我们来看看这篇php版本微信卡卷测试代码api例子,希望对各位有帮助。
创建卡卷:
public function createcard(){//新建卡卷
$appid=C('APPID');
$appsecret=C('SCRETID');
$asstonek = $this->get_token($appid,$appsecret);
$url = "https://api.weixin.qq.com/card/create?access_token=".$asstonek;
$pjson ='{ "card": {
"card_type": "GROUPON",
"groupon": {
"base_info": {
"logo_url":
"http://mmbiz.qpic.cn/mmbiz/ibkgH5qOticpLRCYTKmibPW028nOv2YYg42UsK8MWV5fVLRUUTrNyrg3nJgxThaP9tNg1JZXHk88FdLqxmmNq4CHg/0?wx_fmt=jpeg",
"brand_name":"海底捞123",
"code_type":" CODE_TYPE_TEXT ",
"title": "132 元双人火锅套餐",
"sub_title": "",
"color": "Color010",
"notice": "使用时向服务员出示此券",
"service_phone": "020-88888888",
"description": "不可与其他优惠同享\n 如需团购券发票, 请在消费时向商户提出\n 店内均可
使用,仅限堂食\n 餐前不可打包,餐后未吃完,可打包\n 本团购券不限人数,建议 2 人使用,超过建议人
数须另收酱料费 5 元/位\n 本单谢绝自带酒水饮料",
"date_info": {
"type": 2,
"fixed_term": 30,
"fixed_begin_term": 0
},
"sku": {
"quantity": 500000
},
"get_limit": 3,
"use_custom_code": false,
"bind_openid": false,
"can_share": true,
"can_give_friend": true,
"location_id_list" : [123, 12321, 345345],
"custom_url_name": "立即使用",
"custom_url": "http://www.qq.com",
"custom_url_sub_title": "6 个汉字 tips",
"promotion_url_name": "更多优惠",
"promotion_url": "http://www.qq.com",
"source": "大众点评"
},
"deal_detail": "以下锅底 2 选 1(有菌王锅、麻辣锅、大骨锅、番茄锅、清补凉锅、酸菜鱼锅可
选):\n 大锅 1 份 12 元\n 小锅 2 份 16 元\n 以下菜品 2 选 1\n 特级肥牛 1 份 30 元\n 洞庭?鱼卷 1 份
20 元\n 其他\n 鲜菇猪肉滑 1 份 18 元\n 金针菇 1 份 16 元\n 黑木耳 1 份 9 元\n 娃娃菜 1 份 8 元\n 冬
瓜 1 份 6 元\n 火锅面 2 个 6 元\n 欢乐畅饮 2 位 12 元\n 自助酱料 2 位 10 元"}
}
}';
$re3 = $this->curlp($url,$pjson);
$re3arr = json_decode($re3,true);
dump($re3arr);
}
卡卷领取测试:(二维码)
public function tcard(){//卡卷测试
header ( "Content-Type: text/html; charset=UTF-8" );
$appid=C('APPID');
$appsecret=C('SCRETID');
$asstonek = $this->get_token($appid,$appsecret);
$ticket = $this->get_card_ticket($asstonek);
dump($asstonek);
dump($ticket);
/* 获取卡卷列表
$url = "https://api.weixin.qq.com/card/batchget?access_token=".$asstonek;
$jsondata = '{"offset":0,"count":10}';
$re = $this->curlp($url,$jsondata);
dump($re);
*/
// 获取卡卷详情
$url3 = "https://api.weixin.qq.com/card/get?access_token=".$asstonek;
$getcardinfo = '{
"card_id":"pYKCus2uC2fwIf3STA-agJ_XhqfI"
}';
$re3 = $this->curlp($url3,$getcardinfo);
$re3arr = json_decode($re3,true);
dump($re3arr);
// status = CARD_STATUS_VERIFY_OK 卡卷审核通过
// 获取卡卷详情
$fcardjson = '{
"action_name": "QR_CARD",
"action_info": {
"card": {
"card_id": "pYKCus2uC2fwIf3STA-agJ_XhqfI",
"is_unique_code": false ,
}
}
}';
$url2 = "https://api.weixin.qq.com/card/qrcode/create?access_token=".$asstonek;
$re2 = $this->curlp($url2,$fcardjson);
$re2arr = json_decode($re2,true);
$ewmticket = $re2arr['ticket'];
if($re2arr['errmsg']!='ok') exit($re2arr['errmsg']);
dump($re2arr);
echo '<img src="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.$ewmticket.'">';
}
卡卷投放(领取):html5 js api
public function get_h5_card($data=array()){
$appid=$this->appid;
$appsecret=$this->appsecret;
$asstonek = $this->get_token($appid,$appsecret);
$ticket = $this->get_card_ticket($asstonek);
$data['api_ticket']=$ticket;
$data['timestamp']=time();
$data['signature'] = self::getSign($data);
//echo $ticket;
$data2['card_id']=$data['card_id'];
unset($data['api_ticket']);
unset($data['card_id']);
$data2['card_ext']=json_encode($data);
return $data2;
dump($data);
}
public function tcard1(){//html5 js api 卡卷投放
$card = new \Org\Util\Card('wx37445*******3ae8','6854f901**********4f9a3');
$cardid = 'pYKCus4Tmp_sBh6eiqfG-hN_ySzc';
$data['card_id']=$cardid;
$data['code']='';
$data['openid']='';
$data2 = $card->get_h5_card($data);
$this->assign('carddata',json_encode($data2));
//dump(($data2));
$this->siteDisplay ( 'card' );
需要完整卡卷投放接口请淘宝联系我。
请求Url | https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack |
---|---|
是否需要证书 | 是(证书及使用说明详见商户证书) |
请求方式 | POST |
字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
随机字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 随机字符串,不长于32位 |
签名 | sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | String(32) | 详见签名生成算法 |
商户订单号 | mch_billno | 是 | 10000098201411111234567890 | String(28) | 商户订单号(每个订单号必须唯一) 组成: mch_id+yyyymmdd+10位一天内不能重复的数字。
接口根据商户订单号支持重入, 如出现超时可再调用。
|
商户号 | mch_id | 是 | 10000098 | String(32) | 微信支付分配的商户号 |
子商户号 | sub_mch_id | 否 | 10000090 | String(32) | 微信支付分配的子商户号,受理模式下必填 |
公众账号appid | wxappid | 是 | wx8888888888888888 | String(32) | 商户appid |
商户名称 | send_name | 是 | 天虹百货 | String(32) | 红包发送者名称 |
用户openid | re_openid | 是 | oxTWIuGaIt6gTKsQRLau2M0yL16E | String(32) | 接收红包的种子用户(首个用户) 用户在wxappid下的openid
|
总金额 | total_amount | 是 | 1000 | int | 红包发放总金额,即一组红包金额总和,包括分享者的红包和裂变的红包,单位分 |
红包发放总人数 | total_num | 是 | 3 | int | 红包发放总人数,即总共有多少人可以领到该组红包(包括分享者) |
红包金额设置 | amt_type | 是 | ALL_RAND | String(32) | 红包金额设置方式 ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额
ALL_SPECIFIED—全部自定义
SEED_SPECIFIED—种子红包自定义,其他随机
|
各红包金额 | amt_list | 否 | 200|100|100 | String(256) | 各红包具体金额,自定义金额时必须设置,单位分 |
红包祝福语 | wishing | 是 | 感谢您参加猜灯谜活动,祝您元宵节快乐! | String(128) | 红包祝福语 |
活动名称 | act_name | 是 | 猜灯谜抢红包活动 | String(32) | 活动名称 |
备注 | remark | 是 | 猜越多得越多,快来抢! | String(256) | 备注信息 |
商户logo的url | logo_imgurl | 否 | https://wx.gtimg.com/mch/img/ico-logo.png | String(128) | 商户logo的url(暂未开放) |
背景水印图片 | watermark_imgurl | 否 | https://wx.gtimg.com/mch/img/ico-logo.png | String(128) | 背景水印图片url |
详情页banner图 | banner_imgurl | 否 | https://wx.gtimg.com/mch/img/ico-logo.png | String(128) | 红包详情页面的banner图片url |
<xml> <sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>
<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>
<mch_id><![CDATA[888]]></mch_id>
<wxappid><![CDATA[wxcbda96de0b165486]]></wxappid>
<send_name><![CDATA[send_name]]></send_name>
<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>
<total_amount><![CDATA[200]]></total_amount>
<amt_type><![CDATA[ALL_RAND]]></amt_type>
<amt_list><![CDATA[200|100|100]]></amt_list>
<total_num><![CDATA[3]]></total_num>
<wishing><![CDATA[恭喜发财]]></wishing>
<act_name><![CDATA[新年红包]]></act_name>
<remark><![CDATA[新年红包]]></remark>
<logo_imgurl><![CDATA[https://xx/img/wxpaylogo.png]]></logo_imgurl>
<share_content><![CDATA[share_content]]></share_content>
<share_url><![CDATA[https://xx/img/wxpaylogo.png]]></share_url>
<share_imgurl><![CDATA[https:/xx/img/wxpaylogo.png]]></share_imgurl>
<watermark_imgurl><![CDATA[https:/xx/img/wxpaylogo.png]]></watermark_imgurl>
<banner_imgurl><![CDATA[https:/xx/img/wxpaylogo.png]]></banner_imgurl>
<nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str>
</xml>
|
字段名 | 变量名 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
返回状态码 | return_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
|
返回信息 | return_msg | 否 | 签名失败 |
String(128) | 返回信息,如非空,为错误原因 签名失败
参数格式校验错误
|
以下字段在return_code为SUCCESS的时候有返回 | |||||
签名 | sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | String(32) | 生成签名方式详见签名生成算法 |
业务结果 | result_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL |
错误代码 | err_code | 否 | SYSTEMERROR | String(32) | 错误码信息 |
错误代码描述 | err_code_des | 否 | 系统错误 | String(128) | 结果信息描述 |
以下字段在return_code 和result_code都为SUCCESS的时候有返回 | |||||
商户订单号 | mch_billno | 是 | 10000098201411111234567890 | String(28) | 商户订单号(每个订单号必须唯一) 组成: mch_id+yyyymmdd+10位一天内不能重复的数字
|
商户号 | mch_id | 是 | 10000098 | String(32) | 微信支付分配的商户号 |
公众账号appid | wxappid | 是 | wx8888888888888888 | String(32) | 商户appid |
用户openid | re_openid | 是 | oxTWIuGaIt6gTKsQRLau2M0yL16E | String(32) | 接收红包的种子用户(首个用户) 用户在wxappid下的openid
|
总付款金额 | total_amount | 是 | 1000 | int | 总付款金额,单位分 |
发放成功时间 | send_time | 是 | 20150227091010 | String(14) | 红包发放成功时间,格式为yyyyMMddHHmmss,如2015年02月27日9点10分10秒表示为20150227091010 |
微信单号 | send_listid | 是 | 1000000000201502270093647546 | String(32) | 微信红包订单号 |
<xml> <return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[发放成功.]]></return_msg>
<result_code><![CDATA[SUCCESS]]></result_code>
<err_code><![CDATA[0]]></err_code>
<err_code_des><![CDATA[发放成功.]]></err_code_des>
<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>
<mch_id>10010404</mch_id>
<wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid>
<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>
<total_amount>3</total_amount>
<send_time>20150227091010</send_time>
<send_listid>1000000000201502270093647546</send_listid>
</xml>
|
<xml> <return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[系统繁忙,请稍后再试.]]></return_msg>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[268458547]]></err_code>
<err_code_des><![CDATA[系统繁忙,请稍后再试.]]></err_code_des>
<mch_billno><![CDATA[0010010404201411170000046542]]></mch_billno>
<mch_id>10010404</mch_id>
<wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid>
<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>
<total_amount>3</total_amount>
</xml>
|
错误码
|
描述
|
解决方案
|
---|---|---|
CA_ERROR
|
请求未携带证书,或请求携带的证书出错
|
到商户平台下载证书,请求带上证书后重试。
|
SIGN_ERROR
|
商户签名错误
|
按文档要求重新生成签名后再重试。
|
FREQ_LIMIT
|
受频率限制
|
请对请求做频率控制
|
XML_ERROR
|
请求的xml格式错误,或者post的数据为空
|
检查请求串,确认无误后重试
|
PARAM_ERROR
|
参数错误
|
请查看err_code_des,修改设置错误的参数
|
OPENID_ERROR
|
Openid错误
|
根据用户在商家公众账号上的openid,获取用户在红包公众账号上的openid 错误。请核对商户自身公众号appid和用户在此公众号下的openid。
|
NOTENOUGH
|
余额不足
|
商户账号余额不足,请登录微信支付商户平台充值
|
FATAL_ERROR
|
重复请求时,参数与原单不一致
|
使用相同商户单号进行重复请求时,参数与第一次请求时不一致,请检查并修改参数后再重试。
|
TIME_LIMITED
|
企业红包的发送时间受限
|
请北京时间0:00-8:00时间之外触发红包赠送
|
SECOND_OVER_LIMITED
|
企业红包的按分钟发放受限
|
每分钟发送红包数量不得超过1800个;(可联系微信支付wxhongbao@tencent.com调高额度)
|
DAY_ OVER_LIMITED
|
企业红包的按天日发放受限
|
单个商户日发送红包数量不大于10000个;(可联系微信支付wxhongbao@tencent.com调高额度)
|
MONEY_LIMIT
|
红包金额发放限制
|
每个红包金额必须大于1元,小于1000元(可联系微信支付wxhongbao@tencent.com调高额度至4999元)
|
XML_ERROR
|
请求的xml格式错误,或者post的数据为空
|
检查请求串,确认无误后重试
|
SEND_FAILED
|
红包发放失败,请更换单号再重试
|
原商户单号已经失败,如果还要对同一个用户发放红包, 需要更换新的商户单号再试。
|
SYSTEMERROR
|
系统繁忙,请再试。
|
可用同一商户单号再次调用,只会发放一个红包
|
相关文章
- 下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
- php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
- php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
- 在很多网站用户先访问一个要登录的页面,但当时没有登录后来登录了,等待用户登录成功之后肯定希望返回到上次访问的页面,下面我就来给大家介绍登录后跳转回原来要访问的页...2016-11-25
- 获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
- 主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
- 本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习哦。 代码如下 复制代码 <?php $discuz_url = ‘ht...2016-11-25
- jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
- 这篇文章主要为大家详细介绍了C#微信开发之发送模板消息的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
- 这篇文章主要介绍了iOS新版微信底部返回横条问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-30
- 【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
Ruby on Rails实现最基本的用户注册和登录功能的教程
这里我们主要以has_secure_password的用户密码验证功能为中心,来讲解Ruby on Rails实现最基本的用户注册和登录功能的教程,需要的朋友可以参考下...2020-06-30- 如果是为了取到tagName后再进行判断,那直接用下面的代码会更方便: $(element).is('input') 如果是要取到标签用作到别的地方,可以使用一下代码: $(element)[0].tagName 或: $(element).get(0).tagName...2014-05-31
- 什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
- 这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
- 为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能。需要的朋友跟随小编一起看看吧...2020-06-25
- 什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
- 这篇文章主要为大家详细介绍了vue+springboot实现登录验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-05-28