package alipayopen import ( "crypto/rsa" "crypto/x509" "encoding/pem" "errors" "go.dtapp.net/golog" "go.dtapp.net/gophp" ) // ClientConfig 实例配置 type ClientConfig struct { AppId string // 支付宝分配给开发者的应用ID AppKey string // 支付宝分配给开发者的应用私钥 AppRSA2 string // 应用公钥 AlipayRSA2 string // 支付宝公钥 Aes string // 接口内容加密方式 } // Client 实例 type Client struct { privateKey *rsa.PrivateKey // 私钥服务 config struct { appId string // 支付宝分配给开发者的应用ID appKey string // 支付宝分配给开发者的应用私钥 appRSA2 string // 应用公钥 alipayRSA2 string // 支付宝公钥 aes string // 接口内容加密方式 } gormLog struct { status bool // 状态 client *golog.ApiGorm // 日志服务 } } // NewClient 创建实例化 func NewClient(config *ClientConfig) (*Client, error) { var err error c := &Client{} c.config.appId = config.AppId c.config.appKey = config.AppKey c.config.appRSA2 = config.AppRSA2 c.config.alipayRSA2 = config.AlipayRSA2 c.config.aes = config.Aes // 私钥解码 block, _ := pem.Decode([]byte("-----BEGIN RSA PRIVATE KEY-----\n" + gophp.ChunkSplit(config.AppKey, 64, "\n") + "-----END RSA PRIVATE KEY-----\n")) if block == nil { return nil, errors.New("签名私钥解码错误") } privateKey, err := x509.ParsePKCS8PrivateKey(block.Bytes) if err != nil { return nil, err } c.privateKey = privateKey.(*rsa.PrivateKey) return c, nil }