Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
system_pay
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王沛
system_pay
Commits
4018801a
Commit
4018801a
authored
Jul 18, 2023
by
wangp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
notify验签成功
parent
630d73a7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
77 additions
and
50 deletions
+77
-50
notice.go
controller/api/v1/pay/notice.go
+77
-50
No files found.
controller/api/v1/pay/notice.go
View file @
4018801a
...
@@ -4,15 +4,15 @@ import (
...
@@ -4,15 +4,15 @@ import (
"crypto"
"crypto"
"crypto/rsa"
"crypto/rsa"
"crypto/sha1"
"crypto/sha1"
"crypto/sha256"
"crypto/x509"
"crypto/x509"
"encoding/base64"
"encoding/base64"
"encoding/pem"
"encoding/pem"
"errors"
"fmt"
"fmt"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"io/ioutil"
"io/ioutil"
"system_pay/controller/base"
"system_pay/controller/base"
"system_pay/models"
"system_pay/repository/pay"
)
)
// 卡拉卡统一支付回调
// 卡拉卡统一支付回调
...
@@ -46,7 +46,23 @@ func (l *PayController) WxNotice(c *gin.Context) {
...
@@ -46,7 +46,23 @@ func (l *PayController) WxNotice(c *gin.Context) {
//fmt.Println(ph2)
//fmt.Println(ph2)
//验证签名
//验证签名
//err := test_ver2()
err
:=
test_ver2
()
if
err
!=
nil
{
fmt
.
Println
(
"verySignByPublicKey err: "
,
err
)
response
:=
new
(
base
.
ResponseDataWxNotice
)
response
.
Code
=
"FAIL"
response
.
Message
=
"验证签名失败"
base
.
ResponseWxNotice
(
c
,
response
)
return
}
fmt
.
Println
(
"test_ver ok"
)
response
:=
new
(
base
.
ResponseDataWxNotice
)
response
.
Code
=
"SUCCESS"
response
.
Message
=
"执行成功"
base
.
ResponseWxNotice
(
c
,
response
)
return
//_, err = testCert(c)
//if err != nil {
//if err != nil {
// fmt.Println("verySignByPublicKey err: ", err)
// fmt.Println("verySignByPublicKey err: ", err)
// response := new(base.ResponseDataWxNotice)
// response := new(base.ResponseDataWxNotice)
...
@@ -55,36 +71,23 @@ func (l *PayController) WxNotice(c *gin.Context) {
...
@@ -55,36 +71,23 @@ func (l *PayController) WxNotice(c *gin.Context) {
// base.ResponseWxNotice(c, response)
// base.ResponseWxNotice(c, response)
// return
// return
//}
//}
//fmt.Println("test_ver ok")
//
//base.ResponseWxNotice(c, nil)
//ph := new(models.WxNoticeInput)
//return
//err := c.ShouldBindJSON(ph)
//_, err = testCert(c)
//if err != nil {
//if err != nil {
// fmt.Println("verySignByPublicKey err: ", err)
// response := new(base.ResponseDataWxNotice)
// response := new(base.ResponseDataWxNotice)
// response.Code = "FAIL"
// response.Code = "FAIL"
// response.Message = "
验证签名失败
"
// response.Message = "
执行失败2
"
// base.ResponseWxNotice(c, response)
// base.ResponseWxNotice(c, response)
// return
// return
//}
//}
//fmt.Println(ph)
//
//
ph
:=
new
(
models
.
WxNoticeInput
)
//// 拉卡拉统一支付微信回调
err
:=
c
.
ShouldBindJSON
(
ph
)
//response, err := pay.WxNotice(ph)
if
err
!=
nil
{
//
response
:=
new
(
base
.
ResponseDataWxNotice
)
//fmt.Println("拉卡拉微信回调end")
response
.
Code
=
"FAIL"
//base.ResponseWxNotice(c, response)
response
.
Message
=
"执行失败2"
base
.
ResponseWxNotice
(
c
,
response
)
return
}
fmt
.
Println
(
ph
)
// 拉卡拉统一支付微信回调
response
,
err
:=
pay
.
WxNotice
(
ph
)
fmt
.
Println
(
"拉卡拉微信回调end"
)
base
.
ResponseWxNotice
(
c
,
response
)
}
}
func
test_ver2
()
error
{
func
test_ver2
()
error
{
...
@@ -125,19 +128,30 @@ func test_ver2() error {
...
@@ -125,19 +128,30 @@ func test_ver2() error {
//证书 => 公钥
//证书 => 公钥
publicKey
:=
cert
.
PublicKey
.
(
*
rsa
.
PublicKey
)
publicKey
:=
cert
.
PublicKey
.
(
*
rsa
.
PublicKey
)
sign
,
err
:=
base64
.
StdEncoding
.
DecodeString
(
signature
)
bytes
,
err
:=
base64
.
StdEncoding
.
DecodeString
(
signature
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
hash
:=
sha1
.
New
()
hashed
:=
sha256
.
Sum256
([]
byte
(
preSignData
))
hash
.
Write
([]
byte
(
preSignData
))
err
=
rsa
.
VerifyPKCS1v15
(
publicKey
,
crypto
.
SHA256
,
hashed
[
:
],
bytes
)
//err = RsaVerySignWithSha1Base64(originalData, signData, publicKey)
err
=
rsa
.
VerifyPKCS1v15
(
publicKey
,
crypto
.
SHA1
,
hash
.
Sum
(
nil
),
sign
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"failed to VerifyPKCS1v15: "
+
err
.
Error
())
return
err
return
err
}
}
//sign, err := base64.StdEncoding.DecodeString(signature)
//if err != nil {
// return err
//}
//hash := sha1.New()
//hash.Write([]byte(preSignData))
////err = RsaVerySignWithSha1Base64(originalData, signData, publicKey)
//err = rsa.VerifyPKCS1v15(publicKey, crypto.SHA1, hash.Sum(nil), sign)
//if err != nil {
// fmt.Println("failed to VerifyPKCS1v15: " + err.Error())
// return err
//}
//opts := x509.VerifyOptions{
//opts := x509.VerifyOptions{
// //DNSName: "mail.google.com",
// //DNSName: "mail.google.com",
// //Roots: roots,
// //Roots: roots,
...
@@ -167,21 +181,34 @@ func RsaVerySignWithSha1Base64(originalData, signData, pubKey string) error{
...
@@ -167,21 +181,34 @@ func RsaVerySignWithSha1Base64(originalData, signData, pubKey string) error{
return
rsa
.
VerifyPKCS1v15
(
pub
.
(
*
rsa
.
PublicKey
),
crypto
.
SHA1
,
hash
.
Sum
(
nil
),
sign
)
return
rsa
.
VerifyPKCS1v15
(
pub
.
(
*
rsa
.
PublicKey
),
crypto
.
SHA1
,
hash
.
Sum
(
nil
),
sign
)
}
}
//func VerifyWithPublicKey(signData string, srcData []byte, publicKey string) error {
func
decodePublicKey
(
publicKey
string
)
(
*
rsa
.
PublicKey
,
error
)
{
// defer GetTimer("公钥验签")()
block
,
_
:=
pem
.
Decode
([]
byte
(
publicKey
))
// key, err := decodePublicKey(publicKey)
if
block
==
nil
{
// if err != nil {
return
nil
,
errors
.
New
(
"failed to decode PEM block containing private key"
)
// return err
}
// }
pub
,
err
:=
x509
.
ParsePKIXPublicKey
(
block
.
Bytes
)
//
if
err
!=
nil
{
// bytes, err := base64.StdEncoding.DecodeString(signData)
return
nil
,
err
// if err != nil {
}
// return err
return
pub
.
(
*
rsa
.
PublicKey
),
err
// }
}
// hashed := sha256.Sum256(srcData)
// err = rsa.VerifyPKCS1v15(key, crypto.SHA256, hashed[:], bytes)
// VerifyWithPublicKey 公钥验签
// if err != nil {
func
VerifyWithPublicKey
(
signData
string
,
srcData
[]
byte
,
publicKey
string
)
error
{
// return err
//defer GetTimer("公钥验签")()
// }
key
,
err
:=
decodePublicKey
(
publicKey
)
// return nil
if
err
!=
nil
{
//}
return
err
\ No newline at end of file
}
bytes
,
err
:=
base64
.
StdEncoding
.
DecodeString
(
signData
)
if
err
!=
nil
{
return
err
}
hashed
:=
sha256
.
Sum256
(
srcData
)
err
=
rsa
.
VerifyPKCS1v15
(
key
,
crypto
.
SHA256
,
hashed
[
:
],
bytes
)
if
err
!=
nil
{
return
err
}
return
nil
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment