first commit

This commit is contained in:
2025-11-28 10:08:12 +08:00
commit 09a14bf0a3
1088 changed files with 145132 additions and 0 deletions
@@ -0,0 +1,223 @@
<?php
namespace WeChatPay\V3;
use Exception;
/**
* 商家转账服务类
* @see https://pay.weixin.qq.com/docs/merchant/products/batch-transfer-to-balance/apilist.html
*/
class TransferService extends BaseService
{
public function __construct(array $config)
{
parent::__construct($config);
}
/**
* 发起批量转账
* @param array $params 请求参数
* @return mixed {"out_batch_no":"商家批次单号","batch_id":"微信批次单号","create_time":"批次创建时间"}
* @throws Exception
*/
public function transfer(array $params)
{
$path = '/v3/transfer/batches';
$publicParams = [
'appid' => $this->appId,
];
$params = array_merge($publicParams, $params);
return $this->execute('POST', $path, $params, true);
}
/**
* 微信批次单号查询转账批次单
* @param string $batch_id 微信批次单号
* @param array $params 查询参数
* @return mixed {"transfer_batch":{},"transfer_detail_list":[]}
* @throws Exception
*/
public function transferbatch(string $batch_id, array $params){
$path = '/v3/transfer/batches/batch-id/'.$batch_id;
return $this->execute('GET', $path, $params);
}
/**
* 微信明细单号查询转账明细单
* @param string $batch_id 微信批次单号
* @param string $detail_id 微信明细单号
* @return mixed
* @throws Exception
*/
public function transferdetail(string $batch_id, string $detail_id){
$path = '/v3/transfer/batches/batch-id/'.$batch_id.'/details/detail-id/'.$detail_id;
return $this->execute('GET', $path);
}
/**
* 商家批次单号查询转账批次单
* @param string $out_batch_no 商家批次单号
* @param array $params 查询参数
* @return mixed {"transfer_batch":{},"transfer_detail_list":[]}
* @throws Exception
*/
public function transferoutbatch(string $out_batch_no, array $params){
$path = '/v3/transfer/batches/out-batch-no/'.$out_batch_no;
return $this->execute('GET', $path, $params);
}
/**
* 商家明细单号查询转账明细单
* @param string $out_batch_no 商家批次单号
* @param string $out_detail_no 商家明细单号
* @return mixed
* @throws Exception
*/
public function transferoutdetail(string $out_batch_no, string $out_detail_no){
$path = '/v3/transfer/batches/out-batch-no/'.$out_batch_no.'/details/out-detail-no/'.$out_detail_no;
return $this->execute('GET', $path);
}
/**
* 转账账单电子回单申请
* @param string $out_batch_no 商家批次单号
* @return mixed
* @throws Exception
*/
public function transferBatchReceiptApply(string $out_batch_no)
{
$path = '/v3/transfer/bill-receipt';
$params = [
'out_batch_no' => $out_batch_no
];
return $this->execute('POST', $path, $params);
}
/**
* 查询转账账单电子回单
* @param string $out_batch_no 商家批次单号
* @return mixed
* @throws Exception
*/
public function transferBatchReceiptQuery(string $out_batch_no)
{
$path = '/v3/transfer/bill-receipt/'.$out_batch_no;
return $this->execute('GET', $path);
}
/**
* 转账明细电子回单申请
* @param string $out_batch_no 商家批次单号
* @param string $out_detail_no 商家明细单号
* @return mixed
* @throws Exception
*/
public function transferDetailReceiptApply(string $out_batch_no, string $out_detail_no)
{
$path = '/v3/transfer-detail/electronic-receipts';
$params = [
'accept_type' => 'BATCH_TRANSFER',
'out_batch_no' => $out_batch_no,
'out_detail_no' => $out_detail_no
];
return $this->execute('POST', $path, $params);
}
/**
* 查询转账明细电子回单
* @param string $out_batch_no 商家批次单号
* @param string $out_detail_no 商家明细单号
* @return mixed
* @throws Exception
*/
public function transferDetailReceiptQuery(string $out_batch_no, string $out_detail_no)
{
$path = '/v3/transfer-detail/electronic-receipts';
$params = [
'accept_type' => 'BATCH_TRANSFER',
'out_batch_no' => $out_batch_no,
'out_detail_no' => $out_detail_no
];
return $this->execute('GET', $path, $params);
}
/**
* 发起转账
* @param array $params 请求参数
* @return mixed {"out_bill_no":"商户单号","transfer_bill_no":"微信转账单号","create_time":"批次创建时间","state":"单据状态","fail_reason":"失败原因","package_info":"跳转领取页面的package信息"}
* @throws Exception
*/
public function mchTransfer(array $params)
{
$path = '/v3/fund-app/mch-transfer/transfer-bills';
$publicParams = [
'appid' => $this->appId,
];
$params = array_merge($publicParams, $params);
return $this->execute('POST', $path, $params, true);
}
/**
* 撤销转账
* @param string $out_bill_no 商户单号
* @return mixed
* @throws Exception
*/
public function cancelTransfer(string $out_bill_no)
{
$path = '/v3/fund-app/mch-transfer/transfer-bills/out-bill-no/'.$out_bill_no.'/cancel';
return $this->execute('POST', $path);
}
/**
* 商户单号查询转账单
* @param string $out_bill_no 商户单号
* @return mixed
* @throws Exception
*/
public function queryTransferByOutNo(string $out_bill_no){
$path = '/v3/fund-app/mch-transfer/transfer-bills/out-bill-no/'.$out_bill_no;
return $this->execute('GET', $path);
}
/**
* 微信单号查询转账单
* @param string $transfer_bill_no 微信单号
* @return mixed
* @throws Exception
*/
public function queryTransfer(string $transfer_bill_no){
$path = '/v3/fund-app/mch-transfer/transfer-bills/transfer-bill-no/'.$transfer_bill_no;
return $this->execute('GET', $path);
}
/**
* 申请电子回单
* @param string $out_bill_no 商户单号
* @return mixed
* @throws Exception
*/
public function transferReceiptApply(string $out_bill_no)
{
$path = '/v3/fund-app/mch-transfer/elecsign/out-bill-no';
$params = [
'out_bill_no' => $out_bill_no,
];
return $this->execute('POST', $path, $params);
}
/**
* 查询电子回单
* @param string $out_bill_no 商户单号
* @return mixed
* @throws Exception
*/
public function transferReceiptQuery(string $out_bill_no)
{
$path = '/v3/fund-app/mch-transfer/elecsign/out-bill-no/'.$out_bill_no;
return $this->execute('GET', $path);
}
}