Browse Source

添加普通公钥模式

huangrf 6 years ago
parent
commit
a680a05bc4
1 changed files with 53 additions and 1 deletions
  1. 53 1
      third/alipay/global.go

+ 53 - 1
third/alipay/global.go

@@ -12,27 +12,79 @@ 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")
+		fmt.Println("init alipay error, app private key file", alipayConfig.AppPrivateKeyFile, "does not exist", err.Error())
 		return
 	}
 	alipayClient, err = alipay.New(alipayConfig.AppId, string(bytess), 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
+		}
+		err = alipayClient.LoadAliPayPublicKey(string(bytess))
+		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
+		}
+	}
 }
 
 /***********************************************************/