package alipay import ( "fmt" "github.com/smartwalle/alipay" "git.qianqiusoft.com/qianqiusoft/light-apiengine/config" "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys" "io/ioutil" "strings" ) var alipayClient *alipay.Client = nil var alipayConfig struct { AppId string // app id SignMode string // 签名模式,common:普通公钥;cert:公钥证书 AppPrivateKeyFile string // 保存支付宝开发平台助手生成应用密钥(第一个页面)内容的文件 // 签名模式为普通公钥所需的文件 AliPayPublicKeyFile string // 支付宝支付公钥文件 // 签名模式为共钥证书所需的文件 AppPublicCertFile string // 应用公钥证书,获取csr并上传csr后获得的 AliPayRootCertFile string // 支付宝根证书,获取csr并上传csr后获得的 AliPayPublicCertFile string // 支付宝公钥证书,获取csr并上传csr后获得的 AliPayCallback string // 支付宝完整回调信息接口url,既notifyurl } func init(){ alipayConfig.AppId = config.AppConfig.GetKey("alipay_appid") alipayConfig.SignMode = config.AppConfig.GetKey("alipay_sign_mode") // 签名模式,common:普通公钥;cert:公钥证书 if alipayConfig.SignMode == ""{ // 默认为普通公钥 alipayConfig.SignMode = "common" } alipayConfig.AppPrivateKeyFile = config.AppConfig.GetKey("alipay_app_private_key_file") // 保存支付宝开发平台助手生成应用密钥(第一个页面)内容的文件 // 签名模式为普通公钥所需的文件 alipayConfig.AliPayPublicKeyFile = config.AppConfig.GetKey("alipay_public_key_file") // 签名模式为共钥证书所需的文件 alipayConfig.AppPublicCertFile = config.AppConfig.GetKey("alipay_app_public_cert_file") // 应用公钥证书,获取csr并上传csr后获得的 alipayConfig.AliPayRootCertFile = config.AppConfig.GetKey("alipay_root_cert_file") // 支付宝根证书,获取csr并上传csr后获得的 alipayConfig.AliPayPublicCertFile = config.AppConfig.GetKey("alipay_public_cert_file")// 支付宝公钥证书,获取csr并上传csr后获得的 // 回调 alipayConfig.AliPayCallback = config.AppConfig.GetKey("alipay_callback") // 支付宝完整回调信息接口url,既notifyurl bytess , err := ioutil.ReadFile(alipayConfig.AppPrivateKeyFile) if err != nil{ fmt.Println("init alipay error, app private key file", alipayConfig.AppPrivateKeyFile, "does not exist", err.Error()) return } 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=" alipayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxNnmJTHLQwoEue/IwjRe8p2BlYG1jw17y6DsKAd0i67Wbw6bCuuNnOxLP5C+WmVP2ohojuA6OSbK3n/XK1h7P5Ly4eiCOWTX3mF3T5li3+sEWKadTpKeYF4lK6Cbh8pEdFE3eub5pLF8Egz8sSvKY2uygmSTYWMBN00kP2Rs6QmRdR1krJoVvPu0cSJe0tpmh2hOKBx+jmb7R89dKx2tgAihCi9GfWFkzKRfOq7MY6VTQO3CtH3RES/3JSkZmSfCAa5DDJfwc0MUyHDjyUHc3ZzyPzxARH2g44t8uRZh+pCz9aJO1fJD+UmGiwtIJEF3knpfNCYe7uypOaw7exJgmQIDAQAB" fmt.Println("---------------------------->private key 1-->") fmt.Println(appPrivateKey) fmt.Println(strings.TrimSpace(string(bytess))) fmt.Println("---------------------------->private key 1-->") alipayClient, err = alipay.New(alipayConfig.AppId, appPrivateKey, true) if err != nil{ fmt.Println("new alipay client error", err.Error()) return } if alipayConfig.SignMode == "common"{ bytess, err = ioutil.ReadFile(alipayConfig.AliPayPublicKeyFile) if err != nil{ fmt.Println("read alipay public key error", err.Error(), alipayConfig.AliPayPublicKeyFile) return } fmt.Println("---------------------------->public key 1-->") fmt.Println(alipayPublicKey) fmt.Println(strings.TrimSpace(string(bytess))) fmt.Println("---------------------------->public key 1-->") err = alipayClient.LoadAliPayPublicKey(alipayPublicKey) if err != nil{ fmt.Println("LoadAliPayPublicKey error", err.Error(), alipayConfig.AliPayPublicKeyFile) return } }else{ err = alipayClient.LoadAppPublicCertFromFile(alipayConfig.AppPublicCertFile) if err != nil{ fmt.Println("LoadAppPublicCertFromFile error", err.Error(), alipayConfig.AppPublicCertFile) return } err = alipayClient.LoadAliPayRootCertFromFile(alipayConfig.AliPayRootCertFile) if err != nil{ fmt.Println("LoadAliPayRootCertFromFile error", err.Error(), alipayConfig.AliPayRootCertFile) return } err = alipayClient.LoadAliPayPublicCertFromFile(alipayConfig.AliPayPublicCertFile) if err != nil{ fmt.Println("LoadAliPayPublicCertFromFile error", err.Error(), alipayConfig.AliPayPublicCertFile) return } } } /***********************************************************/ // 支付参数 type PayParams struct{ // 请求上下文 Ctx *entitys.CtrlContext // 订单标题 Subject string // 交易单号(最长64位) OutTradeNo string // 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] TotalAmount string // 销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY ProductCode string }