126 lines
5.0 KiB
PHP
126 lines
5.0 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | likeshop开源商城系统
|
||
// +----------------------------------------------------------------------
|
||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||
// | gitee下载:https://gitee.com/likeshop_gitee
|
||
// | github下载:https://github.com/likeshop-github
|
||
// | 访问官网:https://www.likeshop.cn
|
||
// | 访问社区:https://home.likeshop.cn
|
||
// | 访问手册:http://doc.likeshop.cn
|
||
// | 微信公众号:likeshop技术社区
|
||
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
||
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
||
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
||
// | likeshop团队版权所有并拥有最终解释权
|
||
// +----------------------------------------------------------------------
|
||
// | author: likeshop.cn.team
|
||
// +----------------------------------------------------------------------
|
||
namespace app\common\server;
|
||
|
||
use app\common\model\Pay;
|
||
use think\facade\Log;
|
||
use Yansongda\Pay\Exceptions\GatewayException;
|
||
use Yansongda\Pay\Exceptions\InvalidConfigException;
|
||
use Yansongda\Pay\Exceptions\InvalidGatewayException;
|
||
use Yansongda\Pay\Exceptions\InvalidSignException;
|
||
|
||
class YansongdaAliPayTransferServer
|
||
{
|
||
|
||
|
||
function _cache_file($key,$content, $ext = 'crt') : string
|
||
{
|
||
$path = runtime_path() . 'admin/alipay';
|
||
|
||
if (! file_exists($path)) {
|
||
mkdir($path, 0775, true);
|
||
}
|
||
|
||
$file = $path . '/' . $key . '.' . md5($content) . ".{$ext}";
|
||
|
||
if (! file_exists($file)) {
|
||
file_put_contents($file, $content);
|
||
}
|
||
|
||
return $file;
|
||
}
|
||
|
||
function config()
|
||
{
|
||
$result = (new Pay())->where([ 'code' => 'alipay' ])->find();
|
||
|
||
return [
|
||
|
||
// 支付宝异步通知地址
|
||
// 'notify_url' => '',
|
||
|
||
// 支付成功后同步通知地址
|
||
// 'return_url' => '',
|
||
|
||
// 支付宝公钥地址 新版已使用证书方式
|
||
// 'ali_public_key' => "",
|
||
|
||
// 支付宝分配的 APPID
|
||
'app_id' => $result['config']['app_id'] ?? '',
|
||
|
||
'sign_type' => 'RSA2',
|
||
|
||
//商户私钥地址(默认沙箱通用私钥,如需调试线上环境请换成线上的私钥:https://docs.open.alipay.com/291/106103/)
|
||
'private_key' => $result['config']['private_key'] ?? '',
|
||
|
||
// 应用公钥证书路径
|
||
'app_cert_public_key' => $this->_cache_file('app_cert', $result['config']['app_cert'] ?? ''),
|
||
|
||
// 支付宝根证书路径
|
||
'alipay_root_cert' => $this->_cache_file('ali_root_cert', $result['config']['ali_root_cert'] ?? ''),
|
||
|
||
// 公钥证书
|
||
'ali_public_key' => $this->_cache_file('ali_public_cert', $result['config']['ali_public_cert'] ?? ''),
|
||
|
||
// 日志
|
||
'log' => [
|
||
'file' => runtime_path() . 'log/yansongda/log',
|
||
],
|
||
|
||
// optional,设置此参数,将进入沙箱模式
|
||
// 'mode' => 'dev',
|
||
];
|
||
}
|
||
|
||
function shopWithdrawTransfer($ShopWithdrawal)
|
||
{
|
||
try {
|
||
if ($ShopWithdrawal['left_amount'] > 100000000) {
|
||
return '支付宝在线转账最高金额:100000000';
|
||
}
|
||
|
||
if ($ShopWithdrawal['left_amount'] < 0.1) {
|
||
return '支付宝在线转账最低金额:0.1';
|
||
}
|
||
|
||
$order = [
|
||
'out_biz_no' => $ShopWithdrawal['sn'],
|
||
'product_code' => 'TRANS_ACCOUNT_NO_PWD',
|
||
'trans_amount' => $ShopWithdrawal['left_amount'],
|
||
'biz_scene' => 'DIRECT_TRANSFER',
|
||
'remark' => '提现到账',
|
||
'payee_info' => [
|
||
// 提现人支付宝
|
||
'identity' => $ShopWithdrawal['alipay']['account'] ?? '',
|
||
'identity_type' => 'ALIPAY_LOGON_ID',
|
||
// 提现人真实姓名
|
||
'name' => $ShopWithdrawal['alipay']['username'] ?? '',
|
||
]
|
||
];
|
||
|
||
$result = \Yansongda\Pay\Pay::alipay($this->config())->transfer($order);
|
||
|
||
return (isset($result['code']) && $result['code'] == 10000) ? : ($result['sub_msg'] ?? '支付宝提现失败');
|
||
} catch (GatewayException|InvalidSignException|InvalidConfigException|InvalidGatewayException $e) {
|
||
return $e->raw['alipay_fund_trans_uni_transfer_response']['sub_msg'] ?? $e->getMessage();
|
||
} catch (\Throwable $e) {
|
||
return '支付宝提现错误';
|
||
}
|
||
}
|
||
} |