plugin 云闪付,回调签名,相关处理,提单查国密加密数据处理
This commit is contained in:
		
							parent
							
								
									a0b5a08071
								
							
						
					
					
						commit
						637dc11b71
					
				|  | @ -26,6 +26,8 @@ const ( | ||||||
| 	queryBizMethod = "mkt.cpn.couponAcqQuery.v1" | 	queryBizMethod = "mkt.cpn.couponAcqQuery.v1" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | const notifyBizMethod = "mkt.CpnStateUpdtNotify" | ||||||
|  | 
 | ||||||
| type UnionPayService struct{} | type UnionPayService struct{} | ||||||
| 
 | 
 | ||||||
| func (p *UnionPayService) Order(ctx context.Context, request *proto.OrderRequest) (*proto.OrderResponse, error) { | func (p *UnionPayService) Order(ctx context.Context, request *proto.OrderRequest) (*proto.OrderResponse, error) { | ||||||
|  | @ -77,7 +79,7 @@ func (p *UnionPayService) Notify(_ context.Context, request *proto.NotifyRequest | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err = verify(conf, uv, request); err != nil { | 	if err = verify(conf, uv, notifyBizMethod); err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,6 @@ | ||||||
| package internal | package internal | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"codeup.aliyun.com/6552e56cc3b2728a4557fc18/plugin/proto" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"plugins/union_pay/internal/po" | 	"plugins/union_pay/internal/po" | ||||||
|  | @ -36,10 +35,16 @@ func headers(config *Config, req po.Req, bizMethod string) map[string][]string { | ||||||
| 	return h | 	return h | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func verify(config *Config, req *po.Notify, request *proto.NotifyRequest) error { | func verify(config *Config, req *po.Notify, notifyBizMethod string) error { | ||||||
| 	if req.Headers.SignMethod != vo.SignMethod { | 	if req.Headers.SignMethod != vo.SignMethod { | ||||||
| 		return fmt.Errorf("签名方式不匹配") | 		return fmt.Errorf("签名方式不匹配") | ||||||
| 	} | 	} | ||||||
|  | 	if req.Headers.AppId != config.Config.AppId { | ||||||
|  | 		return fmt.Errorf("appId不匹配") | ||||||
|  | 	} | ||||||
|  | 	if req.Headers.BizMethod != notifyBizMethod { | ||||||
|  | 		return fmt.Errorf("业务方法不匹配") | ||||||
|  | 	} | ||||||
| 	encodedHash := utils.Sha(req.Headers.Version, config.Config.AppId, req.Headers.BizMethod, req.GetReId(), string(req.ToJson())) | 	encodedHash := utils.Sha(req.Headers.Version, config.Config.AppId, req.Headers.BizMethod, req.GetReId(), string(req.ToJson())) | ||||||
| 	lowerStr := strings.ToLower(encodedHash) | 	lowerStr := strings.ToLower(encodedHash) | ||||||
| 	if utils.Verify(lowerStr, req.Headers.Sign, utils.FormatPEMPrivateKey(config.Extra.RsaNpk)) { | 	if utils.Verify(lowerStr, req.Headers.Sign, utils.FormatPEMPrivateKey(config.Extra.RsaNpk)) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue