| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace app\common\service;
- use think\facade\Db;
- use think\facade\Log;
- abstract class BasePaymentService
- {
- // 支付配置
- protected $config;
- // 支付方式
- protected $payMethod;
- // 支付平台配置
- protected $payConfig;
- /**
- * 初始化支付服务
- */
- public function __construct($payMethod, $payConfigId = 0)
- {
- $this->payMethod = $payMethod;
- // 获取支付配置
- $this->payConfig = $this->getPayConfig($payMethod, $payConfigId);
- if (!$this->payConfig) {
- throw new \Exception('支付配置不存在或已禁用');
- }
- // 初始化支付平台配置
- $this->initConfig();
- }
- /**
- * 获取支付配置
- */
- public function getPayConfig($payMethod, $payConfigId = 0)
- {
- $query = Db::table('ba_pay_config')
- ->where('type', $payMethod == 'wechat' ? 1 : 2)
- ->where('status', 1);
- if ($payConfigId > 0) {
- $query->where('id', $payConfigId);
- }
- return $query->order('id', 'desc')->find();
- }
- /**
- * 初始化配置(子类实现)
- */
- abstract protected function initConfig();
- /**
- * 生成支付二维码
- */
- abstract public function createQrCode($orderNo, $amount, $subject, $body = '');
- /**
- * 处理支付回调
- */
- abstract public function handleNotify($input);
- /**
- * 查询支付订单
- */
- abstract public function queryOrder($orderNo);
- /**
- * 验证签名
- */
- abstract protected function verifySign($data, $sign);
- /**
- * 生成签名
- */
- abstract protected function generateSign($data);
- /**
- * 记录支付日志
- */
- protected function log($message, $data = [], $level = 'info')
- {
- $logData = [
- 'message' => $message,
- 'data' => $data,
- 'pay_method' => $this->payMethod,
- 'time' => date('Y-m-d H:i:s')
- ];
- Log::write("支付服务: " . json_encode($logData), $level);
- }
- }
|