208 lines
4.7 KiB
PHP
208 lines
4.7 KiB
PHP
<?php
|
||
|
||
namespace core\pay;
|
||
|
||
use core\exception\PayException;
|
||
use core\loader\Storage;
|
||
use Psr\Http\Message\MessageInterface;
|
||
use Yansongda\Supports\Collection;
|
||
|
||
/**
|
||
* 文件管理驱动类
|
||
* Class BasePay
|
||
*/
|
||
abstract class BasePay extends Storage
|
||
{
|
||
protected $config;//配置
|
||
|
||
/**
|
||
* 初始化
|
||
* @param array $config
|
||
* @return void
|
||
*/
|
||
protected function initialize(array $config = [])
|
||
{
|
||
|
||
}
|
||
|
||
/**
|
||
* 网页支付
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function web(array $params);
|
||
|
||
/**
|
||
* 手机网站支付
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function wap(array $params);
|
||
|
||
/**
|
||
* app支付
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function app(array $params);
|
||
|
||
/**
|
||
* 小程序支付
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function mini(array $params);
|
||
|
||
/**
|
||
* 付款码支付
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function pos(array $params);
|
||
|
||
/**
|
||
* 扫码支付
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function scan(array $params);
|
||
|
||
/**
|
||
* 转账
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function transfer(array $params);
|
||
|
||
/**
|
||
* 公众号支付
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function mp(array $params);
|
||
|
||
/**
|
||
* 支付关闭
|
||
* @param string $out_trade_no
|
||
* @return mixed
|
||
*/
|
||
abstract protected function close(string $out_trade_no);
|
||
|
||
/**
|
||
* 退款
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function refund(array $params);
|
||
|
||
/**
|
||
* 支付通知
|
||
* @param string $action
|
||
* @param callable $callback
|
||
* @return mixed
|
||
*/
|
||
abstract protected function notify(string $action, callable $callback);
|
||
|
||
/**
|
||
* 查询支付订单
|
||
* @param array $params
|
||
* @return mixed
|
||
*/
|
||
abstract protected function getOrder(array $params);
|
||
|
||
/**
|
||
* 查询退款订单
|
||
* @param string $out_trade_no
|
||
* @param string|null $refund_no
|
||
* @return mixed
|
||
*/
|
||
abstract protected function getRefund(string $out_trade_no, ?string $refund_no);
|
||
|
||
/**
|
||
* 查询转账订单
|
||
* @param string $transfer_no
|
||
* @return mixed
|
||
*/
|
||
abstract protected function getTransfer(string $transfer_no);
|
||
|
||
/**
|
||
* 初始化
|
||
* @param array $config
|
||
* @param string $type
|
||
* @return mixed
|
||
*/
|
||
protected function payConfig(array $config, string $type)
|
||
{
|
||
return array_merge(
|
||
[
|
||
'logger' => [
|
||
'enable' => true,
|
||
'file' => root_path('runtime') . 'paylog' . DIRECTORY_SEPARATOR . date('Ym') . DIRECTORY_SEPARATOR . date('d') . '.log',
|
||
'level' => env('app_debug') ? 'debug' : 'info', // 建议生产环境等级调整为 info,开发环境为 debug
|
||
'type' => 'single', // optional, 可选 daily.
|
||
'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
|
||
],
|
||
'http' => [ // optional
|
||
'timeout' => 5.0,
|
||
]
|
||
],
|
||
[
|
||
$type => [
|
||
'default' => $config
|
||
]
|
||
]
|
||
|
||
|
||
);
|
||
}
|
||
|
||
public function returnFormat($param)
|
||
{
|
||
if ($param instanceof MessageInterface) {
|
||
$return_value = $param->getBody()->getContents();
|
||
} else if ($param instanceof Collection) {
|
||
$return_value = $param->all();
|
||
} else {
|
||
$return_value = $param;
|
||
}
|
||
if(isset($return_value['code'])){
|
||
throw new PayException($return_value['message']);
|
||
}
|
||
return $return_value;
|
||
}
|
||
|
||
/**
|
||
* 解析退款返回数据并解析
|
||
* @param $our_trade_no
|
||
* @param $refund_no
|
||
* @param $status
|
||
* @param int $success_time
|
||
* @param string $reason
|
||
* @return array
|
||
*/
|
||
public function getRefundData($our_trade_no, $refund_no, $status, $success_time = 0, $reason = '')
|
||
{
|
||
return [
|
||
'our_trade_no' => $our_trade_no,
|
||
'refund_no' => $refund_no,
|
||
'status' => $status,
|
||
'success_time' => $success_time,
|
||
'reason' => $reason
|
||
];
|
||
}
|
||
|
||
/**
|
||
* 获取转账数据并解析
|
||
* @param $transfer_no
|
||
* @param $status
|
||
* @param $reason
|
||
* @return void
|
||
*/
|
||
public function getTransferData($transfer_no, $status, $reason)
|
||
{
|
||
|
||
}
|
||
|
||
|
||
}
|