* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace EasyWeChat\Payment\ProfitSharing; use EasyWeChat\Payment\Kernel\BaseClient; /** * Class Client. * * @author ClouderSky */ class Client extends BaseClient { /** * {@inheritdoc}. */ protected function prepends() { return [ 'sign_type' => 'HMAC-SHA256', ]; } /** * Add profit sharing receiver. * 服务商代子商户发起添加分账接收方请求. * 后续可通过发起分账请求将结算后的钱分到该分账接收方. * * @param array $receiver 分账接收方对象,json格式 * * @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string * * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public function addReceiver(array $receiver) { $params = [ 'appid' => $this->app['config']->app_id, 'receiver' => json_encode( $receiver, JSON_UNESCAPED_UNICODE ), ]; return $this->request( 'pay/profitsharingaddreceiver', $params ); } /** * Delete profit sharing receiver. * 服务商代子商户发起删除分账接收方请求. * 删除后不支持将结算后的钱分到该分账接收方. * * @param array $receiver 分账接收方对象,json格式 * * @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string * * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public function deleteReceiver(array $receiver) { $params = [ 'appid' => $this->app['config']->app_id, 'receiver' => json_encode( $receiver, JSON_UNESCAPED_UNICODE ), ]; return $this->request( 'pay/profitsharingremovereceiver', $params ); } /** * Single profit sharing. * 请求单次分账. * * @param string $transactionId 微信支付订单号 * @param string $outOrderNo 商户系统内部的分账单号 * @param array $receivers 分账接收方列表 * * @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string * * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public function share( string $transactionId, string $outOrderNo, array $receivers ) { $params = [ 'appid' => $this->app['config']->app_id, 'transaction_id' => $transactionId, 'out_order_no' => $outOrderNo, 'receivers' => json_encode( $receivers, JSON_UNESCAPED_UNICODE ), ]; return $this->safeRequest( 'secapi/pay/profitsharing', $params ); } /** * Multi profit sharing. * 请求多次分账. * * @param string $transactionId 微信支付订单号 * @param string $outOrderNo 商户系统内部的分账单号 * @param array $receivers 分账接收方列表 * * @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string * * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public function multiShare( string $transactionId, string $outOrderNo, array $receivers ) { $params = [ 'appid' => $this->app['config']->app_id, 'transaction_id' => $transactionId, 'out_order_no' => $outOrderNo, 'receivers' => json_encode( $receivers, JSON_UNESCAPED_UNICODE ), ]; return $this->safeRequest( 'secapi/pay/multiprofitsharing', $params ); } /** * Finish profit sharing. * 完结分账. * * @param array $params * * @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string * * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public function markOrderAsFinished(array $params) { $params['appid'] = $this->app['config']->app_id; $params['sub_appid'] = null; return $this->safeRequest( 'secapi/pay/profitsharingfinish', $params ); } /** * Query profit sharing result. * 查询分账结果. * * @param string $transactionId 微信支付订单号 * @param string $outOrderNo 商户系统内部的分账单号 * * @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string * * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public function query( string $transactionId, string $outOrderNo ) { $params = [ 'sub_appid' => null, 'transaction_id' => $transactionId, 'out_order_no' => $outOrderNo, ]; return $this->request( 'pay/profitsharingquery', $params ); } }