| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 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 // 保存支付宝开发平台助手生成应用密钥(第一个页面)内容的文件
- AppPrivateKey string // 应用密钥
- // 签名模式为普通公钥所需的文件
- AliPayPublicKeyFile string // 支付宝支付公钥文件
- AliPayPublicKey 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
- }
- AliPayConfig.AppPrivateKey = strings.TrimSpace(string(bytess))
- alipayClient, err = alipay.New(AliPayConfig.AppId, AliPayConfig.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
- }
- AliPayConfig.AliPayPublicKey = strings.TrimSpace(string(bytess))
- err = alipayClient.LoadAliPayPublicKey(AliPayConfig.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
- }
|