144 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace bw\lakala;
 | 
						|
 | 
						|
/**
 | 
						|
 * 拉卡拉服务工厂
 | 
						|
 * @package bw\lakala
 | 
						|
 * @author 焦钰锟
 | 
						|
 * @date 2025/08/06
 | 
						|
 *
 | 
						|
 */
 | 
						|
class LakalaService
 | 
						|
{
 | 
						|
    //编写单例模式
 | 
						|
    private static $instance;
 | 
						|
    private $config;
 | 
						|
    private $lakalaconfig;
 | 
						|
    private $plantform_data;
 | 
						|
 | 
						|
    private $sm4 = 'none';
 | 
						|
 | 
						|
    private $host_pro = 'https://s2.lakala.com';
 | 
						|
    private $host_test = 'https://test.wsmsd.cn/sit';
 | 
						|
 | 
						|
 | 
						|
    private $v3_acc_busi_fields = null;
 | 
						|
 | 
						|
 | 
						|
    public function getClientIp()
 | 
						|
    {
 | 
						|
        return request()->ip();
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    private function __construct()
 | 
						|
    {
 | 
						|
        $this->init();
 | 
						|
    }
 | 
						|
    private function __clone()
 | 
						|
    {
 | 
						|
        return;
 | 
						|
    }
 | 
						|
    public static function getInstance()
 | 
						|
    {
 | 
						|
        if (!(self::$instance instanceof self)) {
 | 
						|
            self::$instance = new self();
 | 
						|
        }
 | 
						|
        return self::$instance;
 | 
						|
    }
 | 
						|
    public function init()
 | 
						|
    {
 | 
						|
 | 
						|
 | 
						|
        $site = config("site");
 | 
						|
        $lakala_test_switch = config("site.lakala_test_switch");
 | 
						|
 | 
						|
 | 
						|
        $this->plantform_data["lakala_apply_name"] = $site["lakala_apply_name"];
 | 
						|
 | 
						|
        $this->plantform_data["wx_miniapp_id"] =  config("site.wx_miniapp_id");
 | 
						|
 | 
						|
        if(config("site.lakala_test_switch")){
 | 
						|
            $this->plantform_data["lakala_partner_id"] = $site["test_lakala_partner_id"];
 | 
						|
 | 
						|
            //沙箱测试环境
 | 
						|
            $this->config = [
 | 
						|
                'app_id' => $site["test_lakala_apply_id"],
 | 
						|
                'serial_no' =>$site["test_lakala_serial_no"],
 | 
						|
                'sm4_key' =>$site["test_lakala_sm4_secret_key"],
 | 
						|
                //当前根目录下放置公钥文件
 | 
						|
                "merchant_private_key_path" => ROOT_PATH . 'public' . $site["test_lakala_app_private_key"],
 | 
						|
                "lkl_certificate_path"=> ROOT_PATH . 'public' . $site["test_lakala_plantform_public_k"],
 | 
						|
            ];
 | 
						|
            if($this->config["sm4_key"]) $this->sm4 = $site["test_lakala_encryption_mode"];
 | 
						|
 | 
						|
        }else{
 | 
						|
            $this->plantform_data["lakala_partner_id"] = $site["lakala_partner_id"];
 | 
						|
            //正式环境
 | 
						|
            $this->config = [
 | 
						|
                'app_id' => $site["lakala_apply_id"],
 | 
						|
                'serial_no' => $site["lakala_serial_no"],
 | 
						|
                'sm4_key' =>$site["lakala_sm4_secret_key"],
 | 
						|
                "merchant_private_key_path" => ROOT_PATH . 'public' . $site["lakala_app_private_key"],
 | 
						|
                "lkl_certificate_path"=> ROOT_PATH . 'public' . $site["lakala_plantform_public_key"],
 | 
						|
            ];
 | 
						|
            if($this->config["sm4_key"]) $this->sm4 = $site["lakala_encryption_mode"];
 | 
						|
 | 
						|
        }
 | 
						|
        $this->config["app_debug"] = $lakala_test_switch ? true:false;
 | 
						|
        $this->config["host_pro"] = $this->host_pro;
 | 
						|
        $this->config["host_test"] = $this->host_test;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    /**v2api 接口
 | 
						|
     * @param $api_model
 | 
						|
     * @return \Lakala\OpenAPISDK\V2\Api\V2LakalaApi
 | 
						|
     */
 | 
						|
    public function v2($api_model_class = null){
 | 
						|
        $config = new \Lakala\OpenAPISDK\V2\V2Configuration($this->config);
 | 
						|
        if($api_model_class){
 | 
						|
            $api = new $api_model_class($config,$this->sm4);
 | 
						|
        }else{
 | 
						|
            $api = new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,$this->sm4);
 | 
						|
        }
 | 
						|
        return $api;
 | 
						|
    }
 | 
						|
 | 
						|
    /** v3api 接口
 | 
						|
     * @param $api_model
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function v3($api_model_class = null){
 | 
						|
//        var_dump($this->config);die;
 | 
						|
 | 
						|
        $config = new \Lakala\OpenAPISDK\V3\Configuration($this->config);
 | 
						|
        if($api_model_class){
 | 
						|
            $api = new $api_model_class($config,$this->sm4);
 | 
						|
        }else{
 | 
						|
            $api = new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,$this->sm4);
 | 
						|
        }
 | 
						|
        return $api;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setTradePreorderWechaAccBusiFields($open_id=""){
 | 
						|
        $this->v3_acc_busi_fields = new \Lakala\OpenAPISDK\V3\Model\TradePreorderWechaAccBusiFields();
 | 
						|
//        $acc_busi_fields->setTimeoutExpress('');
 | 
						|
 | 
						|
 | 
						|
        $this->v3_acc_busi_fields->setSubAppid($this->plantform_data["wx_miniapp_id"]);
 | 
						|
        if($open_id)$this->v3_acc_busi_fields->setUserId($open_id);
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
    public function getTradePreorderWechaAccBusiFields($open_id=""){
 | 
						|
        $this->setTradePreorderWechaAccBusiFields($open_id);
 | 
						|
        return $this->v3_acc_busi_fields;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
} |