global.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package alipay
  2. import (
  3. "fmt"
  4. "github.com/smartwalle/alipay"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/config"
  6. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  7. "io/ioutil"
  8. "strings"
  9. )
  10. var alipayClient *alipay.Client = nil
  11. var alipayConfig struct {
  12. AppId string // app id
  13. SignMode string // 签名模式,common:普通公钥;cert:公钥证书
  14. AppPrivateKeyFile string // 保存支付宝开发平台助手生成应用密钥(第一个页面)内容的文件
  15. // 签名模式为普通公钥所需的文件
  16. AliPayPublicKeyFile string // 支付宝支付公钥文件
  17. // 签名模式为共钥证书所需的文件
  18. AppPublicCertFile string // 应用公钥证书,获取csr并上传csr后获得的
  19. AliPayRootCertFile string // 支付宝根证书,获取csr并上传csr后获得的
  20. AliPayPublicCertFile string // 支付宝公钥证书,获取csr并上传csr后获得的
  21. AliPayCallback string // 支付宝完整回调信息接口url,既notifyurl
  22. }
  23. func init(){
  24. alipayConfig.AppId = config.AppConfig.GetKey("alipay_appid")
  25. alipayConfig.SignMode = config.AppConfig.GetKey("alipay_sign_mode") // 签名模式,common:普通公钥;cert:公钥证书
  26. if alipayConfig.SignMode == ""{
  27. // 默认为普通公钥
  28. alipayConfig.SignMode = "common"
  29. }
  30. alipayConfig.AppPrivateKeyFile = config.AppConfig.GetKey("alipay_app_private_key_file") // 保存支付宝开发平台助手生成应用密钥(第一个页面)内容的文件
  31. // 签名模式为普通公钥所需的文件
  32. alipayConfig.AliPayPublicKeyFile = config.AppConfig.GetKey("alipay_public_key_file")
  33. // 签名模式为共钥证书所需的文件
  34. alipayConfig.AppPublicCertFile = config.AppConfig.GetKey("alipay_app_public_cert_file") // 应用公钥证书,获取csr并上传csr后获得的
  35. alipayConfig.AliPayRootCertFile = config.AppConfig.GetKey("alipay_root_cert_file") // 支付宝根证书,获取csr并上传csr后获得的
  36. alipayConfig.AliPayPublicCertFile = config.AppConfig.GetKey("alipay_public_cert_file")// 支付宝公钥证书,获取csr并上传csr后获得的
  37. // 回调
  38. alipayConfig.AliPayCallback = config.AppConfig.GetKey("alipay_callback") // 支付宝完整回调信息接口url,既notifyurl
  39. bytess , err := ioutil.ReadFile(alipayConfig.AppPrivateKeyFile)
  40. if err != nil{
  41. fmt.Println("init alipay error, app private key file", alipayConfig.AppPrivateKeyFile, "does not exist", err.Error())
  42. return
  43. }
  44. appPrivateKey := "MIIEogIBAAKCAQEAsUJX2IP/AbjzD0n2Ul5tpjn8bouNWyOt8pqHrVevciqWLmBQHSPXDyyP9+0+FTF3X9RDqVLuU7S+jlnKwLmjqZOa3SXQNjynaSPZudkr8T+8fdyzlWx5pgbs+o4707GOpYuraTOpTPO8HyVyBuTSzVUHyeQ09IRhT3lFatY3xEzUQv3t7Pk19te32yRqqTFvC4iHkb2b0dQM9wc59bgjqb9rsOYW6nypa2wkiA+e2Gu/1VkZRl/otnGKWR3NohN7gKv3/jpzNI8we43GO5PNV9bXrFNwdwusBq6zU4+ZUloSlAZ2ns6ZuVDr1q4DnJPzj55mSx5nGQK+ePSG3jrqcQIDAQABAoIBAD/SDybZf3rzSC/9BT7q2Le8sPJsNFzYH8z1blwu8fA8/Q19h9q2CLxh4wP02yFuSfiqyCGyxjRFI0bFdYamUBLCHkP5VVnxxKTKT53mXzfhJtB6If5uq+3nGHOtukSh7SYVf4XFH/Og3d6o8MEiqfNb5g3+qEJRV2fx1dh9gF6gYQeHJ146TyKohBGSoP3XgWpii5dCWYPBUp/RiGKDgukYIK1t2BKOVmAqO3pwbVA3sp4mk9SDDAce68VrqixQ4yBwJT3FOeOa/4uf73F+VV7tMGls1Adohlcua9znGM+pVfuSFGtBfXuNqdPVyd0ffyMhgd25QW8WjPAkQxESowECgYEA5a6uoV2JCo/LUh0M5uXpZkSlwW4Rha4+4RflsTlx+EpA/EXTipYvkMDMc2zvAusv2fxryaOTOJdCuQiMBBJ0w2mI00SnmcyRvCvGJpUyLfpTXtyVo1ZdtuM/mopTw345hFO/U69/4QSBV4uZa/EjK/L3weuMsyX00tgbbTY9Y9kCgYEAxZHrwgWA8w//WUPQDhuh9hh5FJT2Ef5RL4EspD+ukU5zAKbYrvS243pQ7gdAo46/UTEj+FSnRhQ2/QMRd13wvu7JKbHdlThfq9/+h/ujNT7Y7Zu89gFXOyQp2GRYuB1x83GIcwgRC8zy7tjR31+ngDHuJlsyEI4n9V0McpsgVFkCgYAN9mCHTrhV/AfQJhPytWdK4EFzUM2f4sfPxzQfYe6buWfZ7iS9+ANMOWw0WBrvgnyWM9IZn+gDOK7FsM9SMA0JFBFNRo8pulXhqoeRMOCsCtummKJAG6/2vjnPmzkcWUAF21F2NOUBONTkDYh2F2Kb+Vk2YKtc+KG5b4m7SeDRgQKBgHkupdLeGVf9KfyQsZ7VqCQQosPTEpO60AU5UC52uRZ7beKqdCHsC/m/XsCBRk6MEiE06QE6u1cqswfByAbVYgNa55xhcq5CY7xCqhaybEsOf3ROoDqsW9r0tY37Dsfvl6NgsfcMrZf1X9TMvP4r58uj1JVGPpEVAMFpD2eEavIRAoGAanK6o/SC2m9e5dLQHvLiu++aZOUKQUaUYmOZoejXx4G7KdjvZYbdoDcVXEVHQajwu+OFOJfgJRfvA4IXDfJ+QnVfN08kuKSMnKRQufpHEA8TDzicChC+KDvN38cMx2l/QNrP3J59WPIm2TrEoiIBkMqp/Fst7gE6/u8oLwPfizI="
  45. alipayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxNnmJTHLQwoEue/IwjRe8p2BlYG1jw17y6DsKAd0i67Wbw6bCuuNnOxLP5C+WmVP2ohojuA6OSbK3n/XK1h7P5Ly4eiCOWTX3mF3T5li3+sEWKadTpKeYF4lK6Cbh8pEdFE3eub5pLF8Egz8sSvKY2uygmSTYWMBN00kP2Rs6QmRdR1krJoVvPu0cSJe0tpmh2hOKBx+jmb7R89dKx2tgAihCi9GfWFkzKRfOq7MY6VTQO3CtH3RES/3JSkZmSfCAa5DDJfwc0MUyHDjyUHc3ZzyPzxARH2g44t8uRZh+pCz9aJO1fJD+UmGiwtIJEF3knpfNCYe7uypOaw7exJgmQIDAQAB"
  46. fmt.Println("---------------------------->private key 1-->")
  47. fmt.Println(appPrivateKey)
  48. fmt.Println(strings.TrimSpace(string(bytess)))
  49. fmt.Println("---------------------------->private key 1-->")
  50. alipayClient, err = alipay.New(alipayConfig.AppId, appPrivateKey, true)
  51. if err != nil{
  52. fmt.Println("new alipay client error", err.Error())
  53. return
  54. }
  55. if alipayConfig.SignMode == "common"{
  56. bytess, err = ioutil.ReadFile(alipayConfig.AliPayPublicKeyFile)
  57. if err != nil{
  58. fmt.Println("read alipay public key error", err.Error(), alipayConfig.AliPayPublicKeyFile)
  59. return
  60. }
  61. fmt.Println("---------------------------->public key 1-->")
  62. fmt.Println(alipayPublicKey)
  63. fmt.Println(strings.TrimSpace(string(bytess)))
  64. fmt.Println("---------------------------->public key 1-->")
  65. err = alipayClient.LoadAliPayPublicKey(alipayPublicKey)
  66. if err != nil{
  67. fmt.Println("LoadAliPayPublicKey error", err.Error(), alipayConfig.AliPayPublicKeyFile)
  68. return
  69. }
  70. }else{
  71. err = alipayClient.LoadAppPublicCertFromFile(alipayConfig.AppPublicCertFile)
  72. if err != nil{
  73. fmt.Println("LoadAppPublicCertFromFile error", err.Error(), alipayConfig.AppPublicCertFile)
  74. return
  75. }
  76. err = alipayClient.LoadAliPayRootCertFromFile(alipayConfig.AliPayRootCertFile)
  77. if err != nil{
  78. fmt.Println("LoadAliPayRootCertFromFile error", err.Error(), alipayConfig.AliPayRootCertFile)
  79. return
  80. }
  81. err = alipayClient.LoadAliPayPublicCertFromFile(alipayConfig.AliPayPublicCertFile)
  82. if err != nil{
  83. fmt.Println("LoadAliPayPublicCertFromFile error", err.Error(), alipayConfig.AliPayPublicCertFile)
  84. return
  85. }
  86. }
  87. }
  88. /***********************************************************/
  89. // 支付参数
  90. type PayParams struct{
  91. // 请求上下文
  92. Ctx *entitys.CtrlContext
  93. // 订单标题
  94. Subject string
  95. // 交易单号(最长64位)
  96. OutTradeNo string
  97. // 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
  98. TotalAmount string
  99. // 销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY
  100. ProductCode string
  101. }