php官方微信接口大全微信支付、微信红包、微信摇一摇、微信小店

微信入口绑定,微信事件处理,微信API全部操作包含在这文件中。 内容有:微信摇一摇接口/微信多客服接口/微信支付接口/微信红包接口/微信卡券接口/微信小店接口/JSAPI

rush:PHP;"> class WxApi {
const appId = "";
const appSecret = "";
const mchid = ""; //商户号
const privatekey = ""; //私钥
public $parameters = array();
public $jsApiTicket = NULL;
public $jsApiTime = NULL;

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);
return $output;
}

/****

  • 微信带证书提交数据 - 微信红包使用
    ****/

public function wxHttpsRequestPem($url,$vars,$second=30,$aHeader=array()){
$ch = curl_init();
//超时时间
curl_setopt($ch,CURLOPT_TIMEOUT,$second);
curl_setopt($ch,1);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY,'10.206.30.98');
//curl_setopt($ch,CURLOPT_PROXYPORT,8080);
curl_setopt($ch,$url);
curl_setopt($ch,false);
curl_setopt($ch,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,CURLOPT_SSLKEY,getcwd().'/apiclient_key.pem');

curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/rootca.pem');

//第二种方式,两个文件合成一个.pem文件
//curl_setopt($ch,getcwd().'/all.pem');

if( count($aHeader) >= 1 ){
  curl_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,CURLOPT_HTTPHEADER,$aHeader);
}

curl_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,1);
curl_s<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>pt($ch,$vars);
$data = curl_exec($ch);
if($data){
  curl_close($ch);
  return $data;
}
else { 
  $error = curl_errno($ch);
  echo "call faild,errorCode:$error\n"; 
  curl_close($ch);
  return false;
}

}

/****

  • 微信获取Accesstoken 返回指定微信公众号的at信息
    ****/

public function wxAccesstoken($appId = NULL,$appSecret = NULL){
$appId = is_null($appId) ? self::appId : $appId;
$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;

$url   = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;
$result   = $this->wxHttpsRequest($url);
//print_r($result);
$jsoninfo  = json_decode($result,true);
$access_token = $jsoninfo["access_token"];

return $access_token;

}

/****

  • 微信获取ApiTicket 返回指定微信公众号的at信息
    ****/

public function wxJsApiTicket($appId = NULL,$appSecret = NULL){
$appId = is_null($appId) ? self::appId : $appId;
$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;

$url   = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$this->wxAcce<a href="https://www.jb51.cc/tag/sst/" target="_blank" class="keywords">sst</a>oken();
$result   = $this->wxHttpsRequest($url);
$jsoninfo  = json_decode($result,true);
$ticket   = $jsoninfo['ticket'];
//echo $ticket . "<br />";
return $ticket;

}

public function wxVerifyJsApiTicket($appId = NULL,$appSecret = NULL){
if(!empty($this->jsApiTime) && intval($this->jsApiTime) > time() && !empty($this->jsApiTicket)){
$ticket = $this->jsApiTicket;
}
else{
$ticket = $this->wxJsApiTicket($appId,$appSecret);
$this->jsApiTicket = $ticket;
$this->jsApiTime = time() + 7200;
}
return $ticket;
}

/****

public function wxGetUser($openId){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$wxAccesstoken."&openid=".$openId."&lang=zh_CN";
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

public function wxQrCodeTicket($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$wxAccesstoken;
$result = $this->wxHttpsRequest($url,$jsonData);
return $result;
}

/****

/****

  • 微信通过指定模板信息发送给指定用户,发送完成后返回指定JSON数据
    ****/

public function wxSendTemplate($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$wxAccesstoken;
$result = $this->wxHttpsRequest($url,$jsonData);
return $result;
}

/****

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 = urldecode(json_encode($template));
echo $jsonData;
$result = $this->wxSendTemplate($jsonData);
return $result;
}

/****

  • 微信设置OAUTH跳转URL,返回字符串信息 - ScopE = snsapi_base //验证时不返回确认页面,只能获取OPENID
    ****/

public function wxOauthBase($redirectUrl,$state = "",$appId = NULL){
$appId = is_null($appId) ? self::appId : $appId;
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_base&state=".$state."#wechat_redirect";
return $url;
}

/****

  • 微信设置OAUTH跳转URL,返回字符串信息 - ScopE = snsapi_userinfo //获取用户完整信息
    ****/

public function wxOauthUserinfo($redirectUrl,$appId = NULL){
$appId = is_null($appId) ? self::appId : $appId;
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_userinfo&state=".$state."#wechat_redirect";
return $url;
}

/****

  • 微信OAUTH跳转指定URL
    ****/

public function wxHeader($url){
header("location:".$url);
}

/****

public function wxOauthAccesstoken($code,$appId = NULL,$appSecret = NULL){
$appId = is_null($appId) ? self::appId : $appId;
$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appId."&secret=".$appSecret."&code=".$code."&grant_type=authorization_code";
$result = $this->wxHttpsRequest($url);
//print_r($result);
$jsoninfo = json_decode($result,true);
//$access_token = $jsoninfo["access_token"];
return $jsoninfo;
}

/****

  • 微信通过OAUTH的Access_Token的信息获取当前用户信息 // 只执行在snsapi_userinfo模式运行
    ****/

public function wxOauthUser($OauthAT,$openId){
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$OauthAT."&openid=".$openId."&lang=zh_CN";
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

public function wxMenuCreate($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,$jsonData);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

public function wxMenuGet(){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

public function wxMenuDelete(){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

public function wxMenuGetInfo(){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

  • 微信客服接口 - Add 添加客服人员
    ****/

public function wxServiceAdd($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfaccount/add?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信客服接口 - Update 编辑客服人员
    ****/

public function wxServiceUpdate($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfaccount/update?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信客服接口 - Delete 删除客服人员
    ****/

public function wxServiceDelete($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfaccount/del?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/***

  • 微信客服接口 - 上传头像
    ***/
    public function wxServiceUpdateCover($kf_account,$media = '') {
    $wxAccesstoken = $this->wxAccesstoken();
    //$data['access_token'] = $wxAccesstoken;
    $data['media'] = '@D:\workspace\htdocs\yky_test\logo.jpg';
    $url = "https:// api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=".$wxAccesstoken."&kf_account=".$kf_account;
    $result = $this->wxHttpsRequest($url,$data);
    $jsoninfo = json_decode($result,true);
    return $jsoninfo;
    }

/****

  • 微信客服接口 - 获取客服列表
    ****/

public function wxServiceList(){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

  • 微信客服接口 - 获取在线客服接待信息
    ****/

public function wxServiceOnlineList(){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

  • 微信客服接口 - 客服发送信息
    ****/

public function wxServiceSend($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信客服会话接口 - 创建会话
    ****/

public function wxServiceSessionAdd($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfsession/create?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信客服会话接口 - 关闭会话
    ****/

public function wxServiceSessionClose(){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfsession/close?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

  • 微信客服会话接口 - 获取会话
    ****/

public function wxServiceSessionGet($openId){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfsession/getsession?access_token=".$wxAccesstoken."&openid=" . $openId;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

  • 微信客服会话接口 - 获取会话列表
    ****/

public function wxServiceSessionList($kf_account){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfsession/getsessionlist?access_token=".$wxAccesstoken."&kf_account=" . $kf_account ;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

  • 微信客服会话接口 - 未接入会话
    ****/

public function wxServiceSessionWaitCase(){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/customservice/kfsession/getwaitcase?access_token=".$wxAccesstoken;
$result = $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result,true);
return $jsoninfo;
}

/****

  • 微信摇一摇 - 申请设备ID
    ****/

public function wxDeviceApply($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/device/applyid?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信摇一摇 - 编辑设备ID
    ****/

public function wxDeviceUpdate($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/device/update?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信摇一摇 - 本店关联设备
    ****/

public function wxDeviceBindLocation($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/device/bindlocation?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信摇一摇 - 查询设备列表
    ****/

public function wxDeviceSearch($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/device/search?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信摇一摇 - 新增页面
    ****/

public function wxPageAdd($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/page/add?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

public function wxPageUpdate($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/page/update?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

public function wxPageSearch($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/page/search?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

public function wxPageDelete($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/page/delete?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/***

/****

  • 微信摇一摇 - 配置设备与页面的关联关系
    ****/

public function wxDeviceBindPage($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/device/bindpage?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信摇一摇 - 获取摇周边的设备及用户信息
    ****/

public function wxGetShakeInfo($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/user/getshakeinfo?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/****

  • 微信摇一摇 - 以设备为维度的数据统计接口
    ****/

public function wxGetShakeStatistics($jsonData){
$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/shakearound/statistics/device?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/*****

  • 生成随机字符串 - 最长为32位字符串
    *****/
    public function wxNonceStr($length = 16,$type = FALSE) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMnopQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
    $str .= substr($chars,mt_rand(0,strlen($chars) - 1),1);
    }
    if($type == TRUE){
    return strtoupper(md5(time() . $str));
    }
    else {
    return $str;
    }
    }

/***

  • 微信商户订单号 - 最长28位字符串
    ***/

public function wxMchBillno($mchid = NULL) {
if(is_null($mchid)){
if(self::mchid == "" || is_null(self::mchid)){
$mchid = time();
}
else{
$mchid = self::mchid;
}
}
else{
$mchid = substr(addslashes($mchid),10);
}
return date("Ymd",time()).time().$mchid;
}

/***

  • 微信格式化数组变成参数格式 - 支持url加密
    ***/

public function wxSetParam($parameters){
if(is_array($parameters) && !empty($parameters)){
$this->parameters = $parameters;
return $this->parameters;
}
else{
return array();
}
}

/***

  • 微信格式化数组变成参数格式 - 支持url加密
    ***/

public function wxFormatArray($parameters = NULL,$urlencode = FALSE){
if(is_null($parameters)){
$parameters = $this->parameters;
}
$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,strlen($restr)-1);
}
return $restr;//返回字符串
}

/***

  • 微信MD5签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]
    ***/
    public function wxMd5Sign($content,$privatekey){
    try {
    if (is_null($privatekey)) {
    throw new Exception("财付通签名key不能为空!");
    }
    if (is_null($content)) {
    throw new Exception("财付通签名内容不能为空");
    }
    $signStr = $content . "&key=" . $privatekey;
    return strtoupper(md5($signStr));
    }
    catch (Exception $e)
    {
    die($e->getMessage());
    }
    }

/***

  • 微信Sha1签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]
    ***/
    public function wxSha1Sign($content){
    try {
    if (is_null($content)) {
    throw new Exception("签名内容不能为空");
    }
    //$signStr = $content;
    return sha1($content);
    }
    catch (Exception $e)
    {
    die($e->getMessage());
    }
    }

/***

  • 微信jsApi整合方法 - 通过调用方法获得jsapi数据
    ***/
    public function wxJsapiPackage(){
    $jsapi_ticket = $this->wxVerifyJsApiTicket();

// 注意 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,"url" => $url
);

// 这里参数的顺序要按照 key 值 ASCII 码升序排序
$rawString = "jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

//$rawString = $this->wxFormatArray($signPackage);
$signature = $this->wxSha1Sign($rawString);

$signPackage['signature'] = $signature;
$signPackage['rawString'] = $rawString;
$signPackage['appId'] = self::appId;

return $signPackage;
}

/***

  • 微信卡券:JSAPI 卡券Package - 基础参数没有附带任何值 - 再生产环境中需要根据实际情况进行修改
    ***/
    public function wxCardPackage($cardId,$timestamp = ''){
    $api_ticket = $this->wxVerifyJsApiTicket();
    if(!empty($timestamp)){
    $timestamp = $timestamp;
    }
    else{
    $timestamp = time();
    }

$arrays = array(self::appSecret,$timestamp,$cardId);
sort($arrays,SORT_STRING);
//print_r($arrays);
//echo implode("",$arrays)."
";
$string = sha1(implode($arrays));
//echo $string;
$resultArray['cardId'] = $cardId;
$resultArray['cardExt'] = array();
$resultArray['cardExt']['code'] = '';
$resultArray['cardExt']['openid'] = '';
$resultArray['cardExt']['timestamp'] = $timestamp;
$resultArray['cardExt']['signature'] = $string;
//print_r($resultArray);
return $resultArray;
}

/***

  • 微信卡券:JSAPI 卡券全部卡券 Package
    ***/
    public function wxCardAllPackage($cardIdArray = array(),$timestamp = ''){
    $reArrays = array();
    if(!empty($cardIdArray) && (is_array($cardIdArray) || is_object($cardIdArray))){
    //print_r($cardIdArray);
    foreach($cardIdArray as $value){
    //print_r($this->wxCardPackage($value,$openid));
    $reArrays[] = $this->wxCardPackage($value,$timestamp);
    }
    //print_r($reArrays);
    }
    else{
    $reArrays[] = $this->wxCardPackage($cardIdArray,$timestamp);
    }
    return strval(json_encode($reArrays));
    }

/***

  • 微信卡券:获取卡券列表
    ***/
    public function wxCardListPackage($cardType = "",$cardId = ""){
    //$api_ticket = $this->wxVerifyJsApiTicket();
    $resultArray = array();
    $timestamp = time();
    $nonceStr = $this->wxNoncestr();
    //$strings =
    $arrays = array(self::appId,self::appSecret,$nonceStr);
    sort($arrays,SORT_STRING);
    $string = sha1(implode($arrays));

$resultArray['app_id'] = self::appId;
$resultArray['card_sign'] = $string;
$resultArray['time_stamp'] = $timestamp;
$resultArray['nonce_str'] = $nonceStr;
$resultArray['card_type'] = $cardType;
$resultArray['card_id'] = $cardId;
return $resultArray;
}

/***

  • 将数组解析XML - 微信红包接口
    ***/
    public function wxArrayToXml($parameters = NULL){
    if(is_null($parameters)){
    $parameters = $this->parameters;
    }

if(!is_array($parameters) || empty($parameters)){
die("参数不为数组无法解析");
}

$xml = "";
foreach ($arr as $key=>$val)
{
if (is_numeric($val))
{
$xml.="<".$key.">".$val."</".$key.">";
}
else
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
$xml.="
";
return $xml;
}

/***

/***

/***

  • 微信卡券:拉取门店列表
    ***/
    public function wxBatchGet($offset = 0,$count = 0){
    $jsonData = json_encode(array('offset' => intval($offset),'count' => intval($count)));
    $wxAccesstoken = $this->wxAccesstoken();
    $url = "https://api.weixin.qq.com/card/location/batchget?access_token=" . $wxAccesstoken;
    $result = $this->wxHttpsRequest($url,true);
    return $jsoninfo;
    }

/***

/***

/***

/***

/***

/***

/***

  • 微信卡券:更改库存
    ***/
    public function wxCardModifyStock($cardId,$increase_stock_value = 0,$reduce_stock_value = 0){
    if(intval($increase_stock_value) == 0 && intval($reduce_stock_value) == 0){
    return false;
    }

$jsonData = json_encode(array("card_id" => $cardId,'increase_stock_value' => intval($increase_stock_value),'reduce_stock_value' => intval($reduce_stock_value)));

$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/card/modifystock?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}

/***

  • 微信卡券:查询用户CODE
    ***/
    public function wxCardQueryCode($code,$cardId = ''){

$jsonData = json_encode(array("code" => $code,'card_id' => $cardId ));

$wxAccesstoken = $this->wxAccesstoken();
$url = "https://api.weixin.qq.com/card/code/get?access_token=" . $wxAccesstoken;
$result = $this->wxHttpsRequest($url,true);
return $jsoninfo;
}
}

分享实例:

rush:PHP;"> if(!isset($_GET['code'])){
header("location:https://open.weixin.qq.com/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");
}
else{
$CODE = $_GET['code'];
$Info = $wx->wxOauthAccesstoken($CODE);
//print_r($Info);
$openId = $Info['openid'];

}

$signPackage = $wx->wxJsapiPackage();
?>

JSAPI接口测试 <Meta charset="UTF-8"> <Meta name="viewport" content="width=device-width,initial-scale=1.0">
rush:PHP;"> token = $token; }

public function wcCheckSignature(){
try{
if (empty($this->token)) {
throw new Exception('TOKEN is not defined!');
}

$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];

$token = $this->token;
$tmpArr = array($token,$nonce);
// use SORT_STRING rule
sort($tmpArr,SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
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();
}
else{
//valid signature,option
if($this->wcCheckSignature()){
echo $echoStr;
exit;
}
else{
exit();
}
}
}

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_POSTDATA"] : "";
if(!empty($postStr)){
libxml
disable_entity_loader(true);
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
$this->zcLog(TRUE,$postObj);

$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$MsgType = $postObj->MsgType;

if($MsgType == 'event'){//执行事件相应
$Event = $postObj->Event;
switch ($Event) {
case 'subscribe'://关注
break;
case 'unsubscribe'://取消关注
break;
case 'SCAN'://扫描
break;
case 'LOCATION'://地址
break;
case 'CLICK'://点击时间
break;
case 'VIEW'://跳转
break;
case 'card_pass_check'://卡券审核通过
break;
case 'card_not_pass_check'://卡券审核失败
break;
case 'user_get_card'://用户领取卡券
break;
case 'user_del_card'://用户删除卡券
break;
case 'user_view_card'://用户浏览会员卡
break;
case 'user_consume_card'://用户核销卡券
break;
case 'kf_create_session'://创建会话
break;
case 'kf_close_session'://关闭会话
break;
case 'kf_switch_session'://转接会话
break;
default:
break;
}
}
else{
switch ($MsgType) {
case 'text'://文本格式
break;
case 'image'://图片格式
break;
case 'voice'://声音
break;
case 'video'://视频
break;
case 'shortvideo'://小视频
break;
case 'location'://上传地理位置
break;
case 'link'://链接相应
break;
default:
break;
}
}

////////////////////////////////////////////////////////////////////
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "

%s 0 "; if(!empty( $keyword )){ $msgType = "text"; $contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); echo $resultStr; } else{ echo "Input something..."; } //////////////////////////////////////////////////////////////////// } else{ echo "暂时没有任何信息!"; exit; } }

//日志LOG
public function zcLog($errcode,$errmsg){
$this->returnAy = array();
$this->returnAy['errcode'] = $errcode;
$this->returnAy['errmsg'] = $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;
}

}

以上就是为大家分享的全部内容,希望对大家的学习有所帮助。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...