微信企业付款V3PHP

<?php
// +----------------------------------------------------------------------
// | ITUX.CN
// +----------------------------------------------------------------------
// | Licensed 此软件并不是自由软件,未经许可不能去掉ITUX相关版权
// +----------------------------------------------------------------------
namespace addons\gaga\library\cqrs\libs;

use WeChatPay\Builder;
use WeChatPay\Crypto\Rsa;
use WeChatPay\Util\PemUtil;

//微信企业付款接口sdk
class WxpayTransferBatches
{
    /**
     * @var
     */
    protected $instance;

    protected $config;

    /**
     * WechatService constructor.
     * @param $config
     */
    public function __construct(array $config)
    {
        $this->config = $config;
    }

    /**
     * @return self
     * @author xaboy
     * @day 2020-04-24
     */
    public static function create($config)
    {
        return new self($config);
    }

    /**
     * @return
     * @author xaboy
     * @day 2020-04-20
     */
    public function getInstance()
    {
        // 商户号
        $merchantId = $this->config['mch_id'];

        // 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
        //$merchantPrivateKeyFilePath = 'file://'.$this->config['payment']['key_path'];
        $merchantPrivateKeyFilePath = 'file://' . ROOT_PATH . '/public/' . $this->config['apiclient_key'];
        $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);

        // 「商户API证书」的「证书序列号」
        $merchantCertificateSerial = $this->config['merchantCertificateSerial'];

        // 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
        $platformCertificateFilePath = 'file://' . $this->config['platformCertificateFilePath'];;
        $platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC);

        // 从「微信支付平台证书」中获取「证书序列号」
        $platformCertificateSerial = PemUtil::parseCertificateSerialNo($platformCertificateFilePath);
        // 构造一个 APIv3 客户端实例
        $instance = Builder::factory([
            'mchid' => $merchantId,
            'serial' => $merchantCertificateSerial,
            'privateKey' => $merchantPrivateKeyInstance,
            'certs' => [
                $platformCertificateSerial => $platformPublicKeyInstance,
            ],
        ]);
        return $instance;
    }

    public function transfer($data)
    {
        $instance = $this->getInstance();

        try {
            $resp = $instance
                ->chain('v3/transfer/batches')
                ->post(['json' => [
                    'appid' => $this->config['app_id'],
                    'out_batch_no' => $data['order_sn'],
                    'batch_name' => $data['desc'] ?? '业务退款',
                    'batch_remark' => $data['desc'] ?? '业务退款',
                    "total_amount" => $data['money'] * 100,
                    "total_num" => 1,
                    "transfer_detail_list" => [
                        [
                            'out_detail_no' => $data['order_sn'] . mt_rand(1000, 9999),
                            'transfer_amount' => $data['money'] * 100,
                            'transfer_remark' => $data['desc'] ?? '业务退款',
                            'openid' => $data['openid'],
                        ]
                    ],
                ]]);
            if ($resp->getStatusCode() == 200) {
                return array('code' => 1, 'msg' => $resp->getBody());
            } else {
                return array('code' => 0, 'msg' => $resp->getBody());
            }
        } catch (\Exception $e) {
            return array('code' => 0, 'msg' => $e->getMessage());
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉阳软件yuyangdev_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值