新增了rpc服务定义和工具命令
This commit is contained in:
parent
32a7e74aed
commit
061bb694bb
|
@ -1,20 +1,4 @@
|
|||
/.idea
|
||||
/.vscode
|
||||
/vendor
|
||||
/runtime
|
||||
*.log
|
||||
.env
|
||||
app/.DS_Store
|
||||
.DS_Store
|
||||
composer_test.lock
|
||||
.phpunit.result.cache
|
||||
config/pem
|
||||
config/bale
|
||||
config/alipaycash
|
||||
config/wechatcash
|
||||
config/wechat_cert.pem
|
||||
config/wechat_private_key.pem
|
||||
/app/api/ForExample.php
|
||||
/route/test.php
|
||||
/public/data/
|
||||
/app/api/Test.php
|
||||
/config
|
||||
/test
|
||||
/genModel.sh
|
|
@ -0,0 +1,30 @@
|
|||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"trasfer_middleware/cmd/rpc/internal/svc"
|
||||
"trasfer_middleware/cmd/rpc/pb/transfer"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type MarketKeyDiscardLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewMarketKeyDiscardLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketKeyDiscardLogic {
|
||||
return &MarketKeyDiscardLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *MarketKeyDiscardLogic) MarketKeyDiscard(in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &transfer.MarketKeyDiscardRes{}, nil
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"trasfer_middleware/cmd/rpc/internal/svc"
|
||||
"trasfer_middleware/cmd/rpc/pb/transfer"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type MarketKeySendLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewMarketKeySendLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketKeySendLogic {
|
||||
return &MarketKeySendLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *MarketKeySendLogic) MarketKeySend(in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &transfer.MarketKeySendRes{}, nil
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"trasfer_middleware/cmd/rpc/internal/svc"
|
||||
"trasfer_middleware/cmd/rpc/pb/transfer"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type MarketQueryLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewMarketQueryLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketQueryLogic {
|
||||
return &MarketQueryLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *MarketQueryLogic) MarketQuery(in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &transfer.MarketQueryRes{}, nil
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
package market
|
|
@ -22,11 +22,6 @@ func NewTransferServer(svcCtx *svc.ServiceContext) *TransferServer {
|
|||
}
|
||||
}
|
||||
|
||||
func (s *TransferServer) GetResellerByAppId(ctx context.Context, in *transfer.GetResellerByAppIdReq) (*transfer.GetResellerByAppIdRes, error) {
|
||||
l := logic.NewGetResellerByAppIdLogic(ctx, s.svcCtx)
|
||||
return l.GetResellerByAppId(in)
|
||||
}
|
||||
|
||||
func (s *TransferServer) ZltxOrderRecharge(ctx context.Context, in *transfer.ZltxOrderRechargeReq) (*transfer.DefaultRes, error) {
|
||||
l := logic.NewZltxOrderRechargeLogic(ctx, s.svcCtx)
|
||||
return l.ZltxOrderRecharge(in)
|
||||
|
@ -61,3 +56,18 @@ func (s *TransferServer) ZltxRechargeProduct(ctx context.Context, in *transfer.D
|
|||
l := logic.NewZltxRechargeProductLogic(ctx, s.svcCtx)
|
||||
return l.ZltxRechargeProduct(in)
|
||||
}
|
||||
|
||||
func (s *TransferServer) MarketKeySend(ctx context.Context, in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) {
|
||||
l := logic.NewMarketKeySendLogic(ctx, s.svcCtx)
|
||||
return l.MarketKeySend(in)
|
||||
}
|
||||
|
||||
func (s *TransferServer) MarketKeyDiscard(ctx context.Context, in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) {
|
||||
l := logic.NewMarketKeyDiscardLogic(ctx, s.svcCtx)
|
||||
return l.MarketKeyDiscard(in)
|
||||
}
|
||||
|
||||
func (s *TransferServer) MarketQuery(ctx context.Context, in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) {
|
||||
l := logic.NewMarketQueryLogic(ctx, s.svcCtx)
|
||||
return l.MarketQuery(in)
|
||||
}
|
||||
|
|
|
@ -17,17 +17,7 @@ message DefaultReq {
|
|||
}
|
||||
|
||||
|
||||
service Zltx {
|
||||
rpc zltxOrderRecharge(ZltxOrderRechargeReq) returns(DefaultRes);
|
||||
rpc zltxOrderRechargeQuery(ZltxOrderRechargeQueryReq) returns(ZltxOrderRechargeQueryRes);
|
||||
rpc zltxOrderCard(ZltxOrderCardReq) returns(DefaultRes);
|
||||
rpc zltxOrderCardQuery(ZltxOrderCardQueryReq) returns(ZltxOrderCardQueryRes);
|
||||
rpc zltxOrderSms(ZltxOrderSmsReq) returns(ZltxOrderSmsRes);
|
||||
rpc zltxRechargeInfo(DefaultReq) returns(ZltxRechargeInfoRes);
|
||||
rpc zltxRechargeProduct(DefaultReq) returns(ZltxRechargeProductRes);
|
||||
}
|
||||
|
||||
service Market {
|
||||
service Transfer {
|
||||
rpc zltxOrderRecharge(ZltxOrderRechargeReq) returns(DefaultRes);
|
||||
rpc zltxOrderRechargeQuery(ZltxOrderRechargeQueryReq) returns(ZltxOrderRechargeQueryRes);
|
||||
rpc zltxOrderCard(ZltxOrderCardReq) returns(DefaultRes);
|
||||
|
@ -36,8 +26,88 @@ service Market {
|
|||
rpc zltxRechargeInfo(DefaultReq) returns(ZltxRechargeInfoRes);
|
||||
rpc zltxRechargeProduct(DefaultReq) returns(ZltxRechargeProductRes);
|
||||
|
||||
rpc marketKeySend(MarketKeySendReq) returns(MarketKeySendRes);
|
||||
rpc marketKeyDiscard(MarketKeyDiscardReq) returns(MarketKeyDiscardRes);
|
||||
rpc marketQuery(MarketQueryReq) returns(MarketQueryRes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
message MarketQueryRes {
|
||||
string errCode=1;
|
||||
string msg=2;
|
||||
Data data=3;
|
||||
message Data{
|
||||
string voucherId = 1;
|
||||
string voucherCode = 2;
|
||||
string voucherStatus = 5;
|
||||
}
|
||||
}
|
||||
|
||||
message MarketQueryReq {
|
||||
string appId = 1;
|
||||
uint64 sign = 2;
|
||||
string reqCode = 3;
|
||||
string memId = 4;
|
||||
string reqSerialNo = 5;
|
||||
string timestamp = 6;
|
||||
string voucherId = 8;
|
||||
string voucherCode = 9;
|
||||
}
|
||||
|
||||
|
||||
message MarketKeyDiscardRes {
|
||||
string errCode=1;
|
||||
string msg=2;
|
||||
Data data=3;
|
||||
message Data{
|
||||
string voucherId = 1;
|
||||
string voucherCode = 2;
|
||||
string voucherDate = 4;
|
||||
string voucherStatus = 5;
|
||||
}
|
||||
}
|
||||
|
||||
message MarketKeyDiscardReq {
|
||||
string appId = 1;
|
||||
uint64 sign = 2;
|
||||
string reqCode = 3;
|
||||
string memId = 4;
|
||||
string reqSerialNo = 5;
|
||||
string timestamp = 6;
|
||||
string voucherId = 8;
|
||||
string voucherCode = 9;
|
||||
}
|
||||
|
||||
|
||||
message MarketKeySendRes {
|
||||
string errCode=1;
|
||||
string msg=2;
|
||||
Data data=3;
|
||||
message Data{
|
||||
string voucherId = 1;
|
||||
string voucherCode = 2;
|
||||
string shortUrl = 3;
|
||||
string voucherSdate = 4;
|
||||
string voucherEdate = 5;
|
||||
string codeType = 6;
|
||||
}
|
||||
}
|
||||
message MarketKeySendReq {
|
||||
string appId = 1;
|
||||
uint64 sign = 2;
|
||||
string reqCode = 3;
|
||||
string memId = 4;
|
||||
string reqSerialNo = 5;
|
||||
string timestamp = 6;
|
||||
string posId = 7;
|
||||
string voucherId = 8;
|
||||
int64 voucherNum = 9;
|
||||
string mobileNo = 10;
|
||||
string sendMsg = 11;
|
||||
}
|
||||
|
||||
|
||||
message ZltxRechargeProductRes {
|
||||
string code=1;
|
||||
repeated Product products=2;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -19,7 +19,6 @@ import (
|
|||
const _ = grpc.SupportPackageIsVersion7
|
||||
|
||||
const (
|
||||
Transfer_GetResellerByAppId_FullMethodName = "/transfer.Transfer/getResellerByAppId"
|
||||
Transfer_ZltxOrderRecharge_FullMethodName = "/transfer.Transfer/zltxOrderRecharge"
|
||||
Transfer_ZltxOrderRechargeQuery_FullMethodName = "/transfer.Transfer/zltxOrderRechargeQuery"
|
||||
Transfer_ZltxOrderCard_FullMethodName = "/transfer.Transfer/zltxOrderCard"
|
||||
|
@ -27,13 +26,15 @@ const (
|
|||
Transfer_ZltxOrderSms_FullMethodName = "/transfer.Transfer/zltxOrderSms"
|
||||
Transfer_ZltxRechargeInfo_FullMethodName = "/transfer.Transfer/zltxRechargeInfo"
|
||||
Transfer_ZltxRechargeProduct_FullMethodName = "/transfer.Transfer/zltxRechargeProduct"
|
||||
Transfer_MarketKeySend_FullMethodName = "/transfer.Transfer/marketKeySend"
|
||||
Transfer_MarketKeyDiscard_FullMethodName = "/transfer.Transfer/marketKeyDiscard"
|
||||
Transfer_MarketQuery_FullMethodName = "/transfer.Transfer/marketQuery"
|
||||
)
|
||||
|
||||
// TransferClient is the client API for Transfer service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type TransferClient interface {
|
||||
GetResellerByAppId(ctx context.Context, in *GetResellerByAppIdReq, opts ...grpc.CallOption) (*GetResellerByAppIdRes, error)
|
||||
ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error)
|
||||
ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error)
|
||||
ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error)
|
||||
|
@ -41,6 +42,9 @@ type TransferClient interface {
|
|||
ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error)
|
||||
ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error)
|
||||
ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error)
|
||||
MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error)
|
||||
MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error)
|
||||
MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error)
|
||||
}
|
||||
|
||||
type transferClient struct {
|
||||
|
@ -51,15 +55,6 @@ func NewTransferClient(cc grpc.ClientConnInterface) TransferClient {
|
|||
return &transferClient{cc}
|
||||
}
|
||||
|
||||
func (c *transferClient) GetResellerByAppId(ctx context.Context, in *GetResellerByAppIdReq, opts ...grpc.CallOption) (*GetResellerByAppIdRes, error) {
|
||||
out := new(GetResellerByAppIdRes)
|
||||
err := c.cc.Invoke(ctx, Transfer_GetResellerByAppId_FullMethodName, in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *transferClient) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) {
|
||||
out := new(DefaultRes)
|
||||
err := c.cc.Invoke(ctx, Transfer_ZltxOrderRecharge_FullMethodName, in, out, opts...)
|
||||
|
@ -123,11 +118,37 @@ func (c *transferClient) ZltxRechargeProduct(ctx context.Context, in *DefaultReq
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *transferClient) MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error) {
|
||||
out := new(MarketKeySendRes)
|
||||
err := c.cc.Invoke(ctx, Transfer_MarketKeySend_FullMethodName, in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *transferClient) MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error) {
|
||||
out := new(MarketKeyDiscardRes)
|
||||
err := c.cc.Invoke(ctx, Transfer_MarketKeyDiscard_FullMethodName, in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *transferClient) MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error) {
|
||||
out := new(MarketQueryRes)
|
||||
err := c.cc.Invoke(ctx, Transfer_MarketQuery_FullMethodName, in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// TransferServer is the server API for Transfer service.
|
||||
// All implementations must embed UnimplementedTransferServer
|
||||
// for forward compatibility
|
||||
type TransferServer interface {
|
||||
GetResellerByAppId(context.Context, *GetResellerByAppIdReq) (*GetResellerByAppIdRes, error)
|
||||
ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error)
|
||||
ZltxOrderRechargeQuery(context.Context, *ZltxOrderRechargeQueryReq) (*ZltxOrderRechargeQueryRes, error)
|
||||
ZltxOrderCard(context.Context, *ZltxOrderCardReq) (*DefaultRes, error)
|
||||
|
@ -135,6 +156,9 @@ type TransferServer interface {
|
|||
ZltxOrderSms(context.Context, *ZltxOrderSmsReq) (*ZltxOrderSmsRes, error)
|
||||
ZltxRechargeInfo(context.Context, *DefaultReq) (*ZltxRechargeInfoRes, error)
|
||||
ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error)
|
||||
MarketKeySend(context.Context, *MarketKeySendReq) (*MarketKeySendRes, error)
|
||||
MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error)
|
||||
MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error)
|
||||
mustEmbedUnimplementedTransferServer()
|
||||
}
|
||||
|
||||
|
@ -142,9 +166,6 @@ type TransferServer interface {
|
|||
type UnimplementedTransferServer struct {
|
||||
}
|
||||
|
||||
func (UnimplementedTransferServer) GetResellerByAppId(context.Context, *GetResellerByAppIdReq) (*GetResellerByAppIdRes, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetResellerByAppId not implemented")
|
||||
}
|
||||
func (UnimplementedTransferServer) ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderRecharge not implemented")
|
||||
}
|
||||
|
@ -166,6 +187,15 @@ func (UnimplementedTransferServer) ZltxRechargeInfo(context.Context, *DefaultReq
|
|||
func (UnimplementedTransferServer) ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ZltxRechargeProduct not implemented")
|
||||
}
|
||||
func (UnimplementedTransferServer) MarketKeySend(context.Context, *MarketKeySendReq) (*MarketKeySendRes, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method MarketKeySend not implemented")
|
||||
}
|
||||
func (UnimplementedTransferServer) MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method MarketKeyDiscard not implemented")
|
||||
}
|
||||
func (UnimplementedTransferServer) MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method MarketQuery not implemented")
|
||||
}
|
||||
func (UnimplementedTransferServer) mustEmbedUnimplementedTransferServer() {}
|
||||
|
||||
// UnsafeTransferServer may be embedded to opt out of forward compatibility for this service.
|
||||
|
@ -179,24 +209,6 @@ func RegisterTransferServer(s grpc.ServiceRegistrar, srv TransferServer) {
|
|||
s.RegisterService(&Transfer_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _Transfer_GetResellerByAppId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetResellerByAppIdReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(TransferServer).GetResellerByAppId(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: Transfer_GetResellerByAppId_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(TransferServer).GetResellerByAppId(ctx, req.(*GetResellerByAppIdReq))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Transfer_ZltxOrderRecharge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(ZltxOrderRechargeReq)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -323,6 +335,60 @@ func _Transfer_ZltxRechargeProduct_Handler(srv interface{}, ctx context.Context,
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Transfer_MarketKeySend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(MarketKeySendReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(TransferServer).MarketKeySend(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: Transfer_MarketKeySend_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(TransferServer).MarketKeySend(ctx, req.(*MarketKeySendReq))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Transfer_MarketKeyDiscard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(MarketKeyDiscardReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(TransferServer).MarketKeyDiscard(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: Transfer_MarketKeyDiscard_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(TransferServer).MarketKeyDiscard(ctx, req.(*MarketKeyDiscardReq))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Transfer_MarketQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(MarketQueryReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(TransferServer).MarketQuery(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: Transfer_MarketQuery_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(TransferServer).MarketQuery(ctx, req.(*MarketQueryReq))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// Transfer_ServiceDesc is the grpc.ServiceDesc for Transfer service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
|
@ -330,10 +396,6 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{
|
|||
ServiceName: "transfer.Transfer",
|
||||
HandlerType: (*TransferServer)(nil),
|
||||
Methods: []grpc.MethodDesc{
|
||||
{
|
||||
MethodName: "getResellerByAppId",
|
||||
Handler: _Transfer_GetResellerByAppId_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "zltxOrderRecharge",
|
||||
Handler: _Transfer_ZltxOrderRecharge_Handler,
|
||||
|
@ -362,6 +424,18 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "zltxRechargeProduct",
|
||||
Handler: _Transfer_ZltxRechargeProduct_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "marketKeySend",
|
||||
Handler: _Transfer_MarketKeySend_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "marketKeyDiscard",
|
||||
Handler: _Transfer_MarketKeyDiscard_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "marketQuery",
|
||||
Handler: _Transfer_MarketQuery_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "transfer.proto",
|
||||
|
|
|
@ -0,0 +1,137 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
"crypto"
|
||||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"crypto/sha256"
|
||||
"crypto/x509"
|
||||
"encoding/base64"
|
||||
"encoding/pem"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sort"
|
||||
)
|
||||
|
||||
// getSignString 使用 xx=aa&yy=bb 的字符串拼接
|
||||
func getSignString(data map[string]interface{}) string {
|
||||
keys := make([]string, 0, len(data))
|
||||
for key := range data {
|
||||
keys = append(keys, key)
|
||||
}
|
||||
sort.Strings(keys)
|
||||
|
||||
signString := ""
|
||||
separator := ""
|
||||
for _, key := range keys {
|
||||
value := data[key]
|
||||
if key == "sign" || value == nil {
|
||||
continue
|
||||
}
|
||||
signString += fmt.Sprintf("%s%s=%v", separator, key, value)
|
||||
separator = "&"
|
||||
}
|
||||
return signString
|
||||
}
|
||||
|
||||
// VerifyRsaSign 签名验证
|
||||
func VerifyRsaSign(publicKey string, data map[string]interface{}) (map[string]interface{}, error) {
|
||||
// 对 sign nonce timestamp appId 升序排序
|
||||
// 使用 xx=aa&yy=bb 的字符串拼接
|
||||
// 商户的公钥验签 RSA2验签
|
||||
signString := getSignString(data)
|
||||
|
||||
rsaPubKey, err := parseRSAPublicKeyFromPEM([]byte(publicKey))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
signature, err := base64.StdEncoding.DecodeString(data["sign"].(string))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
hashed := sha256.Sum256([]byte(signString))
|
||||
err = rsa.VerifyPKCS1v15(rsaPubKey, crypto.SHA256, hashed[:], signature)
|
||||
if err != nil {
|
||||
return nil, errors.New("签名验证失败")
|
||||
}
|
||||
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// MakeRsaSign 生成签名
|
||||
func MakeRsaSign(privateKey string, data map[string]interface{}) (string, error) {
|
||||
// 对 sign nonce timestamp appId 升序排序
|
||||
// 使用 xx=aa&yy=bb 的字符串拼接
|
||||
// 营销系统生成的私钥生成签名 RSA2加签
|
||||
signString := getSignString(data)
|
||||
|
||||
privKey, err := parseRSAPrivateKeyFromPEM([]byte(privateKey))
|
||||
if err != nil {
|
||||
return "", errors.New("私钥解析失败")
|
||||
}
|
||||
|
||||
hashed := sha256.Sum256([]byte(signString))
|
||||
signature, err := rsa.SignPKCS1v15(rand.Reader, privKey, crypto.SHA256, hashed[:])
|
||||
if err != nil {
|
||||
return "", errors.New("签名失败")
|
||||
}
|
||||
|
||||
return base64.StdEncoding.EncodeToString(signature), nil
|
||||
}
|
||||
|
||||
// ParseRSAPrivateKeyFromPEM 解析私钥
|
||||
func parseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) {
|
||||
var err error
|
||||
|
||||
// Parse PEM block
|
||||
var block *pem.Block
|
||||
if block, _ = pem.Decode(key); block == nil {
|
||||
return nil, errors.New("私钥解析失败: 无效的PEM格式")
|
||||
}
|
||||
|
||||
var parsedKey interface{}
|
||||
if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil {
|
||||
if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
var pkey *rsa.PrivateKey
|
||||
var ok bool
|
||||
if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok {
|
||||
return nil, errors.New("密钥不是有效的RSA私钥")
|
||||
}
|
||||
|
||||
return pkey, nil
|
||||
}
|
||||
|
||||
// parseRSAPublicKeyFromPEM parses a PEM encoded PKCS1 or PKCS8 public key
|
||||
func parseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) {
|
||||
var err error
|
||||
|
||||
// Parse PEM block
|
||||
var block *pem.Block
|
||||
if block, _ = pem.Decode(key); block == nil {
|
||||
return nil, errors.New("公钥解析失败: 无效的PEM格式")
|
||||
}
|
||||
|
||||
// Parse the key
|
||||
var parsedKey interface{}
|
||||
if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil {
|
||||
if cert, err := x509.ParseCertificate(block.Bytes); err == nil {
|
||||
parsedKey = cert.PublicKey
|
||||
} else {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
var pkey *rsa.PublicKey
|
||||
var ok bool
|
||||
if pkey, ok = parsedKey.(*rsa.PublicKey); !ok {
|
||||
return nil, errors.New("密钥不是有效的RSA公钥")
|
||||
}
|
||||
|
||||
return pkey, nil
|
||||
}
|
|
@ -2,8 +2,8 @@ package test
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"msgc/pkg/request"
|
||||
"testing"
|
||||
"trasfer_middleware/pkg/request"
|
||||
)
|
||||
|
||||
// 发送GET 请求
|
||||
|
|
Loading…
Reference in New Issue