diff --git a/wx/V3/WxV3Transfer.php b/wx/V3/WxV3Transfer.php index 2bfbfed..ab8878e 100644 --- a/wx/V3/WxV3Transfer.php +++ b/wx/V3/WxV3Transfer.php @@ -12,18 +12,6 @@ class WxV3Transfer extends SmallProgram { use WxV3PaymentTait; - private ?string $appid; - private ?string $out_bill_no; - private ?string $transfer_scene_id; - private ?string $openid; - private ?int $transfer_amount; - private ?string $user_name; - private ?string $transfer_remark; - private ?string $notify_url; - private ?string $user_recv_perception; - private ?array $transfer_scene_report_infos; - - /** * @param TransferDetail $detail * @return array<'out_bill_no', 'transfer_bill_no', 'create_time', 'state'> diff --git a/wx/V3/WxV3Withdrawal.php b/wx/V3/WxV3Withdrawal.php index 1213e7c..c85bd80 100644 --- a/wx/V3/WxV3Withdrawal.php +++ b/wx/V3/WxV3Withdrawal.php @@ -66,4 +66,34 @@ class WxV3Withdrawal extends SmallProgram } + + /** + * @param TransferDetail $detail + * @return array<'out_bill_no', 'transfer_bill_no', 'create_time', 'state'> + * @throws Exception + */ + #[ArrayShape([])] + public function transfer(TransferDetail $detail): array + { + $payConfig = $this->getPayConfig(); + $body = $detail->toArray(); + if ($payConfig->typeIsApp()) { + $body['appid'] = $payConfig->pay->wx->appId; + } else { + $body['appid'] = $payConfig->appId; + } + $sign = $this->signature('POST', '/v3/fund-app/mch-transfer/transfer-bills', $json = json_encode($body, JSON_UNESCAPED_UNICODE)); + + $client = $this->createClient($sign, $json); + $client->post('/v3/fund-app/mch-transfer/transfer-bills'); + $client->close(); + + Kiri::getLogger()->println($client->getBody()); + + if ($client->getStatusCode() == 200) { + return json_decode($client->getBody(), TRUE); + } + throw new Exception('转账申请发起失败'); + } + }