1、首先下载微信支付官方sdk
2、在WxPay.Data.php添加类
/**
*
* 企业付款到零钱接口调用结果类
*
*/
class WxTransfersResults extends WxPayResults{
/**
* 将xml转为array
* @param WxPayConfigInterface $config
* @param string $xml
* @return WxPayNotifyResults
* @throws WxPayException
*/
public static function Init($config, $xml)
{
$obj = new self();
$obj->FromXml($xml);
//失败则直接返回失败
if($obj->values['return_code'] != 'SUCCESS') {
foreach ($obj->values as $key => $value) {
#除了return_code和return_msg之外其他的参数存在,则报错
if($key != "return_code" && $key != "return_msg"){
return false;
}
}
return $obj->GetValues();
}
return $obj->GetValues();
}
}
/**
*
* 企业付款到零钱查询输入对象
*
*/
class WxPayGettransferinfo extends WxPayDataBaseSignMd5
{
/**
* 设置微信分配的公众账号ID
* @param string $value
**/
public function SetAppid($value)
{
$this->values['appid'] = $value;
}
/**
* 获取微信分配的公众账号ID的值
* @return 值
**/
public function GetAppid()
{
return $this->values['appid'];
}
/**
* 判断微信分配的公众账号ID是否存在
* @return true 或 false
**/
public function IsAppidSet()
{
return array_key_exists('appid', $this->values);
}
/**
* 设置微信支付分配的商户号
* @param string $value
**/
public function SetMch_id($value)
{
$this->values['mch_id'] = $value;
}
/**
* 获取微信支付分配的商户号的值
* @return 值
**/
public function GetMch_id()
{
return $this->values['mch_id'];
}
/**
* 判断微信支付分配的商户号是否存在
* @return true 或 false
**/
public function IsMch_idSet()
{
return array_key_exists('mch_id', $this->values);
}
/**
* 设置随机字符串,不长于32位。推荐随机数生成算法
* @param string $value
**/
public function SetNonce_str($value)
{
$this->values['nonce_str'] = $value;
}
/**
* 获取随机字符串,不长于32位。推荐随机数生成算法的值
* @return 值
**/
public function GetNonce_str()
{
return $this->values['nonce_str'];
}
/**
* 判断随机字符串,不长于32位。推荐随机数生成算法是否存在
* @return true 或 false
**/
public function IsNonce_strSet()
{
return array_key_exists('nonce_str', $this->values);
}
/**
* 设置商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
* @param string $value
**/
public function SetPartner_trade_no($value)
{
$this->values['partner_trade_no'] = $value;
}
/**
* 获取商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号的值
* @return 值
**/
public function GetPartner_trade_no()
{
return $this->values['partner_trade_no'];
}
/**
* 判断商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号是否存在
* @return true 或 false
**/
public function IsPartner_trade_noSet()
{
return array_key_exists('partner_trade_no', $this->values);
}
}
3、在WxPay.Api.php中添加方法
/**
*
* 企业付款到零钱查询,WxPayGettransferinfo中partner_trade_no必填
* appid、mch_id、nonce_str不需要填入
* @param WxPayConfigInterface $config 配置对象
* @param WxPayGettransferinfo $inputObj
* @param int $timeOut
* @throws WxPayException
* @return 成功时返回,其他抛异常
*/
public static function gettransferinfo($config, $inputObj, $timeOut = 6)
{
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/gettransferinfo";
//检测必填参数
if(!$inputObj->IsPartner_trade_noSet()) {
throw new WxPayException("缺少企业付款到零钱查询接口必填参数partner_trade_no!");
}
$inputObj->SetAppid($config->GetAppId());//公众账号ID
$inputObj->SetMch_id($config->GetMerchantId());//商户号
$inputObj->SetNonce_str(self::getNonceStr());//随机字符串
//签名
$inputObj->SetSign($config);
$xml = $inputObj->ToXml();
$startTimeStamp = self::getMillisecond();//请求开始时间
$response = self::postXmlCurl($config, $xml, $url, true, $timeOut);
$result = WxTransfersResults::Init($config, $response);
self::reportCostTime($config, $url, $startTimeStamp, $result);//上报请求花费时间
return $result;
}