cmb
This commit is contained in:
parent
6ac3b3a4cd
commit
f7def09458
|
|
@ -2,12 +2,10 @@ syntax = "proto3";
|
||||||
|
|
||||||
package api.v1;
|
package api.v1;
|
||||||
option go_package = "voucher/api/v1;v1";
|
option go_package = "voucher/api/v1;v1";
|
||||||
|
|
||||||
import "validate/validate.proto";
|
import "validate/validate.proto";
|
||||||
|
|
||||||
|
message CmbRequest {
|
||||||
message CmbOrderRequest {
|
// 请求公共参数
|
||||||
// 公共参数
|
|
||||||
// 合作方唯一ID,32位定长
|
// 合作方唯一ID,32位定长
|
||||||
string mid = 1 [json_name = "mid", (validate.rules).string = {min_len: 1,max_len: 32}];
|
string mid = 1 [json_name = "mid", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||||
// 应用唯一ID,32位定长
|
// 应用唯一ID,32位定长
|
||||||
|
|
@ -24,7 +22,28 @@ message CmbOrderRequest {
|
||||||
string encryptBody = 7 [json_name = "encryptBody", (validate.rules).string = {min_len: 10}];
|
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 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天内幂等
|
// 唯一流水号,需支持14天内幂等
|
||||||
string transactionId = 9 [json_name = "transactionId", (validate.rules).string = {min_len: 1,max_len: 50}];
|
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}];
|
string timestamp = 13 [json_name = "timestamp", (validate.rules).string = {min_len: 1,max_len: 20}];
|
||||||
}
|
}
|
||||||
message CmbOrderReply {
|
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位
|
// 权益标识,优惠券券码,最大长度为50位
|
||||||
string codeNo = 9 [json_name = "codeNo"];
|
string codeNo = 9 [json_name = "codeNo"];
|
||||||
|
|
@ -61,45 +64,11 @@ message CmbOrderReply {
|
||||||
|
|
||||||
|
|
||||||
message CmbQueryProductRequest {
|
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}];
|
string activityId = 9 [json_name = "activityId", (validate.rules).string = {min_len: 1,max_len: 32}];
|
||||||
}
|
}
|
||||||
message CmbQueryProductReply {
|
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"];
|
string activityName = 9 [json_name = "activityName"];
|
||||||
|
|
@ -123,25 +92,8 @@ message CmbQueryProductReply {
|
||||||
string detail = 18 [json_name = "detail"];
|
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
|
// 优惠券券码,codeNo
|
||||||
string ticket = 9 [json_name = "ticket"];
|
string ticket = 9 [json_name = "ticket"];
|
||||||
// 更新后串码状态,0:可使用,1:已使用
|
// 更新后串码状态,0:可使用,1:已使用
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,11 @@ func NewHTTPServer(
|
||||||
r.POST("/v1/wechat/notify", voucherService.WechatNotify)
|
r.POST("/v1/wechat/notify", voucherService.WechatNotify)
|
||||||
|
|
||||||
cmb := r.Group("/cmb")
|
cmb := r.Group("/cmb")
|
||||||
|
|
||||||
|
cmb.POST("/v1/orderMock", voucherService.CmbOrderMock)
|
||||||
cmb.POST("/v1/order", voucherService.CmbOrder)
|
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)
|
cmb.POST("/v1/product_query", voucherService.CmbProductQuery)
|
||||||
|
|
||||||
return srv
|
return srv
|
||||||
|
|
|
||||||
|
|
@ -9,36 +9,27 @@ import (
|
||||||
|
|
||||||
func (s *VoucherService) CmbOrder(ctx http.Context) error {
|
func (s *VoucherService) CmbOrder(ctx http.Context) error {
|
||||||
|
|
||||||
reply := &v1.CmbOrderReply{
|
var req v1.CmbOrderReply
|
||||||
RespCode: "",
|
if err := ctx.BindForm(&req); err != nil {
|
||||||
RespMsg: "",
|
return err
|
||||||
Date: "",
|
|
||||||
KeyAlias: "",
|
|
||||||
CmbKeyAlias: "",
|
|
||||||
EncryptBody: "",
|
|
||||||
Sign: "",
|
|
||||||
CodeNo: "",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
orderNo, err := s.cmbOrder(ctx)
|
reply := &v1.CmbReply{
|
||||||
if err != nil {
|
//RespCode: "1000",
|
||||||
reply.RespCode = "1001"
|
//RespMsg: "成功",
|
||||||
reply.RespMsg = err.Error()
|
//Date: "",
|
||||||
} else {
|
//KeyAlias: "",
|
||||||
reply.RespCode = "1000"
|
//CmbKeyAlias: "",
|
||||||
reply.RespMsg = "成功"
|
//EncryptBody: "",
|
||||||
reply.CodeNo = orderNo
|
//Sign: "",
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo 签名
|
|
||||||
reply.Sign = ""
|
|
||||||
|
|
||||||
return ctx.JSON(200, reply)
|
return ctx.JSON(200, reply)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *VoucherService) cmbOrder(ctx http.Context) (string, error) {
|
func (s *VoucherService) cmbOrder(ctx http.Context) (string, error) {
|
||||||
|
|
||||||
var req v1.CmbOrderRequest
|
var req v1.CmbRequest
|
||||||
if err := ctx.BindForm(&req); err != nil {
|
if err := ctx.BindForm(&req); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
@ -50,9 +41,9 @@ func (s *VoucherService) cmbOrder(ctx http.Context) (string, error) {
|
||||||
// todo 签名验证
|
// todo 签名验证
|
||||||
|
|
||||||
boReq := &bo.OrderCreateReqBo{
|
boReq := &bo.OrderCreateReqBo{
|
||||||
OutBizNo: req.TransactionId,
|
//OutBizNo: req.TransactionId,
|
||||||
ProductNo: req.ActivityId,
|
//ProductNo: req.ActivityId,
|
||||||
Account: req.CmbUid,
|
//Account: req.CmbUid,
|
||||||
AccountType: vo.OrderAccountTypeOpenId,
|
AccountType: vo.OrderAccountTypeOpenId,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,25 +55,8 @@ func (s *VoucherService) cmbOrder(ctx http.Context) (string, error) {
|
||||||
return orderNo, nil
|
return orderNo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *VoucherService) CmbQuery(ctx http.Context) error {
|
|
||||||
return ctx.JSON(200, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *VoucherService) CmbProductQuery(ctx http.Context) error {
|
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
|
var req v1.CmbQueryProductRequest
|
||||||
if err := ctx.BindForm(&req); err != nil {
|
if err := ctx.BindForm(&req); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -99,13 +73,13 @@ func (s *VoucherService) cmbProductQuery(ctx http.Context) error {
|
||||||
|
|
||||||
// 数据构造 加签 返回
|
// 数据构造 加签 返回
|
||||||
rep := &v1.CmbQueryProductReply{
|
rep := &v1.CmbQueryProductReply{
|
||||||
RespCode: "",
|
//RespCode: "",
|
||||||
RespMsg: "",
|
//RespMsg: "",
|
||||||
Date: "",
|
//Date: "",
|
||||||
KeyAlias: "",
|
//KeyAlias: "",
|
||||||
CmbKeyAlias: "",
|
//CmbKeyAlias: "",
|
||||||
EncryptBody: "",
|
//EncryptBody: "",
|
||||||
Sign: "",
|
//Sign: "",
|
||||||
ActivityName: "",
|
ActivityName: "",
|
||||||
ActivityId: *q.StockId,
|
ActivityId: *q.StockId,
|
||||||
Amount: "",
|
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