diff --git a/business/api/common.go b/business/api/common.go index 3d901f9..1621192 100644 --- a/business/api/common.go +++ b/business/api/common.go @@ -145,7 +145,7 @@ func DataInit() { zap_server.ZAPLOG.Info("dataInit petBastInfoMap : ", zap.Any("petBastInfoMap", PetBaseInfoMap)) //--------------------------------------------------服务地址数据--------------------------------------------------------- var serviceAddrList []models.ServiceAddr - database.Instance().Model(&models.ServiceAddr{}).Find(&serviceAddrList) + database.Instance().Model(&models.ServiceAddr{}).Where("status = 1").Find(&serviceAddrList) var ServiceAddrMapC1 = make(map[int64]models.ServiceAddr) for _, value := range serviceAddrList { ServiceAddrMapC1[value.Id] = value diff --git a/business/api/init.go b/business/api/init.go index d17ddcc..ef0b133 100644 --- a/business/api/init.go +++ b/business/api/init.go @@ -17,6 +17,7 @@ var ExcludeBase = "/static" var ExcludeBase1 = "/debug" var ExcludeBase2 = "/admin" var ExcludeBase3 = "/system" +var ExcludeBase4 = "/payNotify" var frontExcludes = [...]string{ Root + AuthBase + "/login", @@ -72,6 +73,10 @@ func FrontAuth(ctx *context.Context) { ctx.Next() return } + if strings.Contains(ctx.Path(), ExcludeBase4) { + ctx.Next() + return + } frontExcludesStr := strings.Join(frontExcludes[:], ",") if strings.Contains(frontExcludesStr, ctx.Path()) { ctx.Next() diff --git a/business/api/pay.go b/business/api/pay.go index f137c4a..895b9ee 100644 --- a/business/api/pay.go +++ b/business/api/pay.go @@ -39,7 +39,7 @@ type ToPayRequest struct { type ToPayResponse struct { Content *jsapi.PrepayWithRequestPaymentResponse `json:"content"` - PayOrderId string + PayOrderId string `json:"payOrderId"` } // 充值 @@ -47,6 +47,7 @@ func (p DefParty) toPay() web_iris.Party { return web_iris.Party{Prefix: p.Prefix, PartyFunc: func(index iris.Party) { index.Post(PayBase+"/toPay", func(ctx *context.Context) { headerBaseInfo := GetHeaderBaseInfo(ctx) + body, _ := io.ReadAll(ctx.Request().Body) var toPayRequest ToPayRequest json.Unmarshal(body, &toPayRequest) @@ -55,7 +56,7 @@ func (p DefParty) toPay() web_iris.Party { var rechargeInfo *models.RechargeInfo database.Instance().Model(&models.RechargeInfo{}).Where("id = ?", toPayRequest.PayId).Find(&rechargeInfo) svc := jsapi.JsapiApiService{Client: utils.GetWxPayService()} - price, _ := strconv.ParseInt(rechargeInfo.Price, 10, 64) + price, _ := strconv.ParseFloat(rechargeInfo.Price, 64) orderId := NextId.Generate().String() // 得到prepay_id,以及调起支付所需的参数和签名 resp, _, err := svc.PrepayWithRequestPayment(ctx, @@ -66,7 +67,7 @@ func (p DefParty) toPay() web_iris.Party { OutTradeNo: core.String(orderId), NotifyUrl: core.String(web.CONFIG.System.Domain + "/pet-house/pay/payNotify"), Amount: &jsapi.Amount{ - Total: core.Int64(price * 100), + Total: core.Int64(int64(price * 100.0)), }, Payer: &jsapi.Payer{ Openid: core.String(userInfo.OpenId), @@ -93,7 +94,30 @@ func (p DefParty) toPay() web_iris.Party { func (p DefParty) payNotify() web_iris.Party { return web_iris.Party{Prefix: p.Prefix, PartyFunc: func(index iris.Party) { index.Post(PayBase+"/payNotify", func(ctx *context.Context) { - wechatPayCert, _ := utils2.LoadCertificate(utils.CONFIG.WechatCert) + var cert = `-----BEGIN CERTIFICATE----- +MIIDVzCCAj+gAwIBAgIJANfOWdH1ItcBMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNV +BAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg +Q29tcGFueSBMdGQwHhcNMjEwNDI3MDg1NTIzWhcNMzEwNDI1MDg1NTIzWjBCMQsw +CQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh +dWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +2VCTd91fnUn73Xy9DLvt/V62TVxRTEEstVdeRaZ3B3leO0pldE806mXO4RwdHXag +HQ4vGeZN0yqm++rDsGK+U3AH7kejyD2pXshNP9Cq5YwbptiLGtjcquw4HNxJQUOm +DeJf2vg6byms9RUipiq4SzbJKqJFlUpbuIPDpSpWz10PYmyCNeDGUUK65E5h2B83 +4uxl1zNLYQCrkdBzb8oUxwYeP5a2DNxmjL5lsJML7DGr5znsevnoqGRwTm9fxCGf +y8wus7hwKz6clt3Whmmda7UAdb1c08hEQFVRbF14AR73xbnd8N0obCWJPCbzMCtk +aSef4FdEEgEXJiw0VAJT8wIDAQABo1AwTjAdBgNVHQ4EFgQUT1c7nd/SUO76HSoZ +umNUJv1R5PwwHwYDVR0jBBgwFoAUT1c7nd/SUO76HSoZumNUJv1R5PwwDAYDVR0T +BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAfTjxKRQMzNB/U6ZoCUS+BSNfa2Oh +0plMN6ZuzwiVVZwg1jywvv5yv04koS7Pd4i9E4gt9ZBUQXlpq+A3oOCEEHNRR6b2 +kyazGRM7s0OP5X21WrbpSmKmU6K7hkfx30yYs08LVs/Q8DIhvaj1FCFeJzUCzYn/ +fHMq4tsbKO0dKAeydPM/nrUZBmaYQVKMVOORGLFjFKVO7JV6Kq/R86ouhjEPgJOe +2xulNBUcjicqtZlBdEh/PWCYP2SpGVDclKm8jeo175T3EVAkdKzzmfpxtMmnMlmq +cTJOU9TxuGvNASMtjj7pYIerTx+xgZDXEVBWFW9PjJ0TV06tCRsgSHItgg== +-----END CERTIFICATE-----` + wechatPayCert, err1 := utils2.LoadCertificate(cert) + if err1 != nil { + panic(err1) + } // 2. 使用本地管理的微信支付平台证书获取微信支付平台证书访问器 certificateVisitor := core.NewCertificateMapWithList([]*x509.Certificate{wechatPayCert}) // 3. 使用apiv3 key、证书访问器初始化 `notify.Handler` diff --git a/business/config/wxconfig.json b/business/config/wxconfig.json index 23d65bd..c76b28c 100644 --- a/business/config/wxconfig.json +++ b/business/config/wxconfig.json @@ -8,5 +8,5 @@ "mchCertificateSerialNumber": "7DA2108120E4C418537BCF3C061AAB109CCF88A9", "mchAPIv3Key": "chonghujiapanlei1234567891234567", "privateKeyPath": "F:\\work\\go\\pet-house\\business\\config\\apiclient_key.pem", - "wechatCert": "MIIEKzCCAxOgAwIBAgIUfaIQgSDkxBhTe888BhqrEJzPiKkwDQYJKoZIhvcNAQELBQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsTFFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3QgQ0EwHhcNMjQwOTEwMDc0NDUzWhcNMjkwOTA5MDc0NDUzWjCBhDETMBEGA1UEAwwKMTY4MjYzNzYxMjEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQLDCflroHms6LlrqDmiqTlrrblrqDnianmnI3liqHmnInpmZDlhazlj7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALoZ/ZK7BdW1DKCzsqQnS9ElkWhv8Df4JidAupVoaaGa0Iz8cukj8JgqzzmOA0fSief3z0OvOvmXQujNLXka38Y+8KB/K/BnqRYVGSvLWKwfdalSS+caJZUNLVQVv1zDrPVPb3JmoJMADPIq2sOfLqjmWPIxRcpa7sPeall5fMx07aVrpi2Ov1ueRUphIYNT6aV6KnPrRf/lcRwZxE0+l30l45sDNrd7l5tUsnJq/1OLP+kgidkpic6W1f3jrHZTwYakgShEUgkRsHeUjIQ0ZRYSsD4Mxn/bqdAxDSDWB6aWGwMrY1kubsPkE/AcXTpgpaC+2kQVhaYrWuly0w0T1jMCAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQC7Zgux40pvNohZx721rygjo0yUbx54docNS79Eh5J9ukSKMf0cTsORlAnrsCbSYnIoMiqdPqccRYJUefUUuhOrKtuzaka4T+VSiaDTnZ07kB3I8xlvZtW32jHOstVPrJsBfEg53sl5sfWHY+OfuEhwOkoH3v/Fs4nH4hQxjO8RW9tNXqLvTrl1JeEwV4bMZxCAwCvoMPqn19WBFsaFb0kXF46oGeH5kId6oon0RCi+vXb8nSZ4oPXIJwxi9u/uy+wDrVlHohjCK+bRbxGgaIcX5uMPK/M73mzuuLFCbIWN4CLz9yyZGKxNJBq4YuGe+jWagh1GheVuvTdcJ4ZGDhQT" + "wechatCert": "`-----BEGIN CERTIFICATE-----\nMIIDVzCCAj+gAwIBAgIJANfOWdH1ItcBMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNV\nBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg\nQ29tcGFueSBMdGQwHhcNMjEwNDI3MDg1NTIzWhcNMzEwNDI1MDg1NTIzWjBCMQsw\nCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh\ndWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n2VCTd91fnUn73Xy9DLvt/V62TVxRTEEstVdeRaZ3B3leO0pldE806mXO4RwdHXag\nHQ4vGeZN0yqm++rDsGK+U3AH7kejyD2pXshNP9Cq5YwbptiLGtjcquw4HNxJQUOm\nDeJf2vg6byms9RUipiq4SzbJKqJFlUpbuIPDpSpWz10PYmyCNeDGUUK65E5h2B83\n4uxl1zNLYQCrkdBzb8oUxwYeP5a2DNxmjL5lsJML7DGr5znsevnoqGRwTm9fxCGf\ny8wus7hwKz6clt3Whmmda7UAdb1c08hEQFVRbF14AR73xbnd8N0obCWJPCbzMCtk\naSef4FdEEgEXJiw0VAJT8wIDAQABo1AwTjAdBgNVHQ4EFgQUT1c7nd/SUO76HSoZ\numNUJv1R5PwwHwYDVR0jBBgwFoAUT1c7nd/SUO76HSoZumNUJv1R5PwwDAYDVR0T\nBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAfTjxKRQMzNB/U6ZoCUS+BSNfa2Oh\n0plMN6ZuzwiVVZwg1jywvv5yv04koS7Pd4i9E4gt9ZBUQXlpq+A3oOCEEHNRR6b2\nkyazGRM7s0OP5X21WrbpSmKmU6K7hkfx30yYs08LVs/Q8DIhvaj1FCFeJzUCzYn/\nfHMq4tsbKO0dKAeydPM/nrUZBmaYQVKMVOORGLFjFKVO7JV6Kq/R86ouhjEPgJOe\n2xulNBUcjicqtZlBdEh/PWCYP2SpGVDclKm8jeo175T3EVAkdKzzmfpxtMmnMlmq\ncTJOU9TxuGvNASMtjj7pYIerTx+xgZDXEVBWFW9PjJ0TV06tCRsgSHItgg==\n-----END CERTIFICATE-----`\n" } \ No newline at end of file diff --git a/business/utils/commonUtil_test.go b/business/utils/commonUtil_test.go index c74c70d..adcc043 100644 --- a/business/utils/commonUtil_test.go +++ b/business/utils/commonUtil_test.go @@ -2,6 +2,7 @@ package utils import ( "fmt" + utils2 "github.com/wechatpay-apiv3/wechatpay-go/utils" "math" "pet-house.com/business/models" "strconv" @@ -28,6 +29,10 @@ func TestCalc(t *testing.T) { i := math.Round(386 * (float64(85) / 100)) fmt.Println(i) } +func TestCalc7(t *testing.T) { + float, _ := strconv.ParseFloat("0.01", 64) + fmt.Println(int64(float * 100.0)) +} func TestCalc1(t *testing.T) { i := float64(85) / 100 fmt.Println(i) @@ -51,6 +56,31 @@ func TestCalc5(t *testing.T) { float := strconv.FormatFloat(float64(a/10.0), 'f', 1, 64) fmt.Printf(float) } +func TestCalc8(t *testing.T) { + var a = `-----BEGIN CERTIFICATE----- +MIIDVzCCAj+gAwIBAgIJANfOWdH1ItcBMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNV +BAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg +Q29tcGFueSBMdGQwHhcNMjEwNDI3MDg1NTIzWhcNMzEwNDI1MDg1NTIzWjBCMQsw +CQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh +dWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +2VCTd91fnUn73Xy9DLvt/V62TVxRTEEstVdeRaZ3B3leO0pldE806mXO4RwdHXag +HQ4vGeZN0yqm++rDsGK+U3AH7kejyD2pXshNP9Cq5YwbptiLGtjcquw4HNxJQUOm +DeJf2vg6byms9RUipiq4SzbJKqJFlUpbuIPDpSpWz10PYmyCNeDGUUK65E5h2B83 +4uxl1zNLYQCrkdBzb8oUxwYeP5a2DNxmjL5lsJML7DGr5znsevnoqGRwTm9fxCGf +y8wus7hwKz6clt3Whmmda7UAdb1c08hEQFVRbF14AR73xbnd8N0obCWJPCbzMCtk +aSef4FdEEgEXJiw0VAJT8wIDAQABo1AwTjAdBgNVHQ4EFgQUT1c7nd/SUO76HSoZ +umNUJv1R5PwwHwYDVR0jBBgwFoAUT1c7nd/SUO76HSoZumNUJv1R5PwwDAYDVR0T +BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAfTjxKRQMzNB/U6ZoCUS+BSNfa2Oh +0plMN6ZuzwiVVZwg1jywvv5yv04koS7Pd4i9E4gt9ZBUQXlpq+A3oOCEEHNRR6b2 +kyazGRM7s0OP5X21WrbpSmKmU6K7hkfx30yYs08LVs/Q8DIhvaj1FCFeJzUCzYn/ +fHMq4tsbKO0dKAeydPM/nrUZBmaYQVKMVOORGLFjFKVO7JV6Kq/R86ouhjEPgJOe +2xulNBUcjicqtZlBdEh/PWCYP2SpGVDclKm8jeo175T3EVAkdKzzmfpxtMmnMlmq +cTJOU9TxuGvNASMtjj7pYIerTx+xgZDXEVBWFW9PjJ0TV06tCRsgSHItgg== +-----END CERTIFICATE-----` + x, err := utils2.LoadCertificate(a) + fmt.Println(err) + fmt.Println(x) +} func TestMath(t *testing.T) { var a = int(RoundToOneDecimalPlace(float64(150)*(95/100.0)) * 10) fmt.Println(a)