微信php开发,在URL鹿特丹规则生效了吗中,添加{id}不生效,URL中的ID部分会变成 %7B$id%7D

微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息;在此之前,想要获取消息信息只能在用户和公众号交互时根据openid获取用户信息;而微信网页授权可在不需要消息交互,也不需要关注的情况下获取用户的基本信息。(该接口出来很早了,工作忙,一直没更新教程)微信网页授权时通过OAuth2.0完成的,整个过程分为三步:
用户授权,获取code;
根据code获取access_token【可通过refresh_token刷新获取较长有效期】
通过access_token和openid获取用户信息
具体教程参考官方文档:对微信网页授权过程做了简单封装:&?php
* 微信授权相关接口
class Wechat {
//高级功能-》开发者模式-》获取
private $app_id = 'xxx';
private $app_secret = 'xxxxxxx';
* 获取微信授权链接
* @param string $redirect_uri 跳转地址
* @param mixed $state 参数
public function get_authorize_url($redirect_uri = '', $state = '')
$redirect_uri = urlencode($redirect_uri);
return "https://open./connect/oauth2/authorize?appid={$this-&app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";
* 获取授权token
* @param string $code 通过get_authorize_url获取到的code
public function get_access_token($app_id = '', $app_secret = '', $code = '')
$token_url = "https://api./sns/oauth2/access_token?appid={$this-&app_id}&secret={$this-&app_secret}&code={$code}&grant_type=authorization_code";
$token_data = $this-&http($token_url);
if($token_data[0] == 200)
return json_decode($token_data[1], TRUE);
return FALSE;
* 获取授权后的微信用户信息
* @param string $access_token
* @param string $open_id
public function get_user_info($access_token = '', $open_id = '')
if($access_token && $open_id)
$info_url = "https://api./sns/userinfo?access_token={$access_token}&openid={$open_id}&lang=zh_CN";
$info_data = $this-&http($info_url);
if($info_data[0] == 200)
return json_decode($info_data[1], TRUE);
return FALSE;
public function http($url, $method, $postfields = null, $headers = array(), $debug = false)
$ci = curl_init();
/* Curl settings */
curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ci, CURLOPT_TIMEOUT, 30);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
switch ($method) {
case 'POST':
curl_setopt($ci, CURLOPT_POST, true);
if (!empty($postfields)) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
$this-&postdata = $
curl_setopt($ci, CURLOPT_URL, $url);
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ci, CURLINFO_HEADER_OUT, true);
$response = curl_exec($ci);
$http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
if ($debug) {
echo "=====post data======\r\n";
var_dump($postfields);
echo '=====info=====' . "\r\n";
print_r(curl_getinfo($ci));
echo '=====$response=====' . "\r\n";
print_r($response);
curl_close($ci);
return array($http_code, $response);2015年7月 Web 开发大版内专家分月排行榜第三
2015年7月 Web 开发大版内专家分月排行榜第三
2015年7月 Web 开发大版内专家分月排行榜第三
2015年7月 Web 开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。微信(英文名:wechat)是腾讯公司于日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“漂流瓶”、“朋友圈”、”公众平台“、”语音记事本“等服务插件。
本文给大家介绍的是个人总结的一些微信API接口,包括微信支付、微信红包、微信卡券、微信小店等,十分的全面,有需要的小伙伴可以参考下。
微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。
微信支付、微信红包、微信卡券、微信小店。
1. [代码]index.php&&&&
include_once 'lib.inc.php';
$wcObj = new WeChat(&YOUKUIYUAN&);
$wcObj-&wcValid();
2. [代码]微信入口类&&&&
* Description of wechat
* @author Administrator
class WeChat extends WxApi{
public $token = &&;
//put your code here
public function __construct($token = &&) {
parent::__construct();
$this-&token = $
public function wcCheckSignature(){
if (empty($this-&token)) {
throw new Exception('TOKEN is not defined!');
$signature = $_GET[&signature&];
$timestamp = $_GET[&timestamp&];
$nonce = $_GET[&nonce&];
$token = $this-&
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
catch (Exception $e) {
echo 'Message: ' .$e-&getMessage();
public function wcValid(){
$echoStr = isset($_GET[&echostr&]) && !empty($_GET[&echostr&]) ? addslashes($_GET[&echostr&]) : NULL;
if(is_null($echoStr)){
$this-&wcMsg();
//valid signature , option
if($this-&wcCheckSignature()){
echo $echoS
public function wcMsg(){
//get post data, May be due to the different environments
$postStr = isset($GLOBALS[&HTTP_RAW_POST_DATA&]) && !empty($GLOBALS[&HTTP_RAW_POST_DATA&]) ? $GLOBALS[&HTTP_RAW_POST_DATA&] : &&;
if(!empty($postStr)){
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$this-&zcLog(TRUE,$postObj);
$fromUsername = $postObj-&FromUserN
$toUsername = $postObj-&ToUserN
$MsgType = $postObj-&MsgT
if($MsgType == 'event'){//执行事件相应
$Event = $postObj-&E
switch ($Event) {
case 'subscribe'://关注
case 'unsubscribe'://取消关注
case 'SCAN'://扫描
case 'LOCATION'://地址
case 'CLICK'://点击时间
case 'VIEW'://跳转
case 'card_pass_check'://卡券审核通过
case 'card_not_pass_check'://卡券审核失败
case 'user_get_card'://用户领取卡券
case 'user_del_card'://用户删除卡券
case 'user_view_card'://用户浏览会员卡
case 'user_consume_card'://用户核销卡券
case 'merchant_order'://微小店用户下单付款
switch ($MsgType) {
case 'text'://文本格式
case 'image'://图片格式
case 'voice'://声音
case 'video'://视频
case 'shortvideo'://小视频
case 'location'://上传地理位置
case 'link'://链接相应
////////////////////////////////////////////////////////////////////
$keyword = trim($postObj-&Content);
$time = time();
$textTpl = &&xml&
&ToUserName&&![CDATA[%s]]&&/ToUserName&
&FromUserName&&![CDATA[%s]]&&/FromUserName&
&CreateTime&%s&/CreateTime&
&MsgType&&![CDATA[%s]]&&/MsgType&
&Content&&![CDATA[%s]]&&/Content&
&FuncFlag&0&/FuncFlag&
if(!empty( $keyword )){
$msgType = &text&;
$contentStr = &Welcome to wechat world!&;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultS
echo &Input something...&;
////////////////////////////////////////////////////////////////////
echo &暂时没有任何信息!&;
public function zcLog($errcode , $errmsg){
$this-&returnAy = array();
$this-&returnAy['errcode'] = $
$this-&returnAy['errmsg'] = $
$this-&returnAy['errtime'] = date(&Y-m-d H:i:s&,time());
$logfile = fopen(&logfile_&.date(&Ymd&,time()).&.txt&, &a+&);
$txt = json_encode($this-&returnAy).&n&;
fwrite($logfile, $txt);
fclose($logfile);
//return $this-&returnAy;
3. [代码]微信操作类 - 更新了自定义菜单部分&&&&
/********************************************************
@author Kyler You &QQ:&
@link http://mp./wiki/home/index.html
@version 2.0.1
@uses $wxApi = new WxApi();
@package 微信API接口 陆续会继续进行更新
********************************************************/
class WxApi {
//const appId
//const appSecret
const appId
const appSecret
//const mchid
= &&; //商户号
//const privatekey
= &&; //私钥
public $parameters = array();
public function __construct(){
/****************************************************
* 微信提交API方法,返回微信指定JSON
****************************************************/
public function wxHttpsRequest($url,$data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
/****************************************************
* 微信带证书提交数据 - 微信红包使用
****************************************************/
public function wxHttpsRequestPem($url, $vars, $second=30,$aHeader=array()){
$ch = curl_init();
//超时时间
curl_setopt($ch,CURLOPT_TIMEOUT,$second);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
//以下两种方式需选择一种
//第一种方法,cert 与 key 分别属于两个.pem文件
//默认格式为PEM,可以注释
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/apiclient_cert.pem');
//默认格式为PEM,可以注释
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/apiclient_key.pem');
curl_setopt($ch,CURLOPT_CAINFO,'PEM');
curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/rootca.pem');
//第二种方式,两个文件合成一个.pem文件
//curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');
if( count($aHeader) &= 1 ){
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
$data = curl_exec($ch);
if($data){
curl_close($ch);
$error = curl_errno($ch);
echo &call faild, errorCode:$errorn&;
curl_close($ch);
/****************************************************
* 微信获取AccessToken 返回指定微信公众号的at信息
****************************************************/
public function wxAccessToken($appId = NULL , $appSecret = NULL){
= is_null($appId) ? self::appId : $appId;
$appSecret
= is_null($appSecret) ? self::appSecret : $appS
$data = json_decode(file_get_contents(&access_token.json&));
if ($data-&expire_time & time()) {
//echo $appId,$appS
= &https://api./cgi-bin/token?grant_type=client_credential&appid=&.$appId.&&secret=&.$appS
= $this-&wxHttpsRequest($url);
//print_r($result);
= json_decode($result, true);
$access_token
= $jsoninfo[&access_token&];
if ($access_token) {
$data-&expire_time = time() + 7000;
$data-&access_token = $access_
$fp = fopen(&access_token.json&, &w&);
fwrite($fp, json_encode($data));
fclose($fp);
$access_token = $data-&access_
return $access_
/****************************************************
* 微信获取AccessToken 返回指定微信公众号的at信息
****************************************************/
public function wxJsApiTicket($appId = NULL , $appSecret = NULL){
= is_null($appId) ? self::appId : $appId;
$appSecret
= is_null($appSecret) ? self::appSecret : $appS
$data = json_decode(file_get_contents(&jsapi_ticket.json&));
if ($data-&expire_time & time()) {
= &https://api./cgi-bin/ticket/getticket?type=jsapi&access_token=&.$this-&wxAccessToken();
= $this-&wxHttpsRequest($url);
= json_decode($result, true);
$ticket = $jsoninfo['ticket'];
if ($ticket) {
$data-&expire_time = time() + 7000;
$data-&jsapi_ticket = $
$fp = fopen(&jsapi_ticket.json&, &w&);
fwrite($fp, json_encode($data));
fclose($fp);
$ticket = $data-&jsapi_
/****************************************************
* 微信通过OPENID获取用户信息,返回数组
****************************************************/
public function wxGetUser($openId){
$wxAccessToken = $this-&wxAccessToken();
= &https://api./cgi-bin/user/info?access_token=&.$wxAccessToken.&&openid=&.$openId.&&lang=zh_CN&;
= $this-&wxHttpsRequest($url);
= json_decode($result, true);
/****************************************************
* 微信生成二维码ticket
****************************************************/
public function wxQrCodeTicket($jsonData){
$wxAccessToken = $this-&wxAccessToken();
= &https://api./cgi-bin/qrcode/create?access_token=&.$wxAccessT
= $this-&wxHttpsRequest($url,$jsonData);
/****************************************************
* 微信通过ticket生成二维码
****************************************************/
public function wxQrCode($ticket){
= &https://mp./cgi-bin/showqrcode?ticket=& . urlencode($ticket);
/****************************************************
发送自定义的模板消息
****************************************************/
public function wxSetSend($touser, $template_id, $url, $data, $topcolor = '#7B68EE'){
$template = array(
'touser' =& $touser,
'template_id' =& $template_id,
'url' =& $url,
'topcolor' =& $topcolor,
'data' =& $data
$jsonData = json_encode($template);
$result = $this-&wxSendTemplate($jsonData);
/****************************************************
* 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_base //验证时不返回确认页面,只能获取OPENID
****************************************************/
public function wxOauthBase($redirectUrl,$state = &&,$appId = NULL){
= is_null($appId) ? self::appId : $appId;
$url = &https://open./connect/oauth2/authorize?appid=&.$appId.&&redirect_uri=&.$redirectUrl.&&response_type=code&scope=snsapi_base&state=&.$state.&#wechat_redirect&;
/****************************************************
* 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_userinfo //获取用户完整信息
****************************************************/
public function wxOauthUserinfo($redirectUrl,$state = &&,$appId = NULL){
= is_null($appId) ? self::appId : $appId;
$url = &https://open./connect/oauth2/authorize?appid=&.$appId.&&redirect_uri=&.$redirectUrl.&&response_type=code&scope=snsapi_userinfo&state=&.$state.&#wechat_redirect&;
/****************************************************
* 微信OAUTH跳转指定URL
****************************************************/
public function wxHeader($url){
header(&location:&.$url);
/****************************************************
* 微信通过OAUTH返回页面中获取AT信息
****************************************************/
public function wxOauthAccessToken($code,$appId = NULL , $appSecret = NULL){
= is_null($appId) ? self::appId : $appId;
$appSecret
= is_null($appSecret) ? self::appSecret : $appS
$url = &https://api./sns/oauth2/access_token?appid=&.$appId.&&secret=&.$appSecret.&&code=&.$code.&&grant_type=authorization_code&;
= $this-&wxHttpsRequest($url);
//print_r($result);
= json_decode($result, true);
//$access_token
= $jsoninfo[&access_token&];
/****************************************************
* 微信通过OAUTH的Access_Token的信息获取当前用户信息 // 只执行在snsapi_userinfo模式运行
****************************************************/
public function wxOauthUser($OauthAT,$openId){
= &https://api./sns/userinfo?access_token=&.$OauthAT.&&openid=&.$openId.&&lang=zh_CN&;
= $this-&wxHttpsRequest($url);
= json_decode($result, true);
/****************************************************
* 创建自定义菜单
****************************************************/
public function wxMenuCreate($jsonData){
$wxAccessToken = $this-&wxAccessToken();
= &https://api./cgi-bin/menu/create?access_token=& . $wxAccessT
= $this-&wxHttpsRequest($url,$jsonData);
= json_decode($result, true);
/****************************************************
* 获取自定义菜单
****************************************************/
public function wxMenuGet(){
$wxAccessToken = $this-&wxAccessToken();
= &https://api./cgi-bin/menu/get?access_token=& . $wxAccessT
= $this-&wxHttpsRequest($url);
= json_decode($result, true);
/****************************************************
* 删除自定义菜单
****************************************************/
public function wxMenuDelete(){
$wxAccessToken = $this-&wxAccessToken();
= &https://api./cgi-bin/menu/delete?access_token=& . $wxAccessT
= $this-&wxHttpsRequest($url);
= json_decode($result, true);
/****************************************************
* 获取第三方自定义菜单
****************************************************/
public function wxMenuGetInfo(){
$wxAccessToken = $this-&wxAccessToken();
= &https://api./cgi-bin/get_current_selfmenu_info?access_token=& . $wxAccessT
= $this-&wxHttpsRequest($url);
= json_decode($result, true);
/*****************************************************
生成随机字符串 - 最长为32位字符串
*****************************************************/
public function wxNonceStr($length = 16, $type = FALSE) {
$chars = &abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&;
$str = &&;
for ($i = 0; $i & $ $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
if($type == TRUE){
return strtoupper(md5(time() . $str));
/*******************************************************
微信商户订单号 - 最长28位字符串
*******************************************************/
public function wxMchBillno($mchid = NULL) {
if(is_null($mchid)){
if(self::mchid == && || is_null(self::mchid)){
$mchid = time();
$mchid = self::
$mchid = substr(addslashes($mchid),0,10);
return date(&Ymd&,time()).time().$
/*******************************************************
微信格式化数组变成参数格式 - 支持url加密
*******************************************************/
public function wxSetParam($parameters){
if(is_array($parameters) && !empty($parameters)){
$this-&parameters = $
return $this-&
return array();
/*******************************************************
微信格式化数组变成参数格式 - 支持url加密
*******************************************************/
public function wxFormatArray($parameters = NULL, $urlencode = FALSE){
if(is_null($parameters)){
$parameters = $this-&
$restr = &&;//初始化空
ksort($parameters);//排序参数
foreach ($parameters as $k =& $v){//循环定制参数
if (null != $v && &null& != $v && &sign& != $k) {
if($urlencode){//如果参数需要增加URL加密就增加,不需要则不需要
$v = urlencode($v);
$restr .= $k . &=& . $v . &&&;//返回完整字符串
if (strlen($restr) & 0) {//如果存在数据则将最后&&&删除
$restr = substr($restr, 0, strlen($restr)-1);
return $//返回字符串
/*******************************************************
微信MD5签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]
*******************************************************/
public function wxMd5Sign($content, $privatekey){
if (is_null($privatekey)) {
throw new Exception(&财付通签名key不能为空!&);
if (is_null($content)) {
throw new Exception(&财付通签名内容不能为空&);
$signStr = $content . &&key=& . $
return strtoupper(md5($signStr));
catch (Exception $e)
die($e-&getMessage());
/*******************************************************
微信Sha1签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]
*******************************************************/
public function wxSha1Sign($content){
if (is_null($content)) {
throw new Exception(&签名内容不能为空&);
//$signStr = $
return sha1($content);
catch (Exception $e)
die($e-&getMessage());
/*******************************************************
微信jsApi整合方法 - 通过调用此方法获得jsapi数据
*******************************************************/
public function wxJsapiPackage(){
$jsapi_ticket = $this-&wxJsApiTicket();
// 注意 URL 一定要动态获取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? &https://& : &http://&;
$url = $protocol.$_SERVER[&HTTP_HOST&].$_SERVER[&REQUEST_URI&];
$timestamp = time();
$nonceStr = $this-&wxNonceStr();
$signPackage = array(
&jsapi_ticket& =& $jsapi_ticket,
&nonceStr& =& $nonceStr,
&timestamp& =& $timestamp,
// 这里参数的顺序要按照 key 值 ASCII 码升序排序
$rawString = &jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr&tamp=$timestamp&url=$url&;
//$rawString = $this-&wxFormatArray($signPackage);
$signature = $this-&wxSha1Sign($rawString);
$signPackage['signature'] = $
$signPackage['rawString'] = $rawS
$signPackage['appId'] = self::appId;
return $signP
/*******************************************************
将数组解析XML - 微信红包接口
*******************************************************/
public function wxArrayToXml($parameters = NULL){
if(is_null($parameters)){
$parameters = $this-&
if(!is_array($parameters) || empty($parameters)){
die(&参数不为数组无法解析&);
$xml = &&xml&&;
foreach ($arr as $key=&$val)
if (is_numeric($val))
$xml.=&&&.$key.&&&.$val.&&/&.$key.&&&;
$xml.=&&&.$key.&&&![CDATA[&.$val.&]]&&/&.$key.&&&;
$xml.=&&/xml&&;
/*******************************************************
微信卡券:上传LOGO - 需要改写动态功能
*******************************************************/
public function wxCardUpdateImg() {
$wxAccessToken = $this-&wxAccessToken();
//$data['access_token'] = $wxAccessT
$data['buffer']
= '@D:\workspace\htdocs\yky_test\logo.jpg';
= &https://api./cgi-bin/media/uploadimg?access_token=&.$wxAccessT
= $this-&wxHttpsRequest($url,$data);
= json_decode($result, true);
//array(1) { [&url&]=& string(121) &/mmbiz/ibuYxPHqeXePNTW4ATKyias1Cf3zTKiars9PFPzF1k5icvXD7xW0kXUAxHDzkEPd9micCMCN0dcTJfW6Tnm93MiaAfRQ/0& }
/*******************************************************
微信卡券:获取颜色
*******************************************************/
public function wxCardColor(){
$wxAccessToken = $this-&wxAccessToken();
= &https://api./card/getcolors?access_token=&.$wxAccessT
= $this-&wxHttpsRequest($url);
= json_decode($result, true);
/*******************************************************
微信卡券:创建卡券
*******************************************************/
public function wxCardCreated($jsonData) {
$wxAccessToken = $this-&wxAccessToken();
= &https://api./card/create?access_token=& . $wxAccessT
= $this-&wxHttpsRequest($url,$jsonData);
= json_decode($result, true);
/*******************************************************
微信卡券:JSAPI 卡券Package - 基础参数没有附带任何值 - 再生产环境中需要根据实际情况进行修改
*******************************************************/
public function wxCardPackage($cardId){
$timestamp = time();
$api_ticket = $this-&wxJsApiTicket();
$cardId = $cardId;
$arrays = array($api_ticket,$timestamp,$cardId);
sort($arrays);
$string = sha1(implode(&&,$arrays));
$resultArray['card_id'] = $cardId;
$resultArray['card_ext'] = array();
$resultArray['card_ext']['openid'] = 'oOmn4s9MiwqHSNNvPn0dBtU23toA';
$resultArray['card_ext']['timestamp'] = $
$resultArray['card_ext']['signature'] = $
return $resultA
4. [代码]微信JSAPI&&&&
require_once 'lib.inc.php';
$wx = new WxApi();
//通过网页获取openid
//if(!isset($_GET['code'])){
header(&location:https://open./connect/oauth2/authorize?appid=&.WxApi::appId.&&redirect_uri=http://&.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].&&response_type=code&scope=snsapi_base&state=1#wechat_redirect&);
$CODE = $_GET['code'];
$Info = $wx-&wxOauthAccessToken($CODE);
//print_r($Info);
$openId = $Info['openid'];
////////////////////////////////////////////
$signPackage = $wx-&wxJsapiPackage();
//print_r($signPackage);
$kqInfo = $wx-&wxCardPackage(&&);
$listInfo = $wx-&wxCardListPackage();
&title&JSAPI接口测试&/title&
&meta charset=&UTF-8&&
&meta name=&viewport& content=&width=device-width, initial-scale=1.0&&
&script src=&/jquery-1.11.2.min.js&&&/script&
&script src=&http://res./open/js/jweixin-1.0.0.js&&&/script&
&input type=&button& id=&batchAddCard& name=&batchAddCard& value=&添加卡券& /&&br /&
&input type=&button& id=&openCard& name=&openCard& value=&拉起卡券库& /&&br /&
&input type=&button& id=&ShareTimeLine& name=&ShareTimeLine& value=&分享朋友圈& /&&br /&
&div id=&showInfo&&
wx.config({
debug: false,
appId: '&?php echo $signPackage[&appId&];?&',
timestamp: &?php echo $signPackage[&timestamp&];?&,
nonceStr: '&?php echo $signPackage[&nonceStr&];?&',
signature: '&?php echo $signPackage[&signature&];?&',
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'onMenuShareTimeline',
'onMenuShareAppMessage',
'addCard',
'openCard'
wx.ready(function () {
// 在这里调用 API
wx.onMenuShareAppMessage({
title: '互联网之子',
desc: '在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。',
link: '/subject//',
imgUrl: 'http://demo.open./jssdk/images/p.jpg',
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
alert('用户点击发送给朋友');
success: function (res) {
alert('已分享');
cancel: function (res) {
alert('已取消');
fail: function (res) {
alert(JSON.stringify(res));
document.querySelector('#ShareTimeLine').onclick = function () {
wx.onMenuShareTimeline({
title: '互联网之子',
link: '/subject//',
imgUrl: 'http://demo.open./jssdk/images/p.jpg',
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
alert('用户点击分享到朋友圈');
success: function (res) {
alert('已分享');
cancel: function (res) {
alert('已取消');
fail: function (res) {
alert(JSON.stringify(res));
document.querySelector('#batchAddCard').onclick = function () {
wx.addCard({
cardList: [
cardId: 'p7G0Cj_1HGF2nijO4sTlVTzawFhI',
cardExt: '{&timestamp&:&&?php echo $kqInfo['cardExt']['timestamp'];?&&, &signature&:&&?php echo $kqInfo['cardExt']['signature'];?&&}'
success: function (res) {
var cardList = res.cardL // 添加的卡券列表信息
alert(cardList);
cancel: function (res) {
alert('已取消');
fail: function (res) {
alert(JSON.stringify(res));
var shareData = {
title: '微信JS-SDK Demo',
desc: '微信JS-SDK,帮助第三方为用户提供更优质的移动web服务',
link: 'http://demo.open./jssdk/',
imgUrl: '/mmbiz/icTdbqWNOwNRt8Qia4lv7k3M9J1SKqKCImxJCt7j9rHYicKDI45jRPBxdzdyREWnk0ia0N5TMnMfth7SdxtzMvVgXg/0'
wx.onMenuShareAppMessage(shareData);
wx.onMenuShareTimeline(shareData);
var readyFunc = function onBridgeReady() {
// 绑定关注事件
document.querySelector('#openCard').addEventListener('click',
function(e) {
WeixinJSBridge.invoke('chooseCard', {
&app_id&: &&?php echo $listInfo['app_id']?&&,
&location_id &: '',
&sign_type&: &SHA1&,
&card_sign&: &&?php echo $listInfo['card_sign']?&&,
&card_id&: &&?php echo $listInfo['card_id']?&&,
&card_type&: &&?php echo $listInfo['card_type']?&&,
&time_stamp&: &&?php echo $listInfo['time_stamp']?&&,
&nonce_str&: &&?php echo $listInfo['nonce_str']?&&
function(res) {
alert(res.err_msg + res.choose_card_info);
$(&#showInfo&).empty().append(res.err_msg + res.choose_card_info);
if (typeof WeixinJSBridge === &undefined&) {
document.addEventListener('WeixinJSBridgeReady', readyFunc, false);
readyFunc();
5. [代码]创建卡券&&&&
$kqinfo = array(&card& =& array());
$kqinfo['card']['card_type'] = 'GENERAL_COUPON';
$kqinfo['card']['general_coupon'] = array('base_info' =& array(), 'default_detail' =& array());
$kqinfo['card']['general_coupon']['base_info']['logo_url'] = 'URL';
$kqinfo['card']['general_coupon']['base_info']['code_type'] = 'CODE_TYPE_QRCODE';
$kqinfo['card']['general_coupon']['base_info']['brand_name'] = '';
$kqinfo['card']['general_coupon']['base_info']['title'] = '测试卡券';
$kqinfo['card']['general_coupon']['base_info']['color'] = 'Color030';
$kqinfo['card']['general_coupon']['base_info']['notice'] = '测试测试测试';
$kqinfo['card']['general_coupon']['base_info']['description'] = '这是一张优惠券';
$kqinfo['card']['general_coupon']['base_info']['date_info']['type'] = 1;
$kqinfo['card']['general_coupon']['base_info']['date_info']['begin_timestamp'] = time();
$kqinfo['card']['general_coupon']['base_info']['date_info']['end_timestamp'] = time() + 100 * 24 * 3600;
$kqinfo['card']['general_coupon']['base_info']['sku']['quantity'] = 100000;
$kqinfo['card']['general_coupon']['default_detail'] = '测试数据n测试数据n测试数据';
//var_dump($kqinfo);
//$kqinfo = json_encode($kqinfo);
$kqinfo = C::enJson($kqinfo);
//print_r( $kqinfo);
//$resultData = $wx-&wxCardCreated($kqinfo);
以上所述就是本文的全部内容,希望大家能够喜欢。
Copyright &
All Rights Reserved &&&&&&

我要回帖

更多关于 行政行为生效规则 的文章

 

随机推荐