cmb
This commit is contained in:
parent
e18a7ec246
commit
b4f92d78e6
|
|
@ -124,16 +124,34 @@ message CmbQueryProductReply {
|
||||||
}
|
}
|
||||||
|
|
||||||
message CmbNotifyRequest {
|
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}];
|
||||||
|
|
||||||
// 优惠券券码,codeNo
|
// 优惠券券码,codeNo
|
||||||
string ticket = 1 [json_name = "ticket"];
|
string ticket = 9 [json_name = "ticket"];
|
||||||
// 更新后串码状态,0:可使用,1:已使用
|
// 更新后串码状态,0:可使用,1:已使用
|
||||||
string status = 2 [json_name = "status"];
|
string status = 10 [json_name = "status"];
|
||||||
// 验码日期,格式yyyy-mm-dd hh:mm:ss.sss
|
// 验码日期,格式yyyy-mm-dd hh:mm:ss.sss
|
||||||
string transDate = 3 [json_name = "transDate"];
|
string transDate = 11 [json_name = "transDate"];
|
||||||
// 发码机构号,固定值,掌上生活优惠券系统提供
|
// 发码机构号,固定值,掌上生活优惠券系统提供
|
||||||
string orgNo = 4 [json_name = "orgNo"];
|
string orgNo = 12 [json_name = "orgNo"];
|
||||||
// 扩展字段
|
// 扩展字段
|
||||||
string ext = 5 [json_name = "ext"];
|
string ext = 13 [json_name = "ext"];
|
||||||
}
|
}
|
||||||
message CmbNotifyReply {
|
message CmbNotifyReply {
|
||||||
// 接口调用返回码,1000 成功,1001 失败
|
// 接口调用返回码,1000 成功,1001 失败
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package cmb
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
v1 "voucher/api/v1"
|
||||||
"voucher/internal/biz/bo"
|
"voucher/internal/biz/bo"
|
||||||
"voucher/internal/biz/vo"
|
"voucher/internal/biz/vo"
|
||||||
"voucher/internal/pkg/uid"
|
"voucher/internal/pkg/uid"
|
||||||
|
|
@ -89,7 +90,27 @@ func (v *Cmb) NotifyConsume(ctx context.Context, order *bo.OrderBo, orderOutRequ
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("orderWechat:%+v", orderWechat)
|
if !orderWechat.Status.CanNotify() {
|
||||||
|
return fmt.Errorf("微信订单状态错误,不能通知:%s", order.Status.GetText())
|
||||||
|
}
|
||||||
|
|
||||||
|
request := &v1.CmbNotifyRequest{
|
||||||
|
Mid: "",
|
||||||
|
Aid: "",
|
||||||
|
Date: "",
|
||||||
|
Random: "",
|
||||||
|
KeyAlias: "",
|
||||||
|
CmbKeyAlias: "",
|
||||||
|
EncryptBody: "",
|
||||||
|
Sign: "",
|
||||||
|
|
||||||
|
Ticket: orderWechat.OrderNo,
|
||||||
|
Status: "",
|
||||||
|
TransDate: "",
|
||||||
|
OrgNo: "",
|
||||||
|
Ext: "",
|
||||||
|
}
|
||||||
|
fmt.Printf("request:%+v", request)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ func (v *VoucherBiz) NotifyConsume(ctx context.Context, orderNo, orderOutRequest
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if order.Status.IsSuccess() {
|
if !order.Status.CanNotify() {
|
||||||
return fmt.Errorf("订单状态错误,不能通知:%s", order.Status.GetText())
|
return fmt.Errorf("订单状态错误,不能通知:%s", order.Status.GetText())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
package vo
|
||||||
|
|
||||||
|
type CmbStatus string
|
||||||
|
|
||||||
|
const (
|
||||||
|
CmbStatusSuccess CmbStatus = "0"
|
||||||
|
CmbStatusUse CmbStatus = "1"
|
||||||
|
)
|
||||||
|
|
@ -46,3 +46,15 @@ func (s OrderStatus) IsSuccess() bool {
|
||||||
func (s OrderStatus) IsFail() bool {
|
func (s OrderStatus) IsFail() bool {
|
||||||
return s == OrderStatusFail
|
return s == OrderStatusFail
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s OrderStatus) IsUse() bool {
|
||||||
|
return s == OrderStatusUse
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s OrderStatus) IsExpired() bool {
|
||||||
|
return s == OrderStatusExpired
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s OrderStatus) CanNotify() bool {
|
||||||
|
return s.IsSuccess() || s.IsUse() || s.IsExpired()
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package vo
|
package vo
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
type OrderWechatStatus uint8
|
type OrderWechatStatus uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -18,6 +20,18 @@ var OrderWechatStatusMap = map[OrderWechatStatus]string{
|
||||||
OrderWechatStatusExpired: "已过期",
|
OrderWechatStatusExpired: "已过期",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var OrderStatusMapCmbStatus = map[OrderWechatStatus]CmbStatus{
|
||||||
|
OrderWechatStatusSuccess: CmbStatusSuccess,
|
||||||
|
OrderWechatStatusUse: CmbStatusUse,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s OrderWechatStatus) GetCmbStatusText() (CmbStatus, error) {
|
||||||
|
if t, ok := OrderStatusMapCmbStatus[s]; ok {
|
||||||
|
return t, nil
|
||||||
|
}
|
||||||
|
return "", fmt.Errorf("CmbStatus[%s]未定义", s)
|
||||||
|
}
|
||||||
|
|
||||||
func (s OrderWechatStatus) GetText() string {
|
func (s OrderWechatStatus) GetText() string {
|
||||||
if t, ok := OrderWechatStatusMap[s]; ok {
|
if t, ok := OrderWechatStatusMap[s]; ok {
|
||||||
return t
|
return t
|
||||||
|
|
@ -40,3 +54,11 @@ func (s OrderWechatStatus) IsSuccess() bool {
|
||||||
func (s OrderWechatStatus) IsFail() bool {
|
func (s OrderWechatStatus) IsFail() bool {
|
||||||
return s == OrderWechatStatusFail
|
return s == OrderWechatStatusFail
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s OrderWechatStatus) IsUse() bool {
|
||||||
|
return s == OrderWechatStatusUse
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s OrderWechatStatus) CanNotify() bool {
|
||||||
|
return s.IsSuccess() || s.IsUse()
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue