卡券开发HelloWord(PHP)-原来它一直都很简单
为了让开发者尽快熟悉卡券接口开发,卡券小助手特意找到开发GG,死缠烂打求到一篇HelloWord教程,真TM的感动啊,感谢给力的Barry大神,后续小助手会针对各个卡券开发流程的难点出教程,请大家期待。
本文仅提供PHP版本的代码示例,欢迎大家补充Java、.NET和Python的开发心得。
CURL POST
由于多数卡券接口采用post请求的方式,在开始卡券接口使用之前,编写一个post函数,是一个良好的开端。
// curl post
function http_post( $url, $data ) {
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HEADER, 1 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
$resp = curl_exec( $ch );
curl_close( $ch );
return $resp;
一、获取access_token
a) debug页面获取
http://mp.weixin.qq.com/debug/
接口类型:基础支持
接口列表:获取access_token接口
参数填写开发者的appid和secret
点击检查问题,即可返回access_token,access_token的有效期是两小时
b) php curl post获取:
function getAccessToken( $appid, $secret ) {
$url = "https://api.weixin.qq.com/cgi-bin/token";
$data = "grant_type=client_credential" . "&appid=" . urlencode( $appid ) . "&secret=" . urlencode( $secret );
$resp = http_post( $url, $data );
//截取token
$token=strstr( $resp, "\":\"" );
$token=trim( $token, "\":\"" );
$token=strstr( $token, "\",\"", true );
return $token;
}
//获取Access_token
$appid = "wx57bf46878716c27e";
$secret = "875e5cc094b78f230b0588c2a5f3c49f";
$access_token = getAccessToken( $appid, $secret );
echo "$access_token<br>";
二、上传卡卷logo
a) debug页面获取
http://mp.weixin.qq.com/debug/
接口类型:基础支持
接口列表:上传logo接口
access_token: 上一步获得的access_token
buffer:你选择的图片
点击检查问题,即可获取图片url,在下一步创建卡劵的参数中需要
b) php curl post获取:
// 上传图片获得logo链接
$url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=" . urlencode( $access_token );
$file = array( "buffer"=>"@haha.jpg" );
$resp = http_post( $url, $file );
echo "$resp<br>";
三、创建卡卷
a) debug页面获取
http://mp.weixin.qq.com/debug/
接口类型:卡劵接口
接口列表:创建卡劵接口
access_token
json: 示例
{
"card": {
"card_type": "EXPERIENCE",
"experience": {
"base_info": {
"logo_url": "http://mmbiz.qpic.cn/mmbiz/nqLnAvgTl6Sy0frKicGcWqzomd46yUpxx2ficib99oicErgOJsic9ya9Xhzkib7kvaE6xsh8ibjdlksQpy5QvSjIRWBXA/0",
"brand_name": "tit 体验劵",
"title": "第一张卡劵",
"sub_title": "hello world!",
"color": "Color010",
"notice": "享受创建卡劵的乐趣吧",
"service_phone": "020-88888888",
"description": "1、使用时间\nXXXXX\n2、适用条件\nXXXXX\n3、是否预约\nXXXXX\n",
"source": "灌灌灌",
"date_info": {"type": 1, "begin_timestamp": 1437549651, "end_timestamp": 1446307200},
"sku": {
"quantity": 50000000 },
"location_id_list": [288907692,288839879],
"use_limit": 10,
"get_limit": 30,
"use_custom_code": false,
"bind_openid": false,
"can_share": false
},
"experience_detail": "欢迎体验"
}
}
}
注意项:date_info中用的是timestamp,注意把begin_timestamp修改小于当前时间,end_timestamp修改成今天之后,这样在后面核销卡劵测试才能成功
b) php curl post获取
//创建卡卷
$url = "https://api.weixin.qq.com/card/create?access_token=" . urlencode( $access_token );
$file = file_get_contents( "card.json" );
// 上传的json格式文件,文件头可能会出现多余的特殊字符
while( $file[0] != '{' ){
$file = substr( $file, 1 );
}
echo "$file<br>";
$resp = http_post( $url, $file );
echo "$resp<br>";
?>
四、创建二维码ticket
a) debug页面获取
http://mp.weixin.qq.com/debug/
接口类型:卡劵接口
接口列表:创建二维码ticket接口
access_token:
json: 示例:
{
"action_name": "QR_CARD",
"action_info": {
"card": {
"card_id": "po_2DjgJ2zrboM6SzK3qNuje5iWQ",
}
}
}
五、显示二维码
浏览器中输入:https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
把TICKET替换成上一步获得的ticket
示例:
打开微信扫一扫,然后领取卡劵,如果显示卡劵未通过审核,那么需要下一步设置测试白名单,如果可以领取就忽略第六步。
六、设置测试白名单
debug页面获取
http://mp.weixin.qq.com/debug/
接口类型:卡劵接口
接口列表:设置测试白名单接口
access_token:
json: 示例:
{ "username":["usr1","usr2"] }
其中usr1,sur2是领取卡劵的微信号
七、核销卡劵
a) debug页面获取
http://mp.weixin.qq.com/debug/
接口类型:卡劵接口
接口列表:核销卡劵接口
access_token:
json: 示例:
{ “code”:“759733467744” }
仅支持核销有效期内的卡劵