Commit 1dd7c9e0 authored by wangp's avatar wangp

lakala

parent 4bd5ae32
......@@ -34,7 +34,8 @@ WORKDIR /go/src/system_pay
COPY --from=0 /go/src/system_pay/server ./
# 拷贝配置文件到当前工作目录
COPY --from=0 /go/src/system_pay/conf/dev ./conf
# COPY --from=0 /go/src/system_pay/conf/dev ./conf
COPY --from=0 /go/src/system_pay/conf/prod ./conf
# 拷贝国际化文件夹到当前工作目录
COPY --from=0 /go/src/system_pay/i18n ./i18n
......@@ -42,5 +43,12 @@ COPY --from=0 /go/src/system_pay/i18n ./i18n
# 拷贝国际化文件夹到当前工作目录
COPY --from=0 /go/src/system_pay/docs ./docs
# 拷贝私钥、公钥和证书文件夹到当前工作目录
COPY --from=0 /go/src/system_pay/cert ./cert
COPY --from=0 /go/src/system_pay/cert/dev ./cert/dev
COPY --from=0 /go/src/system_pay/cert/prod ./cert/prod
COPY --from=0 /go/src/system_pay/cert/prod/bk ./cert/prod/bk
COPY --from=0 /go/src/system_pay/cert/prod/dbc ./cert/prod/dbc
# 运行打包好的二进制
ENTRYPOINT ./server
\ No newline at end of file
-----BEGIN CERTIFICATE-----
MIIDoDCCAoigAwIBAgIGAYliU9EVMA0GCSqGSIb3DQEBBQUAMGAxFDASBgNVBAMM
C0xBS0FMQS1MQU9QMQswCQYDVQQGEwJDTjEXMBUGA1UECgwOTGFrYWxhIENvLixM
dGQxDzANBgNVBAsMBkxLTC1ZRjERMA8GA1UEBwwIc2hhbmdoYWkwHhcNMjMwNzE3
MDUzMDA3WhcNMzMwNzE3MDUzMDA3WjBgMRQwEgYDVQQDDAtMQUtBTEEtTEFPUDEL
MAkGA1UEBhMCQ04xFzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMQ8wDQYDVQQLDAZM
S0wtWUYxETAPBgNVBAcMCHNoYW5naGFpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAnYI0nOuQROJIktb08ABlSxni/ADNjBOx4CqdknmBV/1G22cCnLX+
MDQL8wZ2tLU9vd1MSu55z4dIrmfqEwAWTKl0Skabd5tLJArUPVO1slVOREMgCJZ2
i3tuaRuqFTtBeJWa0Cxt3etmnn1il4wm6o+fT2NjUMvBzzw6jk4lMQwuUWvbXFOa
n5B1D5LIKU1AybYsNNzxXWcNwkgd++lvSnzYYGYHPpJy2vBqSJFwHEPhvtd9w4M5
K0xAKwyxK+/sVYjomvw58crRkZ/wstLsy28q8K3ZWJ/7dAmyn79830w7h72L6QTV
tUOZTM8nUzna+73q+JAUYqH0HmBgCUK1iQIDAQABo2AwXjAPBgNVHRMECDAGAQH/
AgEAMB8GA1UdIwQYMBaAFL5HJE8IJYMDJMIUCZ6WgS5ekdFoMB0GA1UdDgQWBBS+
RyRPCCWDAyTCFAmeloEuXpHRaDALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQAD
ggEBAAT+TAKbS45oHIY7Tj/rvkHYSbMkwWeVOqun22GxcVinUj56ULjJxGf6HhvS
4P/zYo8PycamP4y9Zf4k34mO+jHYivTo86uXPabV8dj9qpvqFNitA4JmqRQex7MB
UTByBjlNPRgYDUzYupkM7uXqHjQ5MrpIDg8gCWBRWY+mdYceC6GUg7bg/o9Off5t
c/RY8r29J5xENt8NdpB8XEjfG8EJ/OMW7KNtiBIVsjPV112HKCRryHch2OHLFgJK
Z/REprO1qocU0aTZBxYHMc1NUUyLwmBwVgFck/AJ9yREQXHGCnXZg7r853IF4Voc
8vK8cztFt1Os49uyLaPP4jwrt8E=
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCdgjSc65BE4kiS
1vTwAGVLGeL8AM2ME7HgKp2SeYFX/UbbZwKctf4wNAvzBna0tT293UxK7nnPh0iu
Z+oTABZMqXRKRpt3m0skCtQ9U7WyVU5EQyAIlnaLe25pG6oVO0F4lZrQLG3d62ae
fWKXjCbqj59PY2NQy8HPPDqOTiUxDC5Ra9tcU5qfkHUPksgpTUDJtiw03PFdZw3C
SB376W9KfNhgZgc+knLa8GpIkXAcQ+G+133DgzkrTEArDLEr7+xViOia/DnxytGR
n/Cy0uzLbyrwrdlYn/t0CbKfv3zfTDuHvYvpBNW1Q5lMzydTOdr7ver4kBRiofQe
YGAJQrWJAgMBAAECggEBAImCo2xcPBfndnS8NhtSPRzT/NcF3G3uw9xxWCAI9GNd
O/9Qb3dhbAmpZsVFX11k3gJksba5fJ8x/MJG9pSf/tfvGRe/jPtfGLreuWzRKFAJ
KctuzwiwU85ydHJPNK5UjVQ5SG92WnTkjzLPRMQKF++wc+VbX9mqCgpjCrwyfUXT
eC8iXOGrlr7+DDg/Rex3xUD00PC0MyMcCAuO3FWecjegXzEsgR2q8lzShhA5V5Td
itjNXx4wr430pZHMA/F6xl3bHhf8jX1a69ODqGl0NS7b1V1iY6yMN1V1Z2CzWbi0
TFzo17CEvOisdvGc9kHPmLUrCvJgShnDYDHDeGpXtgECgYEA8NH7HFBa6EChKQG2
pxNx5vOaact0dEbkHxy/xd+SDKw5hrAiToct9Y5dQVSr91pmhFv2CL82SA8kUc2X
wRh+cw7BkO9eJW31GVGNXqx4hFriE86QtmG06ke+NrqUXWJ+PxTPaPfN2UXLXT6Q
NctQdlZXA9YQZhyoVATfy2rEEkcCgYEAp2/byej/mmm5IEkVaHpgkbU0TkVN+9aW
Ng7O5R6n0MP6e7Q4nXef+q/q6hX5n+yUfTb10wg9IYKCMDKRedK7rP8KXgchopLU
rSk8+A0Y+3frkW/Ao8G6g0cDDPo9MC9tLQ1SspQF0P4syDv5LmLyJsW+PXtceZxk
v6Wn6Jogka8CgYAD8kz9L8vtlnGNrHuDzWvGbyOOrEjiRu8iG2SBJ6LLFl9y95v4
UXrNVWHt2idfTFn1vVQQ3KFVGPptZMMh5Pbdh9ZgO6v9TQoBOjbo4EaxVJPz4yS3
+G3wkPBrES+xQBX1jq+/dqAm+V/VzVqrpwNQjSWr6GwoYDvZ9KJ+QOeprQKBgQCM
LJdimA+05CG6J7UmfJ1wHrWleVvqJCIpK4iGRH3Vxtxix+RF4Cosoy4Vv0P2YQeH
NIXkoJcdALehRhSIWqYIFJRHV80O38HxHf8O41gw3pp2bYpnDf7pfH/PU4f6WRob
h3XeTxH3f3NaRus7rFZxo0a7DhXDMe0ejL7fenkdvQKBgCR21jJc1ZTKcvq5LVVY
DWwN9wC/bF7Vy+O1nJt9rociMJ+ilWH0eLAhhNnUNyLxCyPxR0eyOP40mz+Yxjy4
syWNuRarZGL6IOiZLSYgDq1msf5h9zjVIOItTURYn8lkCkfyrJTLl3/9V3CW+M8I
YyID4OmkWXnqX1LN7PsrNRfw
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnYI0nOuQROJIktb08ABl
Sxni/ADNjBOx4CqdknmBV/1G22cCnLX+MDQL8wZ2tLU9vd1MSu55z4dIrmfqEwAW
TKl0Skabd5tLJArUPVO1slVOREMgCJZ2i3tuaRuqFTtBeJWa0Cxt3etmnn1il4wm
6o+fT2NjUMvBzzw6jk4lMQwuUWvbXFOan5B1D5LIKU1AybYsNNzxXWcNwkgd++lv
SnzYYGYHPpJy2vBqSJFwHEPhvtd9w4M5K0xAKwyxK+/sVYjomvw58crRkZ/wstLs
y28q8K3ZWJ/7dAmyn79830w7h72L6QTVtUOZTM8nUzna+73q+JAUYqH0HmBgCUK1
iQIDAQAB
-----END PUBLIC KEY-----
-----BEGIN CERTIFICATE-----
MIIDoDCCAoigAwIBAgIGAYliUP1oMA0GCSqGSIb3DQEBBQUAMGAxFDASBgNVBAMM
C0xBS0FMQS1MQU9QMQswCQYDVQQGEwJDTjEXMBUGA1UECgwOTGFrYWxhIENvLixM
dGQxDzANBgNVBAsMBkxLTC1ZRjERMA8GA1UEBwwIc2hhbmdoYWkwHhcNMjMwNzE3
MDUyNzAyWhcNMzMwNzE3MDUyNzAyWjBgMRQwEgYDVQQDDAtMQUtBTEEtTEFPUDEL
MAkGA1UEBhMCQ04xFzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMQ8wDQYDVQQLDAZM
S0wtWUYxETAPBgNVBAcMCHNoYW5naGFpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAoO0vL50XaJxXubBGZdd4dXi3wB7ASLbvxtXwqxgyx0GD49cmnGaa
dBO0lmAdomTR88wKIqK/IjaQrbSCGI9mxAMG1irTJo6rh4kB7VK+rcuFOGfvSt1s
CJqB5+GdoLg5aNFayWzWXOayrgyOgnnY9BcxE0QApB2KC27OmsEhUlUnWXYgkn0L
y0S59/SMOyaXpzyZXnY5KSq6xwTqUg/INKyI0m5xUKdHbympOU9Pp3OrTn3srjOs
w3N7XBNzJSOV4Zjpy+LpICZs7sTLQVf9wBoXtNBVb5Xc9S1348ZuXto2i5IF5VgM
lwQOLfcWrTMkq4dYqSX34YPFww5iqhS+fwIDAQABo2AwXjAPBgNVHRMECDAGAQH/
AgEAMB8GA1UdIwQYMBaAFH2q4V1Vd3FvjzJpkGPMv+jY6mhqMB0GA1UdDgQWBBR9
quFdVXdxb48yaZBjzL/o2OpoajALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQAD
ggEBAIiO/+6Tdzb3PsF5NP+NJUacXu5DscBXCyi9UUg+p3ZQHaxxzQFxHOY8h40y
fLqC92+nsDkKdSe8jd1E2+arptesWJqFjJMxljvNy34TehoXp303m+cTI85yNC8M
2Akcna46yfltU2HNYsfknPd4YejrSw9fbKrLMb6VaLdy0MFQHG3+86oAY55ii+c+
0e54ZAYvGp+ruFCdQIyjBugFy8skXN+moFsySbFaoyWGaWsQQ6W4e2SSrLhzcRdk
XjT4gNEnfMDmNcuvgAF9pG3M0hl2epX0131ed2mkYu0/S2comAsJfVr/rUhmmxCH
IPKITz14IgfgpbxCIhMq56zOlb8=
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCg7S8vnRdonFe5
sEZl13h1eLfAHsBItu/G1fCrGDLHQYPj1yacZpp0E7SWYB2iZNHzzAoior8iNpCt
tIIYj2bEAwbWKtMmjquHiQHtUr6ty4U4Z+9K3WwImoHn4Z2guDlo0VrJbNZc5rKu
DI6Cedj0FzETRACkHYoLbs6awSFSVSdZdiCSfQvLRLn39Iw7JpenPJledjkpKrrH
BOpSD8g0rIjSbnFQp0dvKak5T0+nc6tOfeyuM6zDc3tcE3MlI5XhmOnL4ukgJmzu
xMtBV/3AGhe00FVvldz1LXfjxm5e2jaLkgXlWAyXBA4t9xatMySrh1ipJffhg8XD
DmKqFL5/AgMBAAECggEABuKfBjZ+bediiXtVR740VTJZCktGhtXs5GD67xcV9RiE
gBcQe9iX+ydsrpJmMjCGGxw7wsebzebvwb7bYhmgl/pZLIigiCHKjP37qx/DMMRo
asVno5hdqvCRZk5s5Bd9vVJXxA54DXmBY5j97+8urSLg4qYiMONiqKKRDGX++vrA
WMmF2fDVoQ2oF4viEkaurRjAIVEVrGpCAAlAVfMe2LWZW2Z/7UJ+r9GlW8HqXt/j
cC+rUTzUUrXXQGzXO1fC9v9LuBinPCmpO4QsJ2C43bPayIu3HNa+fiTGpFvGfPCS
DJSg/xxhFv8m1Gv7odRfk77F1ZCNDy+sGq3dL1nXIQKBgQDPmTA/dR1ki1jprckP
00W+lzcul1+EA9I7JvBzjC73+GPKCmfAHc65w/jeORQmqeLVkaFyI+YMjV5AQVa7
DgX+f/nnckzCs67LoOrSB0yaug1tZ4dzTpnT7JucCdcsttgrjeenjWUP1vgAjy3w
Won9Cu7k09Ij8fJBmTrPvmJiowKBgQDGclD1nU+fxgMU1gp4joUY/dBaJ8D6wr/+
I0CeSWWru1SbobGp6q6PpgwqjaB9RyDf9NEz+axu88kXeVBJyQ5oYoKkL44tSbE0
AQhiE/wGxhMxwHUaUWK3JjeVoXlnki6wUWpQ2u19uFsiHCe6ynGEYBtpk71+gTal
6V90f7BOdQKBgFuiQqnACDlZSOXcz+MsXpzCIpluN7sN9L4ncfuO5SyPd3y3GxSy
E43r8u4kQ8DNPFMI9Tpsnh7sR64VKTNn/T1ZP/XpffhzV7SKUxxiHG4vsb2Y9TDw
gPYKeqVlspUKIGEZQiezQei7+rxEdwKg9Ee9i7V1ykwTf9t0x4DriIIBAoGAL1V1
GiC7rVB9y6qCNN9Jv/xKhjaVQTrSsLuX3imDpsK4G6clyXHA0WK55CyD613b6Y9r
lwompxBfFspI7FCYry1QG/l74DGDovPcHAjIRJVaXrOZOv3OngDvoTEy1BF6MXQ5
969AlowysKAmmddP3FNQNo6W1GXdsxVHP3J1i0ECgYEAvWSQhCLrvepp1Wb++i+0
KgnvziR+VQM+NFOTalLJY/4ntJRFlGlcV0fiYhuQ/tCC1zDjoGC3FmcwuS5e8/uB
NNQqct7wk1X9yFCGfBAbCuGE1LT+VrVd2xEunBkH7sE5vBDdaBCcThiGd3enNs/p
meIENZk+vNjIeo3gA2C9+xU=
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoO0vL50XaJxXubBGZdd4
dXi3wB7ASLbvxtXwqxgyx0GD49cmnGaadBO0lmAdomTR88wKIqK/IjaQrbSCGI9m
xAMG1irTJo6rh4kB7VK+rcuFOGfvSt1sCJqB5+GdoLg5aNFayWzWXOayrgyOgnnY
9BcxE0QApB2KC27OmsEhUlUnWXYgkn0Ly0S59/SMOyaXpzyZXnY5KSq6xwTqUg/I
NKyI0m5xUKdHbympOU9Pp3OrTn3srjOsw3N7XBNzJSOV4Zjpy+LpICZs7sTLQVf9
wBoXtNBVb5Xc9S1348ZuXto2i5IF5VgMlwQOLfcWrTMkq4dYqSX34YPFww5iqhS+
fwIDAQAB
-----END PUBLIC KEY-----
-----BEGIN CERTIFICATE-----
MIIEMTCCAxmgAwIBAgIGAXUrc4b4MA0GCSqGSIb3DQEBCwUAMHYxCzAJBgNVBAYT
AkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRcwFQYDVQQK
DA5MYWthbGEgQ28uLEx0ZDEqMCgGA1UEAwwhTGFrYWxhIE9yZ2FuaXphdGlvbiBW
YWxpZGF0aW9uIENBMB4XDTIwMTAxNTA4NDk1MloXDTMwMTAxMzA4NDk1MlowZTEL
MAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcx
FzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMRkwFwYDVQQDDBBBUElHVy5MQUtBTEEu
Q09NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwAXZw9lupWcFXouC
Nhm0DQT47Zf4KOIRF8rqT8Ps3pYzT8odROJ8rq4P+lciGrg29czpqrRM22yQktFr
itvcM7JlE6jFbGH3rycnvGvhRYU/j1N9k0ozm8oVwmKX357/OtGzNivBECGSnU9L
Bkp4Nm9M1K4cOwEuZ0xsQEthZjQYF0mDpnlWmVJL5i1Lq834atN2qrb/mzMHBNtD
JnqRV7rPL39lKpe7LJiitsC2JuW1UbWZZU1NNwA/rz2d83C+KD1DLJ0+sMYY2Q3T
OQ4BPAowDEwOH7XAXrHM/0kRm+ZeIFlwevEGIQWmMt1Ogz+AW4Iq0slINc4wOINK
vH9tHwIDAQABo4HVMIHSMIGSBgNVHSMEgYowgYeAFCnH4DkZPR6CZxRn/kIqVsMo
dJHpoWekZTBjMQswCQYDVQQGEwJDTjEQMA4GA1UECAwHQmVpSmluZzEQMA4GA1UE
BwwHQmVpSmluZzEXMBUGA1UECgwOTGFrYWxhIENvLixMdGQxFzAVBgNVBAMMDkxh
a2FsYSBSb290IENBggYBaiUALIowHQYDVR0OBBYEFIya0Yc4OSBer55JLyA0AYe9
m8mTMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA
A4IBAQCBEwOlk3mXigNv94Drn3dcaY2ml/y+8yNpAIuUhuBE00WFoqEX5lOatFy5
fzdXuC12lBVQ8SjSm3aH7k2X0eXqDzkOHiur2ZBRKmJ++J4TeenuSUOjSIbQK/DT
vxaqFUjYwFSVCyizpy7wfU4wKt+jOuFb9LyULJ9lkM1dV9Kh7Lmd9+nlJYYuPEPU
LJkkVZqSALSiiJudXnTwlISjZTXEAkJpdIlMw+hvPTAkoG95B95M+OV/uLbItGK+
qT4+RHWo8EbBDPQYo6J4QYHOxRlfMoGBMyrz6XDt7ELLmT7ld4aE02w6KQPfK3gq
kLDT+/STozvaNmXzBJh7J6KqxJBH
-----END CERTIFICATE-----
\ No newline at end of file
-----BEGIN CERTIFICATE-----
MIIDoDCCAoigAwIBAgIGAYi309dRMA0GCSqGSIb3DQEBBQUAMGAxFDASBgNVBAMM
C0xBS0FMQS1MQU9QMQswCQYDVQQGEwJDTjEXMBUGA1UECgwOTGFrYWxhIENvLixM
dGQxDzANBgNVBAsMBkxLTC1ZRjERMA8GA1UEBwwIc2hhbmdoYWkwHhcNMjMwNjE0
MDI1NDUzWhcNMzMwNjE0MDI1NDUzWjBgMRQwEgYDVQQDDAtMQUtBTEEtTEFPUDEL
MAkGA1UEBhMCQ04xFzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMQ8wDQYDVQQLDAZM
S0wtWUYxETAPBgNVBAcMCHNoYW5naGFpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAqwSz071wFg3OCDNy6KnNuu5cnFqRTZC931usgjT7WdE8Dcf9Gxsl
V8XoJkiBDyfLJgXiSXb1cOQDfU2hX+y/IFeZ9jxvtSBsZKLtfHUCfo8NF9Hs7egD
FhSDPi+XljJxcezGknrqt08BIpxHk+baAhq4Lt3A6LjgdxhnNYaTF5iy+ZZJFq2a
VX39rkalgMqgonazV1PYIS6Oxmq8gND50svkfYEH1gt1rh85naO47Eu17bPlTPe8
i+D/L/iVmBK1vvq15MPXuBzXrL0Ingt9Et1nJc2iZQqeT4V+qKu4E2WFXtkVU7X7
r4PjsWeJgsefXJi2VfDBC4vz4nHRC6QAVQIDAQABo2AwXjAPBgNVHRMECDAGAQH/
AgEAMB8GA1UdIwQYMBaAFDaGyZwckXAO7y0JGh+DLpV1wf9IMB0GA1UdDgQWBBQ2
hsmcHJFwDu8tCRofgy6VdcH/SDALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQAD
ggEBAAVGlgLuy8BwGo+l8IcdKPVY0/ZK/Ly5yGXH4dY3J/VAxBR3e79RWD1eoK+O
3nBkUAIGYVWhgfkt3uNmrFzGRMlPuiO8jEDdvHU5sIuJX+sOpYRhEzcvnxFJefnM
lU8qpEBNiYNK+1nrdJjdUKCQuPoH0qlIvJZUKIPcsHb5wAnjwe7tmF3foDH4qkW5
yZ7YcgVTHJZuyUTINlnw5OAYki+VOr/sEWwXtPI3/BzZa9c59qFVqjPnYuchj+7R
7fF93AVFUB9Rkj25vwYaYCBKnva84pazjUZWVUYvOXEPwgBgKKX5Pt/wjt3YB4Ds
xmFFbytGKIBvAStvp7LAIdKUgzc=
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCrBLPTvXAWDc4I
M3Loqc267lycWpFNkL3fW6yCNPtZ0TwNx/0bGyVXxegmSIEPJ8smBeJJdvVw5AN9
TaFf7L8gV5n2PG+1IGxkou18dQJ+jw0X0ezt6AMWFIM+L5eWMnFx7MaSeuq3TwEi
nEeT5toCGrgu3cDouOB3GGc1hpMXmLL5lkkWrZpVff2uRqWAyqCidrNXU9ghLo7G
aryA0PnSy+R9gQfWC3WuHzmdo7jsS7Xts+VM97yL4P8v+JWYErW++rXkw9e4HNes
vQieC30S3WclzaJlCp5PhX6oq7gTZYVe2RVTtfuvg+OxZ4mCx59cmLZV8MELi/Pi
cdELpABVAgMBAAECggEAAQExEUBepTKFkFTFCwrcU4nM73o0ulDsXKCMPeOTym5J
PQd8vCkHqiFWgMsSPwWL0vhb4PSa8oPUZWsMVKTuZoE9PU4TlevP1zOB06ZYUmgC
uq4YBznCsuGB996NtGstcW7jp76jHFqRdiOW5A6KH1MK2/Ofi35yiyCQkqbsvEm9
3+oNwcbLSexDiU45tiwRDy7m2siikZpaxb4SV5JMtO27zXKFQGlVAtb52kHTMwvT
Nqrg2wIohhs2pHbImJMhDrVukFuW3UL1F2CIbpgZG36Lpy3oxCHtCNm6mggpy4Pe
+rgPW3ZPGoTZaiaqbEeem+hG/w9UylKZZV2B+AhFQQKBgQDwnx9eDUryMi58a5AG
kA5vwtCqYaX4veIjTFm5b70n0vw0h11Sn/YPryx8jc0bb+acekNTUmXjbRZzpGmn
MFiP77v+zxfakqwSEEDgsJBHU+HZ3m6p/ejEMX/mQOdDUrwqm6Y7UmMMDsz4b9BZ
7o0etiHgPKPvni6+D3LWImDwxQKBgQC18shCQYnYM5EHMunPN12dwcCbdFsvr9Eo
QPxXwDGOsGQliOAVrA3NnIvg0DgOnEuov9ieBd1L+mT6I4uRE3aRowislecFOYHT
Wj3HbXYWw94yXZrZyb9UnS6FSAG+xjP/RiooHs2Sprrz5nDnIylJxnTn0+3U+2a0
2bWddhGqUQKBgD0Ow7DkAp6OqUkdKkDgESm+76AsgycpV9bJKwNpHUCbwy+5Ia8z
tAaq1skMWn2Z2ZTfWXItOHmLVuUlVUH9fJuZo8S23EC0c0FqKmxZoWLYIDlevgoY
yhXu0Zul4Iku11ygfoATGdsXbl+kT+RiKiEe6l2yRY8qPoYv+V3o/1xZAoGATbxM
kwItQpHFhK3b9wxQkvYUtFYiH12envQk29jhU3VJVEAGfTvlKdOYb5SGXreoG5Db
m6glxDBWtAg7uN/36IEfU5039qN7NDF585pwuYk1hY84eZQYiq4dEhSRqlBEJuxz
VnDSo7VYapwp4JbFLR/9Eo8ZLcW7O8lILt4i7gECgYAubzT3SDYf5BlxQzzdVHhd
XY43f6SHCOsdE/7voyJCiQKwcJefkYJD/puvf1bHsfb5gsH4nyou0djKt4SM1SpE
SVdmIKIjKGFNiqFSbCEKI6s6UTfa4bIhx8ZbqjM6YWVmZFGzF00CP8qYZJgpA4Rr
X593bU9XLvgypO98+uFcDA==
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqwSz071wFg3OCDNy6KnN
uu5cnFqRTZC931usgjT7WdE8Dcf9GxslV8XoJkiBDyfLJgXiSXb1cOQDfU2hX+y/
IFeZ9jxvtSBsZKLtfHUCfo8NF9Hs7egDFhSDPi+XljJxcezGknrqt08BIpxHk+ba
Ahq4Lt3A6LjgdxhnNYaTF5iy+ZZJFq2aVX39rkalgMqgonazV1PYIS6Oxmq8gND5
0svkfYEH1gt1rh85naO47Eu17bPlTPe8i+D/L/iVmBK1vvq15MPXuBzXrL0Ingt9
Et1nJc2iZQqeT4V+qKu4E2WFXtkVU7X7r4PjsWeJgsefXJi2VfDBC4vz4nHRC6QA
VQIDAQAB
-----END PUBLIC KEY-----
-----BEGIN CERTIFICATE-----
MIIEMTCCAxmgAwIBAgIGAXUrc4b4MA0GCSqGSIb3DQEBCwUAMHYxCzAJBgNVBAYT
AkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRcwFQYDVQQK
DA5MYWthbGEgQ28uLEx0ZDEqMCgGA1UEAwwhTGFrYWxhIE9yZ2FuaXphdGlvbiBW
YWxpZGF0aW9uIENBMB4XDTIwMTAxNTA4NDk1MloXDTMwMTAxMzA4NDk1MlowZTEL
MAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcx
FzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMRkwFwYDVQQDDBBBUElHVy5MQUtBTEEu
Q09NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwAXZw9lupWcFXouC
Nhm0DQT47Zf4KOIRF8rqT8Ps3pYzT8odROJ8rq4P+lciGrg29czpqrRM22yQktFr
itvcM7JlE6jFbGH3rycnvGvhRYU/j1N9k0ozm8oVwmKX357/OtGzNivBECGSnU9L
Bkp4Nm9M1K4cOwEuZ0xsQEthZjQYF0mDpnlWmVJL5i1Lq834atN2qrb/mzMHBNtD
JnqRV7rPL39lKpe7LJiitsC2JuW1UbWZZU1NNwA/rz2d83C+KD1DLJ0+sMYY2Q3T
OQ4BPAowDEwOH7XAXrHM/0kRm+ZeIFlwevEGIQWmMt1Ogz+AW4Iq0slINc4wOINK
vH9tHwIDAQABo4HVMIHSMIGSBgNVHSMEgYowgYeAFCnH4DkZPR6CZxRn/kIqVsMo
dJHpoWekZTBjMQswCQYDVQQGEwJDTjEQMA4GA1UECAwHQmVpSmluZzEQMA4GA1UE
BwwHQmVpSmluZzEXMBUGA1UECgwOTGFrYWxhIENvLixMdGQxFzAVBgNVBAMMDkxh
a2FsYSBSb290IENBggYBaiUALIowHQYDVR0OBBYEFIya0Yc4OSBer55JLyA0AYe9
m8mTMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA
A4IBAQCBEwOlk3mXigNv94Drn3dcaY2ml/y+8yNpAIuUhuBE00WFoqEX5lOatFy5
fzdXuC12lBVQ8SjSm3aH7k2X0eXqDzkOHiur2ZBRKmJ++J4TeenuSUOjSIbQK/DT
vxaqFUjYwFSVCyizpy7wfU4wKt+jOuFb9LyULJ9lkM1dV9Kh7Lmd9+nlJYYuPEPU
LJkkVZqSALSiiJudXnTwlISjZTXEAkJpdIlMw+hvPTAkoG95B95M+OV/uLbItGK+
qT4+RHWo8EbBDPQYo6J4QYHOxRlfMoGBMyrz6XDt7ELLmT7ld4aE02w6KQPfK3gq
kLDT+/STozvaNmXzBJh7J6KqxJBH
-----END CERTIFICATE-----
\ No newline at end of file
......@@ -59,8 +59,8 @@ log:
# smscontent: '【谛宝医生】登录验证码为:%s'
# 支付
payurl:
domainname: 'http://tpay-v2.pet-dbc.cn:14880'
#payurl:
# domainname: 'http://tpay-v2.pet-dbc.cn:14880'
# checkorder: 'https://tpay.pet-dbc.cn/v1/pay/unified_order'
# orderstate: 'https://tpay.pet-dbc.cn/v1/pay/order_state/'
......@@ -71,7 +71,7 @@ lakala:
appid: 'OP00000003'
serial_no: '00dfba8194c41b84cf'
#1.聚合收银台(微信H5、支付宝H5)
#1.聚合收银台(微信H5、支付宝H5、快捷支付(银行卡))
merchant_no1: '8222900701107M5'
term_no1: ''
#2.聚合收银台(微信扫码、支付宝扫码)
......@@ -82,10 +82,27 @@ lakala:
term_no3: 'D0027598'
sub_appid3: 'wxc3e4d1682da3053c'
user_id3: 'oLvoQ5deygCMj2WrDjPVPvV1L1t8'
#4.扫码枪
#4.聚合被扫(扫码枪)
merchant_no4: '822290070111135' #结算商户号
term_no4: '29034705' #结算终端号
#配置项
#谛宝多多自营
dbc_path_private_key: './cert/dev/OP00000003_private_key.pem' #私钥
dbc_path_cert: './cert/dev/lkl-apigw-v2.cer' #证书
#必康自营
bk_path_private_key: './cert/dev/OP00000003_private_key.pem' #私钥
bk_path_cert: './cert/dev/lkl-apigw-v2.cer' #证书
#SAAS
saas_path_private_key: './cert/dev/OP00000003_private_key.pem' #私钥
saas_path_cert: './cert/dev/lkl-apigw-v2.cer' #证书
#拉卡拉接口地址
url_create: 'https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create' #聚合收银台(微信H5、支付宝H5、微信扫码、支付宝扫码)
url_preorder: 'https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder' #聚合主扫(微信JSAPI、微信小程序)
url_micropay: 'https://test.wsmsd.cn/sit/api/v3/labs/trans/micropay' #聚合被扫(扫码枪)
url_refund: 'https://test.wsmsd.cn/sit/api/v3/labs/relation/refund' #聚合扫码-退款交易
# gateway
#gateway:
# url: 'http://saas.pet-dbc.cn'
......
# 服务
server:
runMode: 'release'
#runMode: 'release'
runMode: 'debug'
httpport: 14880
readtimeout: 60
writetimeout: 60
......@@ -16,7 +17,8 @@ database:
type: 'mysql'
#crmdb: "root_shop:DBC_shopqwe@tcp(rm-2zenl1z0v6209a4jrbo.mysql.rds.aliyuncs.com:3306)/dbc_crm_manage?charset=utf8"
# shopdb: "root_shop:DBC_shopqwe@tcp(rm-2zenl1z0v6209a4jrbo.mysql.rds.aliyuncs.com:3306)/dbc_shop?charset=utf8"
systemdb: "system_pay:Pay_123456@tcp(rm-2zenl1z0v6209a4jrbo.mysql.rds.aliyuncs.com:3306)/sys_pay?charset=utf8"
# systemdb: "system_pay:Pay_123456@tcp(rm-2zenl1z0v6209a4jrbo.mysql.rds.aliyuncs.com:3306)/sys_pay?charset=utf8"
systemdb: "root:abc123456@tcp(39.96.85.45:3307)/sys_pay?charset=utf8"
# accountdb: 'dbc_saas:dbc_saas888888@tcp(rm-2zepcf8kag0aol0q48o.mysql.rds.aliyuncs.com:3306)/hos_database?charset=utf8'
# userdb: 'root_dbc:dbc_root888888@tcp(rm-2ze8jnj44l6ta299pro.mysql.rds.aliyuncs.com:3306)/mysql?charset=utf8'
# seconddb: 'root_dbc:dbc_root888888@tcp(rm-2ze095l91j14r251wno.mysql.rds.aliyuncs.com:3306)/mysql?charset=utf8'
......@@ -60,17 +62,28 @@ sms:
smscontent: '【谛宝多多】登录验证码为:%s'
# 支付
payurl:
domainname: 'http://tpay-v2.pet-dbc.cn:14880'
#payurl:
# domainname: 'http://tpay-v2.pet-dbc.cn:14880'
# checkorder: 'https://pay.pet-dbc.cn/v1/pay/unified_order'
# orderstate: 'https://pay.pet-dbc.cn/v1/pay/order_state/'
# 拉卡拉支付
lakala:
#通用
version: '3.0'
appid: 'OP00000003'
serial_no: '00dfba8194c41b84cf'
version: '1.0'
# appid: 'OP00000836' #SAAS
# appid名称: '机构-羿律必康(天津)网络科技有限公司'
# serial_no: '0188b7d3d751'
# serial_no: '1686711293777'
appid: 'OP00000859' #谛宝多多自营
appid名称: '商户-谛宝诚网络科技(北京)有限公司'
serial_no: '1689571622248'
# appid: '' #必康自营
# appid名称: ''
# serial_no: ''
#1.聚合收银台(微信H5、支付宝H5)
merchant_no1: '8222900701107M5'
......@@ -83,10 +96,27 @@ lakala:
term_no3: 'D0027598'
sub_appid3: 'wxc3e4d1682da3053c'
user_id3: 'oLvoQ5deygCMj2WrDjPVPvV1L1t8'
#4.扫码枪
#4.聚合被扫(扫码枪)
merchant_no4: '822290070111135' #结算商户号
term_no4: '29034705' #结算终端号
#配置项
#谛宝多多自营
dbc_path_private_key: './cert/prod/dbc/api_private_key.pem' #私钥
dbc_path_cert: './cert/prod/dbc/lkl-apigw-v1.cer' #证书
#必康自营
bk_path_private_key: './cert/prod/bk/api_private_key.pem' #私钥
bk_path_cert: './cert/prod/bk/lkl-apigw-v1.cer' #证书
#SAAS
saas_path_private_key: './cert/prod/saas/api_private_key.pem' #私钥
saas_path_cert: './cert/prod/saas/lkl-apigw-v1.cer' #证书
#拉卡拉接口地址
url_create: 'https://s2.lakala.com/api/v3/ccss/counter/order/create' #聚合收银台(微信H5、支付宝H5、微信扫码、支付宝扫码)
url_preorder: 'https://s2.lakala.com/api/v3/labs/trans/preorder' #聚合主扫(微信JSAPI、微信小程序)
url_micropay: 'https://s2.lakala.com/api/v3/labs/trans/micropay' #聚合被扫(扫码枪)
url_refund: 'https://s2.lakala.com/api/v3/labs/relation/refund' #聚合扫码-退款交易
# gateway
#gateway:
# url: 'http://saas.pet-dbc.cn'
......
......@@ -125,7 +125,8 @@ fmt.Println(data)
fmt.Println("signature="+signature)
// 1、读取公钥文件,获取公钥字节
publicKey, err := ioutil.ReadFile("../cert/lkl-apigw-v2.cer")
//path_cert := setting.Conf.Lakala.BkPathCert
publicKey, err := ioutil.ReadFile("./cert/dev/lkl-apigw-v2.cer")
if err != nil {
return false, err
}
......
......@@ -2,15 +2,15 @@ package models
//支付
type PlaceAnOrderParamInput struct {
PlatformType uint8 `json:"platform_type" description:"平台类型 1: saas 2: shop 3: shop mobile 4: 收银台"`
PlatformType uint8 `json:"platform_type" description:"平台类型 1:saas 2:shop 3:shop mobile 4:收银台 6:bk_shop 7:bk_shop_mobile"`
PlatformInfo string `json:"platform_info" description:"平台信息"`
GoodsDes string `json:"goods_des" description:"商品描述"`
GoodsDetail string `json:"goods_detail" description:"商品详情"`
AttachInfo string `json:"attach_info" description:"附加信息"`
GoodsPrice float64 `json:"goods_price" description:"商品金额,个位为分"`
NoticeURL string `json:"notice_url" description:"客户端回调的url"`
PayType int `json:"pay_type" description:"1: 微信,2: 支付宝, 3: 拉卡拉 4: 收钱吧"`
SourceCode uint8 `json:"source_code" description:"1: 微信 Native 2:微信小程序 3:微信内支付 4:h5 跳微信 5:支付宝(web)-扫码或登录支付宝账户 6:alipay(mobile) 7:alipay(app) 9: B2C 10:bk支付宝web 11:bk 支付宝手机 15:快捷支付(银行卡)""`
PayType int `json:"pay_type" description:"支付渠道 1:微信 2:支付宝 3:拉卡拉 4:收钱吧"`
SourceCode uint8 `json:"source_code" description:"支付方式 1:微信Native 2:微信小程序 3:微信内支付 4:h5 跳微信 5:支付宝(web)-扫码或登录支付宝账户 6:alipay(mobile) 7:alipay(app) 9:B2C 10:bk支付宝web 11:bk 支付宝手机 15:快捷支付(银行卡)"`
OpenID string `json:"open_id" description:"此参数 支付类型是 JS API 的时候 必传"`
WapURL string `json:"wap_url" description:"WAP网站URL地址, 支付方式为微信MWEB时 必传"`
WapName string `json:"wap_name" description:"WAP网站名称, 支付方式为微信MWEB时 必传"`
......
......@@ -20,15 +20,22 @@ import (
"system_pay/models"
"system_pay/mysql"
"system_pay/setting"
"system_pay/utils"
"time"
)
// 拉卡拉支付
func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{}, error) {
//输入项check
if input.SourceCode==0 {
return nil, errors.New("输入项「source_code」为空错误")
}
if input.PlatformType==0 {
return nil, errors.New("输入项「platform_type」为空错误")
}
//if input.SourceCode<0 || input.SourceCode>6 {
// return errors.New("输入参数「source_code」错误"), "", nil
//}
fmt.Println("谛宝多多输入参数")
fmt.Println(input)
......@@ -84,13 +91,13 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
data["version"] = version
data["out_org_code"] = out_org_code
//source_code 1: 微信 Native 2:微信小程序 3:微信内支付 4:h5 跳微信
//5:支付宝(web)-扫码或登录支付宝账户 6:alipay(mobile) 7:alipay(app)
//9: B2C 10:bk支付宝web 11:bk 支付宝手机 15:快捷支付(银行卡)
if input.SourceCode==4 || input.SourceCode==6 ||input.SourceCode==1 || input.SourceCode==5 || input.SourceCode==15 {
//聚合收银台(微信H5、支付宝H5、微信扫码、支付宝扫码)
url = "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create" //聚合收银台
//url = "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create" //聚合收银台
url = setting.Conf.Lakala.UrlCreate //聚合收银台
//input.ReturnURL = "https://test.pet-dbc.cn"
......@@ -118,14 +125,16 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
//data2["out_trade_no"] = input.AttachInfo
//data2["out_order_no"] = input.AttachInfo
if input.SourceCode < 5 {
if input.SourceCode==15 {
//快捷支付
data2["counter_param"] = "{\"pay_mode\":\"QUICK_PAY\"}"
} else if input.SourceCode < 5 {
//微信
data2["counter_param"] = "{\"pay_mode\":\"WECHAT\"}"
} else {
//支付宝
data2["counter_param"] = "{\"pay_mode\":\"ALIPAY\"}"
}
data2["counter_param"] = "{\"pay_mode\":\"QUICK_PAY\"}" //快捷支付
data2["order_efficient_time"] = date_time2 //订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+2天
data2["notify_url"] = input.NoticeURL //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
......@@ -139,7 +148,8 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
} else if input.SourceCode==2 || input.SourceCode==3 {
//聚合主扫(微信JSAPI、微信小程序)
url = "https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder" //聚合主扫
//url = "https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder" //聚合主扫
url = setting.Conf.Lakala.UrlPreorder //聚合主扫
//input.ReturnURL = "https://test.pet-dbc.cn"
......@@ -193,12 +203,13 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
data["req_data"] = data2
} else if input.SourceCode==9 {
//扫码枪
//聚合被扫(扫码枪)
if input.DynamicID=="" {
return nil, errors.New("输入项「dynamic_id」为空错误")
}
url = "https://test.wsmsd.cn/sit/api/v3/labs/trans/micropay" //聚合被扫
//url = "https://test.wsmsd.cn/sit/api/v3/labs/trans/micropay" //聚合被扫
url = setting.Conf.Lakala.UrlMicropay //聚合被扫
data2 := make(map[string]interface{})
data2["merchant_no"] = merchant_no4
......@@ -223,7 +234,7 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
data["req_data"] = data2
} else {
return nil, errors.New("输入参数「source_code」错误,有效值为[1-6,9]")
return nil, errors.New("输入参数「source_code」错误,有效值为[1-6,9,15]")
}
//数据重组 - end
fmt.Println("拉卡拉输入参数")
......@@ -245,7 +256,7 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
}
//调拉卡拉接口
err, response, lakala_rtn := lakala_post(input.SourceCode, url, data_json)
err, response, lakala_rtn := lakala_post(input, url, data_json)
if err != nil {
InsertPayBillDetailResponseBody(tx, billID, err) //todo
return nil, err
......@@ -268,12 +279,18 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
return response, nil
}
func lakala_post(source_code uint8, url string, data_json []byte) (error, interface{}, interface{}) {
if source_code<0 || source_code>6 {
return errors.New("输入参数「source_code」错误"), "", nil
func lakala_post(input *models.PlaceAnOrderParamInput, url string, data_json []byte) (error, interface{}, interface{}) {
var source_code, platform_type uint8
if input==nil {
source_code = 0 //支付方式
platform_type = 0 //平台类型
} else {
source_code = input.SourceCode //支付方式
platform_type = input.PlatformType //平台类型
}
authorization, err := getAuthorization(string(data_json))
authorization, err := getAuthorization(platform_type, string(data_json))
if err != nil {
return err, "", nil
}
......@@ -314,8 +331,8 @@ func lakala_post(source_code uint8, url string, data_json []byte) (error, interf
if temp2["counter_url"]=="" {
return errors.New("拉卡拉返回值「counter_url」为空错误"), "", temp
}
if source_code==4 || source_code==6 {
//微信H5、支付宝H5
if source_code==4 || source_code==6 || source_code==15 {
//微信H5、支付宝H5、快捷支付(银行卡)
response["m_web_url"] = temp2["counter_url"].(string)
} else {
//微信扫码、支付宝扫码
......@@ -343,83 +360,62 @@ func lakala_post(source_code uint8, url string, data_json []byte) (error, interf
return nil, response, temp
}
func getAuthorization(body string) (string, error) {
//appid := "OP00000003"
//mchSerialNo := "00dfba8194c41b84cf"
//nonceStr = gopay.GetRandomString(32)
////nonceStr := strconv.Itoa(rand.Intn(32)) // 构造随机数
//nonceStr := "12345678901234567890123456789012" // 构造随机数
////timestamp := strconv.FormatInt(time.Now().Unix(), 10)
//timestamp := "1686808027"
func getAuthorization(platform_type uint8, body string) (string, error) {
appid := setting.Conf.Lakala.Appid
mchSerialNo := setting.Conf.Lakala.SerialNo
nonceStr := RandomString(32) // 构造随机数
timestamp := strconv.FormatInt(time.Now().Unix(), 10)
//String nonceStr = generateNonceStr();
//long timestamp = generateTimestamp();
message := appid + "\n" + mchSerialNo + "\n" + timestamp + "\n" + nonceStr + "\n" + body + "\n";
//fmt.Println(message); return "", errors.New("测试")
//System.out.println("getToken message : " + message);
//PrivateKey merchantPrivateKey = loadPrivateKey(new FileInputStream(new File(merchantPrivateKeyPath)));
//String signature = this.sign(message.getBytes(ENCODING), merchantPrivateKey);
//privateRaw := "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDokGGq7SlDoULN\nPULY8lcb2uXJcrFKkJI/lSfPppIkGH4xPfQytZXRlonpXqgOvovflJT5VhRvoLe2\ninJ/59kRF59KTerbCG5sG2IHhR/qCUGHervnZuPwgrjOOlnB19VCCUKY1tcplkZa\nKIksUU3TVh09GB3lUngkuOeO15ihcFHMIknOiSpL+Q04+qQf0g++9CxdQUtNY5za\nZ2Jdvch/4yFstR59qQu73ZCCYHFqXaVakyfOC3xOQkRB58jPOUvIab9zwo2hPukT\n+6qkqfokqMhX979HhNshPAJEEUXp4szk0QtP+2n8hq8t3Dws+GY8ElAFvmeGHx5j\nWzPYAcXvAgMBAAECggEBALIsu8caf/zCdc2MW8SelkJPCLG330DDVmjEO4YJlfl1\nkmjjkE2xdSDn9q0GyjbRoZQf36rPWkTTmyyNEYAQ/urrcCybWY2J/h9xMz+TrIm/\noabMT13QJF5FqJTHe7DZTReUxKMYJixEZ433dHCxsbByT2BZM75X2pg32aBEaTl0\nv9OfIMwfaJ5fSBmleJv4q/Lfd232/oOPzyr+EHfsMpTwOrgzQwPNoah1GvH+jBhz\ngoafi36vT8HVjJ+ZjOreH+Z2zVas683Le62rQaN/51jHS5vQGd2+z3qrI3kvu8KK\nWu0kIDQwCKtSFUT00MiKSaklE9JHf8rCNm3+en4kjfECgYEA/0Z2QaP4sOUt1+cZ\nIOprsMkJOl2sLTTDx3MseD2BxUukLDT8P3HTWLtBN9AkGlL6XD8WSs1k9YlGCqf2\ny9qC43Bgwsky8CH1ACk5K4PuWidGUQiqW4Oll/ris2vjagE+QfMHFFa7IalV5FvI\nv9L01jMqSL4duoM5w/WlLyLu8s0CgYEA6TlppWuxUMbxhEL5jmCZSSvsyhmIOdRk\nt4V9MuxwiRuItzywMo4+O7Hs6tjAxTnV/ROa33qyQtm4Olmd4Oa/TkmAJFX+mUrW\njUohDvm7Js2Y7/eeSRcRQLcgCjncpNe3AJoeVEvrGeaJMERYXnTwboUDKxsRyFFq\nAyuZHfuh86sCgYAm3pjFF+2XKd5YIKUv4OHy8jmIfJjp7T3eUcg0qtDmtMTTwmGi\nW3ed7C1bDUNiCr56a1S+oRW9WWCj4L1wft4tOYBSSIaMD++ZTa2Z1aXmblKDpjki\nZCJDyPzZ6xSeoH/VVOcADtDBqGIeumcP5lRHhVTr7J7kNnUGRJIZYk1WBQKBgQCl\nLAIEI4cKnDrD3uL60LL+vVsPrpFp02AZETMf84+nqpZin1pyE4dDo7kUgbnUdCd2\n+oF+sFi7O5Jb0MgdVY47FZbpJPYQ/o2AtvU+s+K1knozyPyS6wFPAeJxG5WGMTfr\n9zpvnOy+BSU3x8+F5e+5df5OcvdfFTmtUR05vNJvzQKBgHUtziAeWo7H6vxknFcc\nkVv7++a4IWF59eP+rpxlaHOtPTI43PLxJgSHEbw3epEzTUnCL9dpP8n48fuYuwM+\n+vpAujDcaGjGffmxW40E6wuGjOYBNg1zjSfEyjxF2fY+D9WoICSPHnrWB0/BEAZB\naL9Lho8+BUEFergUMjxUdvAS"
//privateRaw := "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx\nrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M\n8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD\nZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW\ndhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN\nrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1\n5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4\nmE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7\nqCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK\nNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X\n3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK\nTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk\n9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH\nSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0\nZr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv\nAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI\nRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke\nMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4\n8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP\nscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi\nbEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn\nLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz\nNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j\nAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq\nCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6\nQsFLQgFyXgvDnzr/o+hQJelW"
//privateRaw := "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx\nrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M\n8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD\nZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW\ndhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN\nrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1\n5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4\nmE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7\nqCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK\nNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X\n3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK\nTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk\n9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH\nSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0\nZr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv\nAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI\nRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke\nMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4\n8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP\nscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi\nbEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn\nLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz\nNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j\nAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq\nCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6\nQsFLQgFyXgvDnzr/o+hQJelW\n-----END PRIVATE KEY-----";
//privateRaw := "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx\nrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M\n8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD\nZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW\ndhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN\nrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1\n5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4\nmE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7\nqCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK\nNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X\n3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK\nTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk\n9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH\nSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0\nZr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv\nAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI\nRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke\nMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4\n8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP\nscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi\nbEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn\nLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz\nNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j\nAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq\nCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6\nQsFLQgFyXgvDnzr/o+hQJelW\n-----END PRIVATE KEY-----"
//测试
privateRaw := "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx\nrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M\n8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD\nZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW\ndhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN\nrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1\n5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4\nmE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7\nqCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK\nNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X\n3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK\nTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk\n9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH\nSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0\nZr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv\nAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI\nRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke\nMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4\n8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP\nscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi\nbEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn\nLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz\nNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j\nAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq\nCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6\nQsFLQgFyXgvDnzr/o+hQJelW"
//privateRaw := "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx\nrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M\n8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD\nZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW\ndhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN\nrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1\n5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4\nmE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7\nqCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK\nNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X\n3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK\nTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk\n9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH\nSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0\nZr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv\nAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI\nRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke\nMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4\n8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP\nscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi\nbEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn\nLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz\nNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j\nAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq\nCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6\nQsFLQgFyXgvDnzr/o+hQJelW"
//线上
//privateRaw := "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCrBLPTvXAWDc4I\nM3Loqc267lycWpFNkL3fW6yCNPtZ0TwNx/0bGyVXxegmSIEPJ8smBeJJdvVw5AN9\nTaFf7L8gV5n2PG+1IGxkou18dQJ+jw0X0ezt6AMWFIM+L5eWMnFx7MaSeuq3TwEi\nnEeT5toCGrgu3cDouOB3GGc1hpMXmLL5lkkWrZpVff2uRqWAyqCidrNXU9ghLo7G\naryA0PnSy+R9gQfWC3WuHzmdo7jsS7Xts+VM97yL4P8v+JWYErW++rXkw9e4HNes\nvQieC30S3WclzaJlCp5PhX6oq7gTZYVe2RVTtfuvg+OxZ4mCx59cmLZV8MELi/Pi\ncdELpABVAgMBAAECggEAAQExEUBepTKFkFTFCwrcU4nM73o0ulDsXKCMPeOTym5J\nPQd8vCkHqiFWgMsSPwWL0vhb4PSa8oPUZWsMVKTuZoE9PU4TlevP1zOB06ZYUmgC\nuq4YBznCsuGB996NtGstcW7jp76jHFqRdiOW5A6KH1MK2/Ofi35yiyCQkqbsvEm9\n3+oNwcbLSexDiU45tiwRDy7m2siikZpaxb4SV5JMtO27zXKFQGlVAtb52kHTMwvT\nNqrg2wIohhs2pHbImJMhDrVukFuW3UL1F2CIbpgZG36Lpy3oxCHtCNm6mggpy4Pe\n+rgPW3ZPGoTZaiaqbEeem+hG/w9UylKZZV2B+AhFQQKBgQDwnx9eDUryMi58a5AG\nkA5vwtCqYaX4veIjTFm5b70n0vw0h11Sn/YPryx8jc0bb+acekNTUmXjbRZzpGmn\nMFiP77v+zxfakqwSEEDgsJBHU+HZ3m6p/ejEMX/mQOdDUrwqm6Y7UmMMDsz4b9BZ\n7o0etiHgPKPvni6+D3LWImDwxQKBgQC18shCQYnYM5EHMunPN12dwcCbdFsvr9Eo\nQPxXwDGOsGQliOAVrA3NnIvg0DgOnEuov9ieBd1L+mT6I4uRE3aRowislecFOYHT\nWj3HbXYWw94yXZrZyb9UnS6FSAG+xjP/RiooHs2Sprrz5nDnIylJxnTn0+3U+2a0\n2bWddhGqUQKBgD0Ow7DkAp6OqUkdKkDgESm+76AsgycpV9bJKwNpHUCbwy+5Ia8z\ntAaq1skMWn2Z2ZTfWXItOHmLVuUlVUH9fJuZo8S23EC0c0FqKmxZoWLYIDlevgoY\nyhXu0Zul4Iku11ygfoATGdsXbl+kT+RiKiEe6l2yRY8qPoYv+V3o/1xZAoGATbxM\nkwItQpHFhK3b9wxQkvYUtFYiH12envQk29jhU3VJVEAGfTvlKdOYb5SGXreoG5Db\nm6glxDBWtAg7uN/36IEfU5039qN7NDF585pwuYk1hY84eZQYiq4dEhSRqlBEJuxz\nVnDSo7VYapwp4JbFLR/9Eo8ZLcW7O8lILt4i7gECgYAubzT3SDYf5BlxQzzdVHhd\nXY43f6SHCOsdE/7voyJCiQKwcJefkYJD/puvf1bHsfb5gsH4nyou0djKt4SM1SpE\nSVdmIKIjKGFNiqFSbCEKI6s6UTfa4bIhx8ZbqjM6YWVmZFGzF00CP8qYZJgpA4Rr\nX593bU9XLvgypO98+uFcDA=="
signature, err := Sha256WithRsa(privateRaw, message)
if err != nil {
return signature, err
}
//signature, err := Sha256WithRsa(privateRaw, message)
//if err != nil {
// return signature, err
//}
//fmt.Println(777)
//fmt.Println(signature)
//fmt.Println("签名1:", signature)
//pwd, err := os.Getwd()
//if err != nil {
// return "", err
//}
//fmt.Println("pwd="+pwd)
//
//base64Sig, err := utils.RSASign([]byte(message), "/cert/OP00000003_private_key.pem")
//base64Sig, err := utils.RSASign([]byte(message), "./cert/demo/api_private_key.pem")
//prvKey := "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDokGGq7SlDoULN\nPULY8lcb2uXJcrFKkJI/lSfPppIkGH4xPfQytZXRlonpXqgOvovflJT5VhRvoLe2\ninJ/59kRF59KTerbCG5sG2IHhR/qCUGHervnZuPwgrjOOlnB19VCCUKY1tcplkZa\nKIksUU3TVh09GB3lUngkuOeO15ihcFHMIknOiSpL+Q04+qQf0g++9CxdQUtNY5za\nZ2Jdvch/4yFstR59qQu73ZCCYHFqXaVakyfOC3xOQkRB58jPOUvIab9zwo2hPukT\n+6qkqfokqMhX979HhNshPAJEEUXp4szk0QtP+2n8hq8t3Dws+GY8ElAFvmeGHx5j\nWzPYAcXvAgMBAAECggEBALIsu8caf/zCdc2MW8SelkJPCLG330DDVmjEO4YJlfl1\nkmjjkE2xdSDn9q0GyjbRoZQf36rPWkTTmyyNEYAQ/urrcCybWY2J/h9xMz+TrIm/\noabMT13QJF5FqJTHe7DZTReUxKMYJixEZ433dHCxsbByT2BZM75X2pg32aBEaTl0\nv9OfIMwfaJ5fSBmleJv4q/Lfd232/oOPzyr+EHfsMpTwOrgzQwPNoah1GvH+jBhz\ngoafi36vT8HVjJ+ZjOreH+Z2zVas683Le62rQaN/51jHS5vQGd2+z3qrI3kvu8KK\nWu0kIDQwCKtSFUT00MiKSaklE9JHf8rCNm3+en4kjfECgYEA/0Z2QaP4sOUt1+cZ\nIOprsMkJOl2sLTTDx3MseD2BxUukLDT8P3HTWLtBN9AkGlL6XD8WSs1k9YlGCqf2\ny9qC43Bgwsky8CH1ACk5K4PuWidGUQiqW4Oll/ris2vjagE+QfMHFFa7IalV5FvI\nv9L01jMqSL4duoM5w/WlLyLu8s0CgYEA6TlppWuxUMbxhEL5jmCZSSvsyhmIOdRk\nt4V9MuxwiRuItzywMo4+O7Hs6tjAxTnV/ROa33qyQtm4Olmd4Oa/TkmAJFX+mUrW\njUohDvm7Js2Y7/eeSRcRQLcgCjncpNe3AJoeVEvrGeaJMERYXnTwboUDKxsRyFFq\nAyuZHfuh86sCgYAm3pjFF+2XKd5YIKUv4OHy8jmIfJjp7T3eUcg0qtDmtMTTwmGi\nW3ed7C1bDUNiCr56a1S+oRW9WWCj4L1wft4tOYBSSIaMD++ZTa2Z1aXmblKDpjki\nZCJDyPzZ6xSeoH/VVOcADtDBqGIeumcP5lRHhVTr7J7kNnUGRJIZYk1WBQKBgQCl\nLAIEI4cKnDrD3uL60LL+vVsPrpFp02AZETMf84+nqpZin1pyE4dDo7kUgbnUdCd2\n+oF+sFi7O5Jb0MgdVY47FZbpJPYQ/o2AtvU+s+K1knozyPyS6wFPAeJxG5WGMTfr\n9zpvnOy+BSU3x8+F5e+5df5OcvdfFTmtUR05vNJvzQKBgHUtziAeWo7H6vxknFcc\nkVv7++a4IWF59eP+rpxlaHOtPTI43PLxJgSHEbw3epEzTUnCL9dpP8n48fuYuwM+\n+vpAujDcaGjGffmxW40E6wuGjOYBNg1zjSfEyjxF2fY+D9WoICSPHnrWB0/BEAZB\naL9Lho8+BUEFergUMjxUdvAS"
//base64Sig, err := utils.RsaSignWithSha1Hex(message, prvKey)
//if err != nil {
// return "", err
//}
// 谛宝多多自营
//dbc_path_private_key := setting.Conf.Lakala.DbcPathPrivateKey
//dbc_path_cert := setting.Conf.Lakala.DbcPathCert
//// 必康自营
//bk_path_private_key := setting.Conf.Lakala.BkPathPrivateKey
//bk_path_cert := setting.Conf.Lakala.BkPathCert
//// SAAS
//saas_path_private_key: './cert/prod/saas/api_private_key.pem' #私钥
//saas_path_cert: './cert/prod/saas/lkl-apigw-v1.cer' #证书
var path_private_key string //私钥文件地址
//平台类型 1:saas 2:shop 3:shop mobile 4:收银台 6:bk_shop 7:bk_shop_mobile
if platform_type==2 || platform_type==3 {
// 谛宝多多自营
path_private_key = setting.Conf.Lakala.DbcPathPrivateKey
} else if platform_type==6 || platform_type==7 {
// 必康自营
path_private_key = setting.Conf.Lakala.BkPathPrivateKey
} else {
// SAAS
path_private_key = setting.Conf.Lakala.SaasPathPrivateKey
}
//todo 退款时,证书???
//return "", errors.New("输入项「平台类型(platform_type)」数据错误")
//fmt.Println("签名2:", base64Sig)
//signature := base64Sig
//err = utils.RSAVerify([]byte(message), signature, "./cert/OP00000003_cert.cer")
//err = utils.RSAVerify([]byte(message), signature, "./cert/OP00000003_private_key.pem")
//err = utils.RSAVerify([]byte(message), signature, "./cert/demo/lkl-apigw-v3.cer")
//pubKey := "MIIEMTCCAxmgAwIBAgIGAXRTgcMnMA0GCSqGSIb3DQEBCwUAMHYxCzAJBgNVBAYT\nAkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRcwFQYDVQQK\nDA5MYWthbGEgQ28uLEx0ZDEqMCgGA1UEAwwhTGFrYWxhIE9yZ2FuaXphdGlvbiBW\nYWxpZGF0aW9uIENBMB4XDTIwMTAxMDA1MjQxNFoXDTMwMTAwODA1MjQxNFowZTEL\nMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcx\nFzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMRkwFwYDVQQDDBBBUElHVy5MQUtBTEEu\nQ09NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt1zHL54HiI8d2sLJ\nlwoQji3/ln0nsvfZ/XVpOjuB+1YR6/0LdxEDMC/hxI6iH2Rm5MjwWz3dmN/6BZeI\ngwGeTOWJUZFARo8UduKrlhC6gWMRpAiiGC8wA8stikc5gYB+UeFVZi/aJ0WN0cpP\nJYCvPBhxhMvhVDnd4hNohnR1L7k0ypuWg0YwGjC25FaNAEFBYP9EYUyCJjE//9Z7\nsMzHR9SJYCqqo6r9bOH9G6sWKuEp+osuAh+kJIxJMHfipw7w3tEcWG0hce9u/el4\ncYJtg8/PPMVoccKmeCzMvarr7jdKP4lenJbtwlgyfs+JgNu60KMUJH8RS72wC9NY\nuFz09wIDAQABo4HVMIHSMIGSBgNVHSMEgYowgYeAFCnH4DkZPR6CZxRn/kIqVsMo\ndJHpoWekZTBjMQswCQYDVQQGEwJDTjEQMA4GA1UECAwHQmVpSmluZzEQMA4GA1UE\nBwwHQmVpSmluZzEXMBUGA1UECgwOTGFrYWxhIENvLixMdGQxFzAVBgNVBAMMDkxh\na2FsYSBSb290IENBggYBaiUALIowHQYDVR0OBBYEFJ2Kx9YZfmWpkKFnC33C0r5D\nK3rFMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA\nA4IBAQBZoeU0XyH9O0LGF9R+JyGwfU/O5amoB97VeM+5n9v2z8OCiIJ8eXVGKN9L\ntl9QkpTEanYwK30KkpHcJP1xfVkhPi/cCMgfTWQ5eKYC7Zm16zk7n4CP6IIgZIqm\nTVGsIGKk8RzWseyWPB3lfqMDR52V1tdA1S8lJ7a2Xnpt5M2jkDXoArl3SVSwCb4D\nAmThYhak48M++fUJNYII9JBGRdRGbfJ2GSFdPXgesUL2CwlReQwbW4GZkYGOg9LK\nCNPK6XShlNdvgPv0CCR08KCYRwC3HZ0y1F0NjaKzYdGNPrvOq9lA495ONZCvzYDo\ngmsu/kd6eqxTs/JwdaIYr4sCMg8Z"
//err = utils.RsaVerySignWithSha1Base64(message, signature, pubKey)
//rtn, err := utils.VerifyDerCert([]byte(message), "./cert/lkl-apigw-v2.cer")
//if err == nil {
// fmt.Println("验证签名成功!")
// return "", errors.New("验证签名成功!")x
//} else {
// fmt.Println("验证签名失败!")
// return "", err
//}
//fmt.Println(rtn)
//return "", errors.New("wangpei签名测试中。。。。。")
//base64Sig, err := utils.RSASign([]byte(message), "./cert/dev/OP00000003_private_key.pem")
base64Sig, err := utils.RSASign([]byte(message), path_private_key)
if err != nil {
return "", err
}
//fmt.Println("签名2:", base64Sig)
signature := base64Sig
authorization := "LKLAPI-SHA256withRSA " + "appid=\"" + appid + "\"," + "serial_no=\"" + mchSerialNo + "\"," + "timestamp=\"" + timestamp + "\"," + "nonce_str=\"" + nonceStr + "\"," + "signature=\"" + signature + "\"";
//System.out.println("authorization message :" + authorization);
......@@ -493,15 +489,15 @@ func GetNoticeURL(sourceCode uint8) string {
//domainName := beego.AppConfig.String("DomainName")
domainName := setting.Conf.PayUrl.DomainName
//domainName = "http://tpay-v2.pet-dbc.cn:14880";
return domainName + "/api/v1/pay/wx_notice"
// <= 5 是微信
if sourceCode < 5 {
return domainName + "/api/v1/pay/wx_notice"
}
return domainName + "/api/v1/pay/wx_notice" //目前微信、支付宝调同一个地址
// > 5 是支付宝
return domainName + "/api/v1/pay/alipay_notice"
//// <= 5 是微信
//if sourceCode < 5 {
// return domainName + "/api/v1/pay/wx_notice"
//}
//
//// > 5 是支付宝
//return domainName + "/api/v1/pay/alipay_notice"
//
//if isServe == 0 {
// // payType 1: 原生 2: paymax
......@@ -722,7 +718,8 @@ func UnifiedRefund(input *models.RefundParamInput, ip string) (interface{}, erro
var url string
data := make(map[string]interface{})
url = "https://test.wsmsd.cn/sit/api/v3/labs/relation/refund" //扫码-退款交易
//url = "https://test.wsmsd.cn/sit/api/v3/labs/relation/refund" //聚合扫码(退款交易)
url = setting.Conf.Lakala.UrlRefund //聚合扫码(退款交易)
data["req_time"] = date_time1
data["version"] = version
......@@ -733,12 +730,12 @@ func UnifiedRefund(input *models.RefundParamInput, ip string) (interface{}, erro
//source_code 1: 微信 Native 2:微信小程序 3:微信内支付 4:h5 跳微信
//5:支付宝(web)-扫码或登录支付宝账户 6:alipay(mobile) 7:alipay(app)
//9: B2C 10:bk支付宝web 11:bk 支付宝手机
if source_code==4 || source_code==6 ||source_code==1 || source_code==5 {
if source_code==4 || source_code==6 ||source_code==1 || source_code==5 || source_code==15 {
//聚合收银台(微信H5、支付宝H5、微信扫码、支付宝扫码)
//data2["merchant_no"] = "8221210701101SB"
//data2["merchant_no"] = "8222900581201QB"
if source_code==4 || source_code==6 {
data2["merchant_no"] = merchant_no1 //微信H5、支付宝H5
if source_code==4 || source_code==6 || source_code==15 {
data2["merchant_no"] = merchant_no1 //微信H5、支付宝H5、快捷支付(银行卡)
} else {
data2["merchant_no"] = merchant_no2 //微信扫码、支付宝扫码
}
......@@ -808,7 +805,7 @@ func UnifiedRefund(input *models.RefundParamInput, ip string) (interface{}, erro
}
//调拉卡拉接口
err, _, lakala_rtn := lakala_post(0, url, data_json)
err, _, lakala_rtn := lakala_post(nil, url, data_json)
if err != nil {
InsertPayBillDetailResponseBody(tx, billID, lakala_rtn)
return nil, err
......
......@@ -138,6 +138,21 @@ type Lakala struct {
// 4.扫码枪
MerchantNo4 string `mapstructure:"merchant_no4"`
TermNo4 string `mapstructure:"term_no4"`
// 配置项
// 谛宝多多自营
DbcPathPrivateKey string `mapstructure:"dbc_path_private_key"` //私钥
DbcPathCert string `mapstructure:"dbc_path_cert"` //证书
// 必康自营
BkPathPrivateKey string `mapstructure:"bk_path_private_key"` //私钥
BkPathCert string `mapstructure:"bk_path_cert"` //证书
// SAAS
SaasPathPrivateKey string `mapstructure:"saas_path_private_key"` //私钥
SaasPathCert string `mapstructure:"saas_path_cert"` //证书
// 拉卡拉接口地址
UrlCreate string `mapstructure:"url_create"` //聚合收银台(微信H5、支付宝H5、微信扫码、支付宝扫码)
UrlPreorder string `mapstructure:"url_preorder"` //聚合主扫(微信JSAPI、微信小程序)
UrlMicropay string `mapstructure:"url_micropay"` //聚合被扫(扫码枪)
UrlRefund string `mapstructure:"url_refund"` //聚合扫码-退款交易
}
type UploadImage struct {
......@@ -170,7 +185,7 @@ type Esign struct {
// Init 支持热修改的viper设置
func Init() error {
viper.SetConfigFile("conf/dev/config.yaml") // 指定配置文件路径
viper.SetConfigFile("conf/config.yaml") // 指定配置文件路径
err := viper.ReadInConfig() // 读取配置信息
if err != nil { // 读取配置信息失败
fmt.Printf("viper.ReadInConfig failed, new_error:%v\n", err)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment