自定义调用和请求

少数情况使用本文档,一般情况下根据 微信公众号微信小程序企业微信微信支付里面的操作示例进行操作

实例化

默认实例化微信公众号和微信小程序(两者通用)

$instance = zxf\Facade\Wechat::defaultScene($driver);

实例化企业微信

$instance = zxf\Facade\Wechat::workScene($driver);

实例化服务端推送(收/发)消息

$instance = zxf\Facade\Wechat::receiveScene($driver);

发送Http请求

$url 可以是完整的url,也可以是url的一部分
以微信此文档为例:获取用户基本信息(UnionID机制)
$url 使用完整URL:
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
$url 使用不含前缀和token的URL:「在发送Http请求的过程中会自动处理token和请求前缀等参数」
cgi-bin/user/info/batchget

Post请求

/**
 * @param string       $url       请求地址 eg:cgi-bin/user/info/batchget
 * @param array|string $data      请求的body参数 eg:['limit'=>10]
 * @param array        $urlParams 拼接在url中的参数 eg:['user_id'=>1]
 */
$instance->post(string $url = "", array|string $data = [], array $urlParams = []);

Post(取消json格式)请求

$instance->url($url)->post($data,false);

Get请求

/**
 * @param string       $url       请求地址 eg:cgi-bin/user/info/batchget
 * @param array|string $data      请求的body参数 eg:['limit'=>10]
 * @param array        $urlParams 拼接在url中的参数 eg:['user_id'=>1]
 */
$instance->url($url)->get(string $url = "", array|string $data = [], array $urlParams = []);

操作 AccessToken

 

获取token

// $refreshToken : 是否强制刷新token
$instance->getAccessToken(bool $refreshToken = false);

手动设置token

$instance->setAccessToken(```string $accessToken = "", int $expiresIn = 7100);

清理删除 AccessToken

$instance->delAccessToken();

扩展

如果需要包含请求头Wechatpay-Serial

$instance->withHeaderSerial(true);

Download文件

$instance->download($url = "", $savePath = "", array $params = []);

 

直接调用http上传文件

$instance->httpUpload(string $url = "", string $filePath = '', ?array $urlParams = []);

 

自定义调用操作

$instance->customCallback(function($wechat){
    // eg:发送自定义的http 请求
	// @see: http://www.0l0.net/docs/doc/2_14
	$wechat->http->setParams($data, 'json')->patch($url);
	
	// eg:自定义缓存
	// @see: http://www.0l0.net/docs/doc/2_33
	$wechat->cache->get('cache_name',$default);
})

添加需要重新获取token请求的状态码

sdk 中内置了几个判断token过期需要重新获取token的状态码,但是难免有其他需要重新刷新token的状态码需要手动添加进去
// eg:$code = ['40014','40001'];
$instance->addTryAgainCode(array $code = []);