WeChat.php 2.23 KB
<?php
defined('IN_IA') or exit('Access Denied');
require_once IA_ROOT . '/addons/zh_cjdianc/inc/func/Http.php';
class WeChat
{
	const BASE_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
	const WX_QRCODE_URL = "https://api.weixin.qq.com/wxa/getwxacodeunlimit";
	const GET_OPENID_URL = "https://api.weixin.qq.com/sns/jscode2session";

	/**
	 * @param $URL
	 * @param $data
	 * @return mixed
	 */
	static function httpPost($URL, $data)
	{
		$postData = json_encode($data);
		$data = Http::httpPost($URL, $postData);
		return $data;
	}

	/**
	 * @param $URL
	 * @return mixed
	 */
	static function httpGet($URL)
	{
		$data = Http::httpGet($URL);
		return $data;
	}

	/**
	 * @param $uniacId
	 * @return null
	 */
	static function getBaseAccessToken($uniacId)
	{
		$res = pdo_get('cjdc_system',array('uniacid' => $uniacId));
		$appid = $res['appid'];
		$secret = $res['appsecret'];

		$url = self::BASE_ACCESS_TOKEN_URL. "&appid=".$appid."&secret=".$secret;
		$data = self::httpGet($url);
		$data = json_decode($data, true);
		if ($data && isset($data['access_token'])) {
			return $data['access_token'];
		} else {
			return null;
		}

	}

	/**
	 * @param $uniacId
	 * @param $storeId
	 * @param $path
	 * @return mixed
	 */
	static function getMinaQrCode($uniacId, $storeId, $path)
	{
		$access_token = self::getBaseAccessToken($uniacId);
		$postData = array(
				"scene"	=> $storeId,
				"page"	=> $path,
				"width"	=> 400
		);
		$postData = json_encode($postData);
		$url = self::WX_QRCODE_URL."?access_token=".$access_token."";
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL,$url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_POST,1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
		$data = curl_exec($ch);
		curl_close($ch);
		return $data;
	}

	/**
	 * @param $appid
	 * @param $secret
	 * @param $code
	 * @return null
	 */
	static function getOpenIdByCode($appid, $secret, $code)
	{
		$url = self::GET_OPENID_URL."?appid=" . $appid . "&secret=" . $secret . "&js_code=" . $code . "&grant_type=authorization_code";
		$data = self::httpGet($url);
		if ($data) {
			$data = json_decode($data, true);
			return $data;
		} else {
			return null;
		}
	}
}