From 98ef48e6f5af792a8d00cdc7a4a916d836dd602b Mon Sep 17 00:00:00 2001 From: yanghao05 Date: Mon, 14 Apr 2025 20:05:19 +0800 Subject: [PATCH] feat: add private key --- backend/app/service/http/http.go | 2 + backend/config.toml | 66 ++++++++++-------- .../providers/wechat/certs/apiclient_cert.p12 | Bin 0 -> 2782 bytes .../providers/wechat/certs/apiclient_cert.pem | 25 +++++++ .../providers/wechat/certs/apiclient_key.pem | 28 ++++++++ backend/providers/wechat/config.go | 47 +++++++++++++ backend/providers/wepay/config.go | 11 --- backend/providers/wepay/pay.go | 12 +++- 8 files changed, 148 insertions(+), 43 deletions(-) create mode 100644 backend/providers/wechat/certs/apiclient_cert.p12 create mode 100644 backend/providers/wechat/certs/apiclient_cert.pem create mode 100644 backend/providers/wechat/certs/apiclient_key.pem create mode 100644 backend/providers/wechat/config.go diff --git a/backend/app/service/http/http.go b/backend/app/service/http/http.go index 246cdef..518f603 100644 --- a/backend/app/service/http/http.go +++ b/backend/app/service/http/http.go @@ -17,6 +17,7 @@ import ( "quyun/providers/job" "quyun/providers/jwt" "quyun/providers/postgres" + "quyun/providers/wechat" "quyun/providers/wepay" "go.ipao.vip/atom" @@ -31,6 +32,7 @@ import ( func defaultProviders() container.Providers { return service.Default(container.Providers{ + wechat.DefaultProvider(), ali.DefaultProvider(), wepay.DefaultProvider(), http.DefaultProvider(), diff --git a/backend/config.toml b/backend/config.toml index 33f0618..026c091 100644 --- a/backend/config.toml +++ b/backend/config.toml @@ -32,42 +32,48 @@ Bucket ="rogee-test" Region ="cn-beijing" CallbackURL = "https://www.baidu.com" -[Wechat] -AppId = "wx47649361b6eba174" +[WeChat] +AppID = "wx47649361b6eba174" AppSecret = "e9cdf19b006cd294a9dae7ad8ae08b72" Token = "W8Xhw5TivYBgY" -AesKey = "OlgPgMvsl92zy5oErtEzRcziRT2txoN3jgEHV6RQZMY" +EncodingAesKey = "OlgPgMvsl92zy5oErtEzRcziRT2txoN3jgEHV6RQZMY" DevMode = false -# mech + +[WeChat.Pay] +NotifyURL="" MechID = "1702644947" +SerialNo = "4563EC584A35BC84FB27AA4100C934C9A91D59CA" MechName = "佳芃(北京)企业管理咨询有限公司" -ApiCert="""-----BEGIN CERTIFICATE----- -MIIENDCCAxygAwIBAgIUT2xw7W0P1xMKioIAqNwkZSu62OYwDQYJKoZIhvcNAQEL -BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT -FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg -Q0EwHhcNMjUwNDE0MDEzMTM1WhcNMzAwNDEzMDEzMTM1WjCBjTETMBEGA1UEAwwK -MTcwMjY0NDk0NzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL -DDDkvbPoioPvvIjljJfkuqzvvInkvIHkuJrnrqHnkIblkqjor6LmnInpmZDlhazl -j7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKtux5VS/D35i9byBoU1aUdPHglI2N0kiqugGN6m -v/qWB1QkJBua1AT4KCzsmfbCQPPYvyDyYpUpWPJxxFi9cDwmzn9o7j1syrSG58PD -eUCetEUMvd4KauPDJcuZYJnytM2vcr5xznzkBe4yTw3eeKmVkUgbqFOBs8Xrw641 -uFmAsmQ3TrD0ibrBRAKCPImixB0bxPalGcEau2Pq1TJmkpDpsrkZZ11Bdbf8FXnu -6FXwDIb48nfm7DYrE4rgT+VjZ8OkptbNJZSY0Ncms4RZoBOZI06lJqdfqtgz3Qog -7sf6tYms6+BlGAy/l6UjvobVJ48zh6DI5PuFyxRqi04qfg8CAwEAAaOBuTCBtjAJ -BgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGE -aHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0 -MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFC -NjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEB -CwUAA4IBAQAaEuqWgu/ejf/UEEIWz2nbaGaEY6+ZcvrjwrqQcMp0odDXpCFyRDZ/ -jDeYUAUY3EuKb/LTUtEq2ykPD+6+S41tzfoaDSw2ZEZCkjg8jWJ+4Y4fLv2jXGEI -k5ZDg8Q3mA1/oDsCua9A3ojTyGCScM58rP6fr7fD8ApoM+b+2bUecDnvaU1szR63 -+nHbKc1/CId7ul9YI62ialEjMdutZ1BPCi40K4EjtGf7T2GMnQ1UMbG9pvmkNWQO -9959sZZuJyxyj5g8BHCu5CVADeTyTxrDiyqXOGtxKLLH/6xI/C45Izr8DNC3Fl+i -MYMs5AeLsN7oQ+LWAoHG5rDogzifNKes ------END CERTIFICATE-----""" +ApiV3Key="5UBDkxVDY44AKafkqN6YgYxgtkXP6Mw6" +PrivateKey="""-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC+GjWdwRorgQXw +Z8ouZeW8UsUgjiSUPKLJHGOZQESa09xmzm+DVZWNCPEHJvz1bDmSNXVsQUWRE/+y +MwSfe+faq0d4BZiw1ueFbRyj4Vw/x7B2vY0i8yo0VyTnWdC6QZRc+V+dbuPJM1Ok ++Qf2yg+NZhz3XuTWvQOscAc9+f3aj8fhXJQlRmNby736w0iDu9EQFvPnkVs10/lW +RwICvzEbEMq7D2SSXS/lc/qS84eHYYCnH8b3NGNCt7ifSXPJesGT/+pwBKmPef6T +lK0pjgqqiKltP04nYeP7Ujz5r8v/CPebUG6Iuht3EjH84i4UCpcBdI/mD2rJInJ/ +jiiCjP7tAgMBAAECggEAVYVe94BGsKmTrWpT13m513X4/sNTi2iX5xehavExq+GB +trJKEnBvHgqWvBv7EsHESJVKJRBcJn8zucwf2UuZq5MATOtfnLahYzIJ/2PD52GD +bnepxb5VD0Tg8j9CmngkMYtyS1X2na48g+wQfCK8ymTUxSholH5l565iY6xSWn8r +SD/u/EBLv69i40uocG1hUUicrJZ1wc5T0ct3GpfiA1BfH462/dp6mROONdpwM8IT +ltRH4wjIc2nPgE7eNbXlHg+KkqyNNLA+BeN3yn001QwvP6Q0panuCTsVVlvEuGAY +RwXbu/0fHFbppIpgfr7AFGRWKTF66Peq3ozsG9jNgQKBgQDviSJxN2Mpdln4i5F3 +74s8FMtZ5bY63RHHcvJ5/D9G1iDNHFgLJsgdrbAhLqBbqg73EsIT8TsPlAqKPKS8 +EGKBg75MsMSYu7EmzIURV3Gy+Pou9jOkTUfQfblkiV+uJjWQPlBlfksL1bQnfSvZ +Pk1DCwGMb5DMDazAQLP9/wtLYQKBgQDLKz9YHF+wFsnfUjBQngDLCTkxrfxp8y84 +s/z5IRZIEdfxmnaEeWJXYa0oeQumNLSVHrryvHm3vkBgKexN49TWUGIM3q54gi/R +FPXXJKarDEI7C86Th3g+3FPEez5v+CEncmlB9X3kBT0ZFROWD3HHaz2DUKPVmJe1 +eUOtAN0LDQKBgCoulx8i5taFXgCz61EYoQdajhjtp/KjvZ7G8kZjEm2SBcK5DBQi +pzj6vjqJsHmT8AC4j+7dG055/oUresMXi5FNNvTgaC6RVvgDKifMo1wmFkCw4JU9 +erkPetdmja/oUKRvJM9Kt0KFRq1xkIg4PXjh9krZ1sDoY5STkF7ZTA7hAoGAQhPv +xzV7Pac7wwFVK3MoKOD4FBtVRBRO4G9RsKk9OPVsuWyWbWGZRXhEPCyaSFVOAk37 +WaVJJSSghWY9L9wQxh9gtHTcY99bs/HQP0fxWSJkjBW7+ymNR0ybhgTbeslF5zGD +4Gr6peW6SGUdeKnPRJ+xYvsgPgEiHmixRRxJyCUCgYEAoguVZdpDaRDZGGrTghwj +F4kMIyEczFeBZtK2JEGSLA6j8uj+oBZ26c6K4sh/Btc0l6IkiXijXbTaH87s52xZ +im8aIZZ9jDKUFxtjVUL0l9fjRsCLAvaBbWw3z4EdtOGuYlnhNCheeSd+/Lzqrb1q +pnTiwBHnQCMFFL/rNcz/Mmk= +-----END PRIVATE KEY-----""" PublicKeyID="PUB_KEY_ID_0117026449472025041400331572000400" -V3Key="5UBDkxVDY44AKafkqN6YgYxgtkXP6Mw6" # JS pay domain # mp.jdwan.com # quyun.mp.jdwan.com diff --git a/backend/providers/wechat/certs/apiclient_cert.p12 b/backend/providers/wechat/certs/apiclient_cert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..86eadfb8615e54db4a8ad5b0ba208494416358dd GIT binary patch literal 2782 zcmY+^c{CJ`76vL>?2PBhQ&ocG@Ey+7``=YH=!_s>GPdLs|2-0KQvf^!R@_iY1*hy!PPaTF98@&Q2AScv|_qsQ4y;P2O zsvk{vOY6f68vzI64}c4=c%B~&KKe))uqIB`)#+&JhEMhTvjm%UE4q^~?e;nGf@Z(A zja!bqn9iaatE;d{Yp$QrLIUt?YD2qqinl06RbWRI>}a+Ag?9lRJ@jX%MR#(!>P^b% ziE;9jWcO{sb5mQYIB2myEP|`!?W(7ectuU%nko+*ojG0;QPvz0f3!A^1TU@nx|Zb- zr|HMJ>{V}W6}Mnn7t9kh{0r@vEIq6<5|u6LS8{n$$0i~;lL<(v2FWd2Xt>PU&ocp{ zLl*PGw~jhIyX$n;=#8L0zj=mt0$9gmyDXm}Z#^j3^h&{tNSb-VjE zj^PouHwaWR|CQl2${C#gU_;kN=~g4z=lp?s1@`?H zlPWgy&PSs=*@KDaE{&S?3d@vqm2hct_z-k&Yv-E{{u1eLq(qrF9&kRK06U3;~&Xb26xO%~;(~tJ!D7)#U*d0&h*V5bJi3TVJrpU`hm}4H#!xkYA2&KtTa5@nlD0{<~G7S&W zFHT!3{iPLdGZN|n`7q4Q@no(uHb);lGWnKZormmVHl&U50r?HjLS#h(*zPeW8nmX! zuirbK3)IdZTCL(nsH|U{=KfX-X6dlM+gg~X+$Kyhs?5B}cqBJdy?QkKL_%16U|VqKql#^2oMM>h8KeHqV+hiI zS8jkB1MM2j+KDoW-*gxg830!Gu>OrqSc=tU z6fMDOqqj60Pwv@i`rXF_9PIN)Tm=s+iNrrJSkSMMv4KqZFYKjegt>Q>WM=WOO zrxJf*c^_O9s;E-Tu!1F>;LgD{_X^>p&#KFpPDu>>ANWp5bOYhR&Zn{cY2AdJ`459I zARQ48T0ezy`TumJ|69iiiLaVYc{sMebp)O2=$NiV!;UDGVHS}F%R!9Pb1#v!vEP19 zH-|cT5h1HOK1)(;wIfNPvVH0^qgnp9^hH&w|I8lck?R4+mF*m>PXa0WiwJ+4Y~ml< zF6907s;+MV8C4-az_}WKNB%Gg&Vrc*eOYbhch@5YyB7xM zso6N|?@+>g)Sa3)aj9x@0JidPeezY$s$O&B0_2K+&rQJN)P3B-y)wN4KU6srjhVmV z9Db8b601=x-~$E@Qgwi@teHaTa+Gvf>A)fbed@&Qa(HaASs>-c%-)Y}c`te0$8B~o z{mR}&i;umMb=&g*-**+}JjG?#(t8rS{;bA&FiTba?Zyw~3as-SugRx8+;TvX`#WHLj~Ws=PH* zJE@Z&!bN^1yZ4j%j0pwTk;_U!En+9s_D!D*uB4u;QiVM@Vyi(~ctdT_2OaZJFX_T7 z$vvCz1|ME)f3xm3+Umm1aChQv{m4zP=KMW50h?zZ7z}CM6`?j(<%yN%PtR^MVT0{L zxJY@{Qy70T^g?D4e*RaRVGx59a!s$LTK)TXdPDW4_B%36{6XKwC%;o|FLgZMzhKbj>s@{;O=EH{rZd7VF!PvYIGlrJ5=x|sK-7S zl63g=ZpEF6Amn6Xs>o}+5nn>gE6C;jdE3|^M6o3oo7fPRfEnM=k~ZC5!pX%G%O4I9 zTGVldzZwx5X0-Bo;|r(~8-Wy-pK*H|`O|;$```jD{@`LPF}K|FOQYG=e6Ow7;BW6N zAFKz^01&%IDjq}w<;2TF#SW~! V!|S6fUv-0^fHoCWk#XJOzX0`lCa3@a literal 0 HcmV?d00001 diff --git a/backend/providers/wechat/certs/apiclient_cert.pem b/backend/providers/wechat/certs/apiclient_cert.pem new file mode 100644 index 0000000..e4479cd --- /dev/null +++ b/backend/providers/wechat/certs/apiclient_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENDCCAxygAwIBAgIURWPsWEo1vIT7J6pBAMk0yakdWcowDQYJKoZIhvcNAQEL +BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT +FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg +Q0EwHhcNMjUwNDE0MTIwMTI2WhcNMzAwNDEzMTIwMTI2WjCBjTETMBEGA1UEAwwK +MTcwMjY0NDk0NzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL +DDDkvbPoioPvvIjljJfkuqzvvInkvIHkuJrnrqHnkIblkqjor6LmnInpmZDlhazl +j7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAL4aNZ3BGiuBBfBnyi5l5bxSxSCOJJQ8oskcY5lA +RJrT3GbOb4NVlY0I8Qcm/PVsOZI1dWxBRZET/7IzBJ9759qrR3gFmLDW54VtHKPh +XD/HsHa9jSLzKjRXJOdZ0LpBlFz5X51u48kzU6T5B/bKD41mHPde5Na9A6xwBz35 +/dqPx+FclCVGY1vLvfrDSIO70RAW8+eRWzXT+VZHAgK/MRsQyrsPZJJdL+Vz+pLz +h4dhgKcfxvc0Y0K3uJ9Jc8l6wZP/6nAEqY95/pOUrSmOCqqIqW0/Tidh4/tSPPmv +y/8I95tQboi6G3cSMfziLhQKlwF0j+YPaskicn+OKIKM/u0CAwEAAaOBuTCBtjAJ +BgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGE +aHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0 +MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFC +NjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEB +CwUAA4IBAQC1sIAaLiXzhLJj0XzTFlCiJ3KPggLA4PnbNvzj6sma0ojx8mOHgfHb +hR216vGY0Ll9ZpbAYR9GdEuUWVawZ38Z4GJVFAOCr1pp6DqeM3A/dTk+V4vJawZz +85AtfL1/heU1xsW0AbyPrfDiMHMieHEDNvRvHjQmjZ42aRbHDdRzDH0TIt0paRPB ++ubwCmr947oMe01PWWvF8g032d6NxN4CTPuBuWnJG9OQOm2KQDb4z5GftiJnFbay +KB3WycuqEFbHXVFgn7jrc9+uX0oRE7+iIfGqpcfJrKD93lP2r9AZ6Oxhk3TaNFSQ +u+/uR1Lg1b6vIJqI8otjDH9j5QVLAj5k +-----END CERTIFICATE----- diff --git a/backend/providers/wechat/certs/apiclient_key.pem b/backend/providers/wechat/certs/apiclient_key.pem new file mode 100644 index 0000000..1a8ad54 --- /dev/null +++ b/backend/providers/wechat/certs/apiclient_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC+GjWdwRorgQXw +Z8ouZeW8UsUgjiSUPKLJHGOZQESa09xmzm+DVZWNCPEHJvz1bDmSNXVsQUWRE/+y +MwSfe+faq0d4BZiw1ueFbRyj4Vw/x7B2vY0i8yo0VyTnWdC6QZRc+V+dbuPJM1Ok ++Qf2yg+NZhz3XuTWvQOscAc9+f3aj8fhXJQlRmNby736w0iDu9EQFvPnkVs10/lW +RwICvzEbEMq7D2SSXS/lc/qS84eHYYCnH8b3NGNCt7ifSXPJesGT/+pwBKmPef6T +lK0pjgqqiKltP04nYeP7Ujz5r8v/CPebUG6Iuht3EjH84i4UCpcBdI/mD2rJInJ/ +jiiCjP7tAgMBAAECggEAVYVe94BGsKmTrWpT13m513X4/sNTi2iX5xehavExq+GB +trJKEnBvHgqWvBv7EsHESJVKJRBcJn8zucwf2UuZq5MATOtfnLahYzIJ/2PD52GD +bnepxb5VD0Tg8j9CmngkMYtyS1X2na48g+wQfCK8ymTUxSholH5l565iY6xSWn8r +SD/u/EBLv69i40uocG1hUUicrJZ1wc5T0ct3GpfiA1BfH462/dp6mROONdpwM8IT +ltRH4wjIc2nPgE7eNbXlHg+KkqyNNLA+BeN3yn001QwvP6Q0panuCTsVVlvEuGAY +RwXbu/0fHFbppIpgfr7AFGRWKTF66Peq3ozsG9jNgQKBgQDviSJxN2Mpdln4i5F3 +74s8FMtZ5bY63RHHcvJ5/D9G1iDNHFgLJsgdrbAhLqBbqg73EsIT8TsPlAqKPKS8 +EGKBg75MsMSYu7EmzIURV3Gy+Pou9jOkTUfQfblkiV+uJjWQPlBlfksL1bQnfSvZ +Pk1DCwGMb5DMDazAQLP9/wtLYQKBgQDLKz9YHF+wFsnfUjBQngDLCTkxrfxp8y84 +s/z5IRZIEdfxmnaEeWJXYa0oeQumNLSVHrryvHm3vkBgKexN49TWUGIM3q54gi/R +FPXXJKarDEI7C86Th3g+3FPEez5v+CEncmlB9X3kBT0ZFROWD3HHaz2DUKPVmJe1 +eUOtAN0LDQKBgCoulx8i5taFXgCz61EYoQdajhjtp/KjvZ7G8kZjEm2SBcK5DBQi +pzj6vjqJsHmT8AC4j+7dG055/oUresMXi5FNNvTgaC6RVvgDKifMo1wmFkCw4JU9 +erkPetdmja/oUKRvJM9Kt0KFRq1xkIg4PXjh9krZ1sDoY5STkF7ZTA7hAoGAQhPv +xzV7Pac7wwFVK3MoKOD4FBtVRBRO4G9RsKk9OPVsuWyWbWGZRXhEPCyaSFVOAk37 +WaVJJSSghWY9L9wQxh9gtHTcY99bs/HQP0fxWSJkjBW7+ymNR0ybhgTbeslF5zGD +4Gr6peW6SGUdeKnPRJ+xYvsgPgEiHmixRRxJyCUCgYEAoguVZdpDaRDZGGrTghwj +F4kMIyEczFeBZtK2JEGSLA6j8uj+oBZ26c6K4sh/Btc0l6IkiXijXbTaH87s52xZ +im8aIZZ9jDKUFxtjVUL0l9fjRsCLAvaBbWw3z4EdtOGuYlnhNCheeSd+/Lzqrb1q +pnTiwBHnQCMFFL/rNcz/Mmk= +-----END PRIVATE KEY----- diff --git a/backend/providers/wechat/config.go b/backend/providers/wechat/config.go new file mode 100644 index 0000000..55fa907 --- /dev/null +++ b/backend/providers/wechat/config.go @@ -0,0 +1,47 @@ +package wechat + +import ( + "go.ipao.vip/atom/container" + "go.ipao.vip/atom/opt" +) + +func Provide(opts ...opt.Option) error { + o := opt.New(opts...) + var config Config + if err := o.UnmarshalConfig(&config); err != nil { + return err + } + + return container.Container.Provide(func() (*Config, error) { + return &config, nil + }, o.DiOptions()...) +} + +const DefaultPrefix = "WeChat" + +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(DefaultPrefix), + }, + } +} + +type Config struct { + AppID string + AppSecret string + Token string + EncodingAESKey string + DevMode bool + Pay *Pay +} + +type Pay struct { + MchID string + SerialNo string + MechName string + NotifyURL string + ApiV3Key string + PrivateKey string +} diff --git a/backend/providers/wepay/config.go b/backend/providers/wepay/config.go index 8a300a6..aad1637 100644 --- a/backend/providers/wepay/config.go +++ b/backend/providers/wepay/config.go @@ -15,14 +15,3 @@ func DefaultProvider() container.ProviderContainer { }, } } - -type Config struct { - Debug bool - NotifyURL string - - AppId string - MchId string - SerialNo string - APIv3Key string - PrivateKey string -} diff --git a/backend/providers/wepay/pay.go b/backend/providers/wepay/pay.go index cfb2462..b5405bc 100644 --- a/backend/providers/wepay/pay.go +++ b/backend/providers/wepay/pay.go @@ -5,6 +5,8 @@ import ( "errors" "time" + w "quyun/providers/wechat" + "github.com/go-pay/gopay" "github.com/go-pay/gopay/wechat/v3" "go.ipao.vip/atom/container" @@ -17,13 +19,19 @@ func Provide(opts ...opt.Option) error { if err := o.UnmarshalConfig(&config); err != nil { return err } - return container.Container.Provide(func() (*Client, error) { + return container.Container.Provide(func(wechatConfig *w.Config) (*Client, error) { // NewClientV3 初始化微信客户端 v3 // mchid:商户ID 或者服务商模式的 sp_mchid // serialNo:商户证书的证书序列号 // apiV3Key:apiV3Key,商户平台获取 // privateKey:私钥 apiclient_key.pem 读取后的内容 - client, err := wechat.NewClientV3(config.MchId, config.SerialNo, config.APIv3Key, config.PrivateKey) +// 1、你最多可同时使用3个有效证书,为减少风险,建议及时作废不使用的API证书; +// 2、API证书包括:私钥文件及公钥证书(配对使用),仅保存在申请证书的电脑本地,无法从系统下载; +// 3、私钥文件名为“prikey_序列号”,公钥证书名为“pubkey_序列号”,序列号请查看上述列表。若无法找到证书文件,可申请新证书。 + client, err := wechat.NewClientV3( + w.Pay.MchID, w.Pay.SerialNo, w.Pay.ApiV3Key, w.Pay.PrivateKey, + wechatConfig.MchId, wechatConfig.SerialNo, wechatConfig.APIv3Key, wechatConfig.PrivateKey + ) if err != nil { return nil, err }