<?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());
}
}
}
微信企业付款V3PHP
于 2023-01-06 16:51:22 首次发布