2023-11-07 13:48:04 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace wchat\wx\V3;
|
|
|
|
|
|
|
|
|
|
use JetBrains\PhpStorm\ArrayShape;
|
|
|
|
|
use wchat\wx\SmallProgram;
|
|
|
|
|
|
|
|
|
|
class TransferBatches extends SmallProgram
|
|
|
|
|
{
|
|
|
|
|
use WxV3PaymentTait;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2025-02-17 16:26:32 +08:00
|
|
|
* @param string $transfer_scene_id
|
|
|
|
|
* @param array $transfer_scene_report_infos
|
2023-11-07 14:02:43 +08:00
|
|
|
* @param TransferDetail $detail
|
2023-11-07 13:48:04 +08:00
|
|
|
* @return array
|
|
|
|
|
*/
|
2023-11-07 16:48:59 +08:00
|
|
|
#[ArrayShape([])]
|
2025-02-17 16:26:32 +08:00
|
|
|
public function transfer(string $transfer_scene_id ,array $transfer_scene_report_infos ,TransferDetail $detail): array
|
2023-11-07 13:48:04 +08:00
|
|
|
{
|
2023-11-14 00:06:57 +08:00
|
|
|
$payConfig = $this->getPayConfig();
|
|
|
|
|
$body = [];
|
|
|
|
|
if ($payConfig->typeIsApp()) {
|
|
|
|
|
$body['appid'] = $payConfig->pay->wx->appId;
|
|
|
|
|
} else {
|
|
|
|
|
$body['appid'] = $payConfig->appId;
|
|
|
|
|
}
|
2025-02-17 16:26:32 +08:00
|
|
|
$body['out_batch_no'] = $detail->out_detail_no;
|
|
|
|
|
$body["batch_name"] = $payConfig->getBody();
|
|
|
|
|
$body["body"] = $payConfig->getBody();
|
|
|
|
|
$body["batch_remark"] = $payConfig->getBody();
|
|
|
|
|
$body["total_amount"] = $detail->transfer_amount;
|
|
|
|
|
$body["total_num"] = 1;
|
|
|
|
|
$body["transfer_scene_id"] = $transfer_scene_id;
|
|
|
|
|
$body["transfer_scene_report_infos"] = $transfer_scene_report_infos;
|
|
|
|
|
$body["transfer_detail_list"] = [$detail->toArray()];
|
|
|
|
|
|
2025-02-18 11:53:54 +08:00
|
|
|
$sign = $this->signature('POST' ,'/v3/fund-app/mch-transfer/transfer-bills' ,$json = json_encode($body ,JSON_UNESCAPED_UNICODE));
|
2025-02-17 16:26:32 +08:00
|
|
|
|
|
|
|
|
$client = $this->createClient($sign ,$json);
|
2025-02-18 11:53:54 +08:00
|
|
|
$client->post('/v3/fund-app/mch-transfer/transfer-bills');
|
2023-11-07 13:48:04 +08:00
|
|
|
$client->close();
|
|
|
|
|
|
2025-02-17 16:26:32 +08:00
|
|
|
$data = json_decode($client->getBody() ,TRUE);
|
2023-11-07 16:29:44 +08:00
|
|
|
if (json_last_error() != JSON_ERROR_NONE) {
|
2025-02-17 16:26:32 +08:00
|
|
|
return ['code' => $client->getStatusCode() ,'message' => $client->getBody()];
|
2023-11-07 16:31:30 +08:00
|
|
|
} else {
|
|
|
|
|
return $data;
|
2023-11-07 16:29:44 +08:00
|
|
|
}
|
2023-11-07 13:48:04 +08:00
|
|
|
}
|
2025-02-18 11:53:54 +08:00
|
|
|
}
|