PHP开发微信支付企业付款到零钱查询

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;
	}

猜你喜欢

转载自blog.csdn.net/u013636118/article/details/89964189