From 4eec331f7f18549f6be162df95a7a2a16de1e4d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=89=BF=E8=AF=BA?=
 <35088634+fxiaotao@users.noreply.github.com>
Date: Thu, 17 Oct 2024 12:01:29 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=9A=E5=95=86=E6=88=B7?=
 =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=80=85=E6=8A=95=E8=AF=892.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Complaints.php    | 144 ++++++++++++++++++++++++++++++++++++++++++++++
 ProfitSharing.php | 114 ++++++++++++++++++++++++++++++++++++
 2 files changed, 258 insertions(+)
 create mode 100644 Complaints.php
 create mode 100644 ProfitSharing.php

diff --git a/Complaints.php b/Complaints.php
new file mode 100644
index 0000000..a2b0cf5
--- /dev/null
+++ b/Complaints.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace WePayV3;
+
+use WePayV3\Contracts\BasicWePay;
+/**
+ * 普通商户消费者投诉2.0
+ * Class Complaints
+ * @package WePayV3
+ */
+class Complaints extends BasicWePay
+{
+
+    /**
+     * 查询投诉列表
+     * @param int $offset 分页开始位置
+     * @param int $limit 分页大小
+     * @param String $begin_date 开始日期
+     * @param String $end_date 结束日期
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function complaintList(int $offset = 0, int $limit = 10, String $begin_date, String $end_date)
+    {
+        $mchId = $this->config['mch_id'];
+        $pathinfo = "/v3/merchant-service/complaints-v2?limit={$limit}&offset={$offset}&begin_date={$begin_date}&end_date={$end_date}&complainted_mchid={$mchId}";
+        return  $this->doRequest('GET', $pathinfo,'', true);
+    }
+
+    /**
+     * 查询投诉详情
+     * @param String $complaint_id  被投诉单号
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function  complaintDetails(String $complaint_id)
+    {
+        $pathinfo = "/v3/merchant-service/complaints-v2/{$complaint_id}";
+        return $this->doRequest('GET', $pathinfo,'', true);
+    }
+
+    /**
+     * 查询投诉协商历史
+     * @param String $complaint_id  被投诉单号
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function negotiationHistory(String $complaint_id)
+    {
+        $pathinfo = "/v3/merchant-service/complaints-v2/{$complaint_id}/negotiation-historys";
+        return $this->doRequest('GET', $pathinfo,'', true);
+    }
+
+    /**
+     * 创建投诉通知回调地址
+     * @param String $url 回调通知地址
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function CreateComplaintsNotify(String $url)
+    {
+        return $this->doRequest('POST', '/v3/merchant-service/complaint-notifications', json_encode(['url' => $url],JSON_UNESCAPED_UNICODE), true);
+
+    }
+
+    /**
+     * 查询投诉通知回调地址
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function queryComplaintsNotify()
+    {
+        return $this->doRequest('GET', '/v3/merchant-service/complaint-notifications', '', true);
+
+    }
+
+    /**
+     * 更新投诉通知回调地址
+     * @param String $url 回调通知地址
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function updateComplaintsNotify(String $url){
+        return $this->doRequest('PUT', '/v3/merchant-service/complaint-notifications', json_encode(['url' => $url],JSON_UNESCAPED_UNICODE), true);
+    }
+
+    /**
+     * 删除投诉通知回调地址
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function deleteComplaintsNotify(){
+        return $this->doRequest('DELETE', '/v3/merchant-service/complaint-notifications', '', true);
+    }
+
+    /**
+     * 回复投诉
+     * @param String $complaint_id 被投诉单号
+     * @param String $content 回复内容
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function replyInfo(String $complaint_id, array $content)
+    {
+        $content['complainted_mchid'] = $this->config['mch_id'];
+        $pathinfo = "/v3/merchant-service/complaints-v2/{$complaint_id}/response";
+        return $this->doRequest('POST', $pathinfo, json_encode($content,JSON_UNESCAPED_UNICODE), true);
+    }
+
+    /**
+     * 反馈处理完成
+     * @param string $complaint_id 被投诉单号
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function completeComplaints(string $complaint_id)
+    {
+        $mchId = $this->config['mch_id'];
+        $pathinfo = "/v3/merchant-service/complaints-v2/{$complaint_id}/complete";
+        return $this->doRequest('POST', $pathinfo, json_encode(['complainted_mchid' => $mchId],JSON_UNESCAPED_UNICODE),true);
+    }
+
+    /**
+     * 图片请求接口
+     * @param $pathinfo
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function downLoadImg(string $pathinfo)
+    {
+        return $this->doRequest('GET', $pathinfo, '',true,false);
+    }
+    /**
+     * 图片上传接口
+     * @param $imginfo
+     * @return array|string
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function uploadImg(array $imginfo)
+    {
+        return $this->doRequest('POST', '/v3/merchant-service/images/upload', json_encode($imginfo,JSON_UNESCAPED_UNICODE),true);
+    }
+
+}
\ No newline at end of file
diff --git a/ProfitSharing.php b/ProfitSharing.php
new file mode 100644
index 0000000..aa2e405
--- /dev/null
+++ b/ProfitSharing.php
@@ -0,0 +1,114 @@
+<?php
+
+// +----------------------------------------------------------------------
+// | WeChatDeveloper
+// +----------------------------------------------------------------------
+// | 版权所有 2014~2024 ThinkAdmin [ thinkadmin.top ]
+// +----------------------------------------------------------------------
+// | 官方网站: https://thinkadmin.top
+// +----------------------------------------------------------------------
+// | 开源协议 ( https://mit-license.org )
+// | 免责声明 ( https://thinkadmin.top/disclaimer )
+// +----------------------------------------------------------------------
+// | gitee 代码仓库:https://gitee.com/zoujingli/WeChatDeveloper
+// | github 代码仓库:https://github.com/zoujingli/WeChatDeveloper
+// +----------------------------------------------------------------------
+
+namespace WePayV3;
+
+use WePayV3\Contracts\BasicWePay;
+
+/**
+ * 普通商户商家分账
+ * Class Profitsharing
+ * @package WePayV3
+ */
+class ProfitSharing extends BasicWePay
+{
+    /**
+     * 请求分账
+     * @param array $options
+     * @return array
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function create(array $options)
+    {
+        $options['appid'] = $this->config['appid'];
+        return $this->doRequest('POST', '/v3/profitsharing/orders', json_encode($options, JSON_UNESCAPED_UNICODE), true);
+    }
+
+
+    /**
+     * 查询分账结果
+     * @param string $outOrderNo 商户分账单号
+     * @param string $transactionId 微信订单号
+     * @return array
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function query(string $outOrderNo, string $transactionId)
+    {
+        $pathinfo = "/v3/profitsharing/orders/{$outOrderNo}?&transaction_id={$transactionId}";
+        return $this->doRequest('GET', $pathinfo, '', true);
+    }
+
+    /**
+     * 解冻剩余资金
+     * @param array $options
+     * @return array
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function unfreeze(array $options)
+    {
+        return $this->doRequest('POST', '/v3/profitsharing/orders/unfreeze', json_encode($options, JSON_UNESCAPED_UNICODE), true);
+    }
+
+    /**
+     * 查询剩余待分金额
+     * @param string $transactionId 微信订单号
+     * @return array
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function amounts(string $transactionId)
+    {
+        $pathinfo = "/v3/profitsharing/transactions/{$transactionId}/amounts";
+        return $this->doRequest('GET', $pathinfo, '', true);
+    }
+
+    /**
+     * 添加分账接收方
+     * @param array $options
+     * @return array
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function addReceiver(array $options)
+    {
+        $options['appid'] = $this->config['appid'];
+        if (isset($options['name'])) {
+            $options['name'] = $this->rsaEncode($options['name']);
+        }
+        return $this->doRequest('POST', "/v3/profitsharing/receivers/add", json_encode($options, JSON_UNESCAPED_UNICODE), true);
+    }
+
+    /**
+     * 删除分账接收方
+     * @param array $options
+     * @return array
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function deleteReceiver(array $options)
+    {
+        $options['appid'] = $this->config['appid'];
+        return $this->doRequest('POST', "/v3/profitsharing/receivers/delete", json_encode($options, JSON_UNESCAPED_UNICODE), true);
+    }
+    /**
+     * 请求分账回退
+     * @param array $options
+     * @return array
+     * @throws \WeChat\Exceptions\InvalidResponseException
+     */
+    public function backspace(array $options)
+    {
+        $options['appid'] = $this->config['appid'];
+        return $this->doRequest('POST', "/v3/profitsharing/return-orders", json_encode($options, JSON_UNESCAPED_UNICODE), true);
+    }
+}