cmb
This commit is contained in:
parent
6ac3b3a4cd
commit
f7def09458
|
|
@ -2,12 +2,10 @@ syntax = "proto3";
|
|||
|
||||
package api.v1;
|
||||
option go_package = "voucher/api/v1;v1";
|
||||
|
||||
import "validate/validate.proto";
|
||||
|
||||
|
||||
message CmbOrderRequest {
|
||||
// 公共参数
|
||||
message CmbRequest {
|
||||
// 请求公共参数
|
||||
// 合作方唯一ID,32位定长
|
||||
string mid = 1 [json_name = "mid", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
// 应用唯一ID,32位定长
|
||||
|
|
@ -24,7 +22,28 @@ message CmbOrderRequest {
|
|||
string encryptBody = 7 [json_name = "encryptBody", (validate.rules).string = {min_len: 10}];
|
||||
// 签名,具体详见签名规范
|
||||
string sign = 8 [json_name = "sign", (validate.rules).string = {min_len: 10}];
|
||||
}
|
||||
|
||||
message CmbReply {
|
||||
// 响应公共参数
|
||||
// 接口调用返回码,1000 成功,1001 失败
|
||||
string respCode = 1 [json_name = "respCode"];
|
||||
// 返回话术,失败信息落此字段
|
||||
string respMsg = 2 [json_name = "respMsg"];
|
||||
// 时间戳 yyyyMMddHHmmss
|
||||
string date = 3 [json_name = "date"];
|
||||
// 合作方密钥对别名
|
||||
string keyAlias = 5 [json_name = "keyAlias"];
|
||||
// 掌上生活密钥对别名
|
||||
string cmbKeyAlias = 6 [json_name = "cmbKeyAlias"];
|
||||
// 加密报文,是否需要加密,请查看各API的说明文档
|
||||
string encryptBody = 7 [json_name = "encryptBody"];
|
||||
// 签名,具体详见签名规范
|
||||
string sign = 8 [json_name = "sign"];
|
||||
}
|
||||
|
||||
|
||||
message CmbOrderRequest {
|
||||
// 业务参数
|
||||
// 唯一流水号,需支持14天内幂等
|
||||
string transactionId = 9 [json_name = "transactionId", (validate.rules).string = {min_len: 1,max_len: 50}];
|
||||
|
|
@ -38,22 +57,6 @@ message CmbOrderRequest {
|
|||
string timestamp = 13 [json_name = "timestamp", (validate.rules).string = {min_len: 1,max_len: 20}];
|
||||
}
|
||||
message CmbOrderReply {
|
||||
// 公共参数
|
||||
// 接口调用返回码,1000 成功,1001 失败
|
||||
string respCode = 1 [json_name = "respCode"];
|
||||
// 返回话术,失败信息落此字段
|
||||
string respMsg = 2 [json_name = "respMsg"];
|
||||
// 时间戳 yyyyMMddHHmmss
|
||||
string date = 3 [json_name = "date"];
|
||||
// 合作方密钥对别名
|
||||
string keyAlias = 5 [json_name = "keyAlias"];
|
||||
// 掌上生活密钥对别名
|
||||
string cmbKeyAlias = 6 [json_name = "cmbKeyAlias"];
|
||||
// 加密报文,是否需要加密,请查看各API的说明文档
|
||||
string encryptBody = 7 [json_name = "encryptBody"];
|
||||
// 签名,具体详见签名规范
|
||||
string sign = 8 [json_name = "sign"];
|
||||
|
||||
// 业务参数
|
||||
// 权益标识,优惠券券码,最大长度为50位
|
||||
string codeNo = 9 [json_name = "codeNo"];
|
||||
|
|
@ -61,45 +64,11 @@ message CmbOrderReply {
|
|||
|
||||
|
||||
message CmbQueryProductRequest {
|
||||
// 公共参数
|
||||
// 合作方唯一ID,32位定长
|
||||
string mid = 1 [json_name = "mid", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
// 应用唯一ID,32位定长
|
||||
string aid = 2 [json_name = "aid", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
// 时间戳 yyyyMMddHHmmss
|
||||
string date = 3 [json_name = "date", (validate.rules).string = {min_len: 14}];
|
||||
// 随机字符串,保证签名不可预测,不长于32位
|
||||
string random = 4 [json_name = "random", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
// 合作方密钥对别名
|
||||
string keyAlias = 5 [json_name = "keyAlias", (validate.rules).string = {min_len: 2}];
|
||||
// 掌上生活密钥对别名
|
||||
string cmbKeyAlias = 6 [json_name = "cmbKeyAlias", (validate.rules).string = {min_len: 2}];
|
||||
// 加密报文,是否需要加密,请查看各API的说明文档
|
||||
string encryptBody = 7 [json_name = "encryptBody", (validate.rules).string = {min_len: 10}];
|
||||
// 签名,具体详见签名规范
|
||||
string sign = 8 [json_name = "sign", (validate.rules).string = {min_len: 10}];
|
||||
|
||||
// 业务参数
|
||||
// 外部合作方权益批次号
|
||||
string activityId = 9 [json_name = "activityId", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
}
|
||||
message CmbQueryProductReply {
|
||||
// 公共参数
|
||||
// 接口调用返回码,1000 成功,1001 失败
|
||||
string respCode = 1 [json_name = "respCode"];
|
||||
// 返回话术,失败信息落此字段
|
||||
string respMsg = 2 [json_name = "respMsg"];
|
||||
// 时间戳 yyyyMMddHHmmss
|
||||
string date = 3 [json_name = "date"];
|
||||
// 合作方密钥对别名
|
||||
string keyAlias = 5 [json_name = "keyAlias"];
|
||||
// 掌上生活密钥对别名
|
||||
string cmbKeyAlias = 6 [json_name = "cmbKeyAlias"];
|
||||
// 加密报文,是否需要加密,请查看各API的说明文档
|
||||
string encryptBody = 7 [json_name = "encryptBody"];
|
||||
// 签名,具体详见签名规范
|
||||
string sign = 8 [json_name = "sign"];
|
||||
|
||||
// 业务参数
|
||||
// 批次名称
|
||||
string activityName = 9 [json_name = "activityName"];
|
||||
|
|
@ -123,25 +92,8 @@ message CmbQueryProductReply {
|
|||
string detail = 18 [json_name = "detail"];
|
||||
}
|
||||
|
||||
message CmbNotifyRequest {
|
||||
// 公共参数
|
||||
// 合作方唯一ID,32位定长
|
||||
string mid = 1 [json_name = "mid", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
// 应用唯一ID,32位定长
|
||||
string aid = 2 [json_name = "aid", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
// 时间戳 yyyyMMddHHmmss
|
||||
string date = 3 [json_name = "date", (validate.rules).string = {min_len: 14}];
|
||||
// 随机字符串,保证签名不可预测,不长于32位
|
||||
string random = 4 [json_name = "random", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||
// 合作方密钥对别名
|
||||
string keyAlias = 5 [json_name = "keyAlias", (validate.rules).string = {min_len: 2}];
|
||||
// 掌上生活密钥对别名
|
||||
string cmbKeyAlias = 6 [json_name = "cmbKeyAlias", (validate.rules).string = {min_len: 2}];
|
||||
// 加密报文,是否需要加密,请查看各API的说明文档
|
||||
string encryptBody = 7 [json_name = "encryptBody", (validate.rules).string = {min_len: 10}];
|
||||
// 签名,具体详见签名规范
|
||||
string sign = 8 [json_name = "sign", (validate.rules).string = {min_len: 10}];
|
||||
|
||||
message CmbNotifyRequest {
|
||||
// 优惠券券码,codeNo
|
||||
string ticket = 9 [json_name = "ticket"];
|
||||
// 更新后串码状态,0:可使用,1:已使用
|
||||
|
|
|
|||
|
|
@ -36,8 +36,11 @@ func NewHTTPServer(
|
|||
r.POST("/v1/wechat/notify", voucherService.WechatNotify)
|
||||
|
||||
cmb := r.Group("/cmb")
|
||||
|
||||
cmb.POST("/v1/orderMock", voucherService.CmbOrderMock)
|
||||
cmb.POST("/v1/order", voucherService.CmbOrder)
|
||||
cmb.POST("/v1/query", voucherService.CmbQuery)
|
||||
|
||||
cmb.POST("/v1/product_query_mock", voucherService.CmbProductQueryMock)
|
||||
cmb.POST("/v1/product_query", voucherService.CmbProductQuery)
|
||||
|
||||
return srv
|
||||
|
|
|
|||
|
|
@ -9,36 +9,27 @@ import (
|
|||
|
||||
func (s *VoucherService) CmbOrder(ctx http.Context) error {
|
||||
|
||||
reply := &v1.CmbOrderReply{
|
||||
RespCode: "",
|
||||
RespMsg: "",
|
||||
Date: "",
|
||||
KeyAlias: "",
|
||||
CmbKeyAlias: "",
|
||||
EncryptBody: "",
|
||||
Sign: "",
|
||||
CodeNo: "",
|
||||
var req v1.CmbOrderReply
|
||||
if err := ctx.BindForm(&req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
orderNo, err := s.cmbOrder(ctx)
|
||||
if err != nil {
|
||||
reply.RespCode = "1001"
|
||||
reply.RespMsg = err.Error()
|
||||
} else {
|
||||
reply.RespCode = "1000"
|
||||
reply.RespMsg = "成功"
|
||||
reply.CodeNo = orderNo
|
||||
reply := &v1.CmbReply{
|
||||
//RespCode: "1000",
|
||||
//RespMsg: "成功",
|
||||
//Date: "",
|
||||
//KeyAlias: "",
|
||||
//CmbKeyAlias: "",
|
||||
//EncryptBody: "",
|
||||
//Sign: "",
|
||||
}
|
||||
|
||||
// todo 签名
|
||||
reply.Sign = ""
|
||||
|
||||
return ctx.JSON(200, reply)
|
||||
}
|
||||
|
||||
func (s *VoucherService) cmbOrder(ctx http.Context) (string, error) {
|
||||
|
||||
var req v1.CmbOrderRequest
|
||||
var req v1.CmbRequest
|
||||
if err := ctx.BindForm(&req); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
|
@ -50,9 +41,9 @@ func (s *VoucherService) cmbOrder(ctx http.Context) (string, error) {
|
|||
// todo 签名验证
|
||||
|
||||
boReq := &bo.OrderCreateReqBo{
|
||||
OutBizNo: req.TransactionId,
|
||||
ProductNo: req.ActivityId,
|
||||
Account: req.CmbUid,
|
||||
//OutBizNo: req.TransactionId,
|
||||
//ProductNo: req.ActivityId,
|
||||
//Account: req.CmbUid,
|
||||
AccountType: vo.OrderAccountTypeOpenId,
|
||||
}
|
||||
|
||||
|
|
@ -64,25 +55,8 @@ func (s *VoucherService) cmbOrder(ctx http.Context) (string, error) {
|
|||
return orderNo, nil
|
||||
}
|
||||
|
||||
func (s *VoucherService) CmbQuery(ctx http.Context) error {
|
||||
return ctx.JSON(200, nil)
|
||||
}
|
||||
|
||||
func (s *VoucherService) CmbProductQuery(ctx http.Context) error {
|
||||
|
||||
err := s.cmbProductQuery(ctx)
|
||||
if err != nil {
|
||||
return ctx.JSON(200, &v1.CmbOrderReply{
|
||||
RespCode: "1001",
|
||||
RespMsg: err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
return ctx.JSON(200, nil)
|
||||
}
|
||||
|
||||
func (s *VoucherService) cmbProductQuery(ctx http.Context) error {
|
||||
|
||||
var req v1.CmbQueryProductRequest
|
||||
if err := ctx.BindForm(&req); err != nil {
|
||||
return err
|
||||
|
|
@ -99,13 +73,13 @@ func (s *VoucherService) cmbProductQuery(ctx http.Context) error {
|
|||
|
||||
// 数据构造 加签 返回
|
||||
rep := &v1.CmbQueryProductReply{
|
||||
RespCode: "",
|
||||
RespMsg: "",
|
||||
Date: "",
|
||||
KeyAlias: "",
|
||||
CmbKeyAlias: "",
|
||||
EncryptBody: "",
|
||||
Sign: "",
|
||||
//RespCode: "",
|
||||
//RespMsg: "",
|
||||
//Date: "",
|
||||
//KeyAlias: "",
|
||||
//CmbKeyAlias: "",
|
||||
//EncryptBody: "",
|
||||
//Sign: "",
|
||||
ActivityName: "",
|
||||
ActivityId: *q.StockId,
|
||||
Amount: "",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"github.com/go-kratos/kratos/v2/transport/http"
|
||||
v1 "voucher/api/v1"
|
||||
)
|
||||
|
||||
func (s *VoucherService) CmbOrderMock(ctx http.Context) error {
|
||||
|
||||
var req v1.CmbOrderReply
|
||||
if err := ctx.BindForm(&req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
reply := &v1.CmbRequest{}
|
||||
|
||||
return ctx.JSON(200, reply)
|
||||
}
|
||||
|
||||
func (s *VoucherService) CmbProductQueryMock(ctx http.Context) error {
|
||||
|
||||
var req v1.CmbQueryProductRequest
|
||||
if err := ctx.BindForm(&req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := req.Validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
reply := &v1.CmbRequest{}
|
||||
|
||||
return ctx.JSON(200, reply)
|
||||
}
|
||||
Loading…
Reference in New Issue