WechatFactory.php 2.8 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 微信工厂类:微信相关操作,如公众号授权、小程序授权、微信支付等功能
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Factories
 * @package   App\Factories
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年5月6日10:44:56
 * @copyright 2019-2020 Richer (http://www.umu888.com)
 * @license   http://www.xxxxxx.com License
 * @link      http://www.xxxxxx.com
 */
namespace App\Factories;

use App\Factories\Wechat\Mini;
use App\Factories\Wechat\Official;
use App\Factories\Wechat\Payment;
use Yansongda\LaravelPay\Facades\Pay;

/**
 * Class WechatFactory
 *
 * @category  App\Factories
 * @package   App\Factories
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年5月6日10:44:56
 * @copyright 2019-2020 Richer (http://www.umu888.com)
 * @license   http://www.xxxxxx.com License
 * @link      http://www.xxxxxx.com
 */
class WechatFactory
{
    use Official, Mini, Payment;

    private $payment;//微信支付

    private $official;//公众号

    private $mini;//小程序

    private $errMsg;//错误信息

    public function __construct()
    {
//        $this->payment  = app('wechat.payment');
        $this->official = app('wechat.official_account');
        $this->mini     = app('wechat.mini_program');
    }

    /**
     * 获取错误信息
     *
     * @return mixed
     */
    public function getErrMessage()
    {
        return $this->errMsg;
    }

    /**
     * 账户转账
     *
     * @param $partner_trade_no
     * @param $openid
     * @param int $amount
     * @param string $desc
     */
    public function transfer($partner_trade_no, $openid, $amount = 0, $desc = '帐户提现', $type = 'miniapp')
    {
        $order = [
            'partner_trade_no' => $partner_trade_no,  //商户订单号
            'openid'        => $openid,               //收款人的openid
            'check_name'    => 'NO_CHECK',            //NO_CHECK:不校验真实姓名\FORCE_CHECK:强校验真实姓名
            // 're_user_name'=>'张三',              //check_name为 FORCE_CHECK 校验实名的时候必须提交
            'amount'        => $amount,                       //企业付款金额,单位为分
            'desc'          => $desc,                  //付款说明
            'type'          => $type, // 如果您需要通过 APP/小程序 的商户账号appid进行转账,请传入参数:['type' => 'app']/['type' => 'miniapp']
            'spbill_create_ip' => request()->ip(), // 如果您在队列中使用,请自行传参 spbill_create_ip。
        ];

        $result = Pay::wechat()->transfer($order);
    }
}