client.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package ali
  2. import (
  3. "fmt"
  4. "github.com/smartwalle/alipay/v3"
  5. "io/ioutil"
  6. "sync"
  7. "xiaoniaokuaiyan.com/xiaoniao/config"
  8. )
  9. /**
  10. * @Author: qz
  11. * @Date: 2021/8/6 10:41
  12. * @Description:
  13. */
  14. var aliClient *alipay.Client
  15. var once sync.Once
  16. type Config map[string]string
  17. var DefaultConfig Config
  18. func createClient() {
  19. sec := config.IniConf.Section("ali")
  20. DefaultConfig = Config{
  21. "appid": sec.Key("ali.appid").Value(),
  22. "private_key": sec.Key("ali.private_key").Value(),
  23. "app_crt": sec.Key("ali.app_crt").Value(),
  24. "ali_crt": sec.Key("ali.ali_crt").Value(),
  25. "ali_root_crt": sec.Key("ali.ali_root_crt").Value(),
  26. }
  27. privateKey, err := ioutil.ReadFile(DefaultConfig["private_key"])
  28. if err != nil {
  29. fmt.Println(err)
  30. return
  31. }
  32. aliClient, _ = alipay.New(DefaultConfig["appid"], string(privateKey), true)
  33. aliClient.LoadAliPayPublicCertFromFile(DefaultConfig["ali_crt"])
  34. aliClient.LoadAliPayRootCertFromFile(DefaultConfig["ali_root_crt"])
  35. aliClient.LoadAppPublicCertFromFile(DefaultConfig["app_crt"])
  36. }
  37. func GetAliClient() *alipay.Client {
  38. once.Do(func() {
  39. createClient()
  40. config.RegistChangeCallback(createClient)
  41. })
  42. return aliClient
  43. }