package ali import ( "fmt" "github.com/smartwalle/alipay/v3" "io/ioutil" "sync" "xiaoniaokuaiyan.com/xiaoniao/config" ) /** * @Author: qz * @Date: 2021/8/6 10:41 * @Description: */ var aliClient *alipay.Client var once sync.Once type Config map[string]string var DefaultConfig Config func createClient() { sec := config.IniConf.Section("ali") DefaultConfig = Config{ "appid": sec.Key("ali.appid").Value(), "private_key": sec.Key("ali.private_key").Value(), "app_crt": sec.Key("ali.app_crt").Value(), "ali_crt": sec.Key("ali.ali_crt").Value(), "ali_root_crt": sec.Key("ali.ali_root_crt").Value(), } privateKey, err := ioutil.ReadFile(DefaultConfig["private_key"]) if err != nil { fmt.Println(err) return } aliClient, _ = alipay.New(DefaultConfig["appid"], string(privateKey), true) aliClient.LoadAliPayPublicCertFromFile(DefaultConfig["ali_crt"]) aliClient.LoadAliPayRootCertFromFile(DefaultConfig["ali_root_crt"]) aliClient.LoadAppPublicCertFromFile(DefaultConfig["app_crt"]) } func GetAliClient() *alipay.Client { once.Do(func() { createClient() config.RegistChangeCallback(createClient) }) return aliClient }