64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace app\service;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use Yansongda\Pay\Pay;
							 | 
						|||
| 
								 | 
							
								use Yansongda\Pay\Log;
							 | 
						|||
| 
								 | 
							
								use think\facade\Config;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class Alipay
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    private static $app = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    private function __construct()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    private function __clone()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 支付宝配置
							 | 
						|||
| 
								 | 
							
								     *
							 | 
						|||
| 
								 | 
							
								     * @return array
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function config(): array
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        Config::load('extra/alipay', 'alipay');
							 | 
						|||
| 
								 | 
							
								        $conf = config('alipay');
							 | 
						|||
| 
								 | 
							
								        return [
							 | 
						|||
| 
								 | 
							
								            'app_id'         => trim($conf['appId']),
							 | 
						|||
| 
								 | 
							
								            'notify_url'     => trim($conf['notify_url']),
							 | 
						|||
| 
								 | 
							
								            'return_url'     => trim($conf['return_url']) ?? trim($conf['notify_url']),
							 | 
						|||
| 
								 | 
							
								            'ali_public_key' => trim($conf['aliPubKey']),//注意 这里的是支付宝的公钥
							 | 
						|||
| 
								 | 
							
								            // 加密方式: **RSA2**
							 | 
						|||
| 
								 | 
							
								            'private_key'    => trim($conf['priKey']),
							 | 
						|||
| 
								 | 
							
								            // 使用公钥证书模式,请配置下面两个参数,同时修改ali_public_key为以.crt结尾的支付宝公钥证书路径,
							 | 
						|||
| 
								 | 
							
								            // 如(./cert/alipayCertPublicKey_RSA2.crt)
							 | 
						|||
| 
								 | 
							
								            // 'app_cert_public_key' => './cert/appCertPublicKey.crt', //应用公钥证书路径
							 | 
						|||
| 
								 | 
							
								            // 'alipay_root_cert' => './cert/alipayRootCert.crt', //支付宝根证书路径
							 | 
						|||
| 
								 | 
							
								            'log'            => [ // optional
							 | 
						|||
| 
								 | 
							
								                'file'     => './logs/alipay.log',
							 | 
						|||
| 
								 | 
							
								                'level'    => 'debug', // 建议生产环境等级调整为 info,开发环境为 debug
							 | 
						|||
| 
								 | 
							
								                'type'     => 'single', // optional, 可选 daily.
							 | 
						|||
| 
								 | 
							
								                'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
							 | 
						|||
| 
								 | 
							
								            ],
							 | 
						|||
| 
								 | 
							
								            'http'           => [ // optional
							 | 
						|||
| 
								 | 
							
								                'timeout'         => 5.0,
							 | 
						|||
| 
								 | 
							
								                'connect_timeout' => 5.0,
							 | 
						|||
| 
								 | 
							
								                // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
							 | 
						|||
| 
								 | 
							
								            ],
							 | 
						|||
| 
								 | 
							
								            //                'mode' => 'dev', // optional,设置此参数,将进入沙箱模式
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    //支付宝支付实例  单例模式
							 | 
						|||
| 
								 | 
							
								    public static function getInstance(): ?\Yansongda\Pay\Gateways\Alipay
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if (self::$app == null) {
							 | 
						|||
| 
								 | 
							
								            self::$app = Pay::alipay(self::config());
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return self::$app;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |