查询绑定结果增加预期账号比对:mismatch 提前拦截
- 下单 data 传了 game_account 时,bind-result 返回 expected_game_account 与 mismatch - 绑定账号与预期不一致时 message 提示,配合 submit 已有的一致性校验提前发现 - 对接文档补充 mismatch 字段与说明
This commit is contained in:
@@ -135,6 +135,8 @@ type DeliveryBindResult struct {
|
|||||||
GameAccount string `json:"game_account,omitempty"`
|
GameAccount string `json:"game_account,omitempty"`
|
||||||
RoleName string `json:"role_name,omitempty"`
|
RoleName string `json:"role_name,omitempty"`
|
||||||
GameChannel string `json:"game_channel,omitempty"`
|
GameChannel string `json:"game_channel,omitempty"`
|
||||||
|
ExpectedGameAccount string `json:"expected_game_account,omitempty"`
|
||||||
|
Mismatch bool `json:"mismatch,omitempty"`
|
||||||
Message string `json:"message,omitempty"`
|
Message string `json:"message,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,14 +222,24 @@ func (s *DeliveryService) GetBindResult(merchantID uint, orderNo, bindUUID strin
|
|||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &DeliveryBindResult{
|
boundAccount := stringFromMap(account, "game_account")
|
||||||
|
result := &DeliveryBindResult{
|
||||||
BindUUID: bindUUID,
|
BindUUID: bindUUID,
|
||||||
Bound: true,
|
Bound: true,
|
||||||
GameAccount: stringFromMap(account, "game_account"),
|
GameAccount: boundAccount,
|
||||||
RoleName: stringFromMap(account, "game_account_role_name"),
|
RoleName: stringFromMap(account, "game_account_role_name"),
|
||||||
GameChannel: gameChannelText(account),
|
GameChannel: gameChannelText(account),
|
||||||
Message: "绑定成功",
|
Message: "绑定成功",
|
||||||
}, nil
|
}
|
||||||
|
// 下单时 data 透传的预期账号:绑定账号与预期不一致时提示,供自建页提前拦截。
|
||||||
|
if expected := requestDataString(order.RequestData, "game_account"); expected != "" {
|
||||||
|
result.ExpectedGameAccount = expected
|
||||||
|
if boundAccount != expected {
|
||||||
|
result.Mismatch = true
|
||||||
|
result.Message = "绑定成功,但绑定账号与下单预期账号不一致,请确认"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DeliveryService) bindWithOrder(orderNo, gameAccount string, auth *DeliveryLinkAuth, merchantID uint) (*DeliveryBindResult, error) {
|
func (s *DeliveryService) bindWithOrder(orderNo, gameAccount string, auth *DeliveryLinkAuth, merchantID uint) (*DeliveryBindResult, error) {
|
||||||
|
|||||||
@@ -1322,6 +1322,14 @@ func requestDataMap(raw string) map[string]interface{} {
|
|||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// requestDataString 读取下单透传 data 中的字符串字段。
|
||||||
|
func requestDataString(raw, key string) string {
|
||||||
|
if v, ok := requestDataMap(raw)[key].(string); ok {
|
||||||
|
return strings.TrimSpace(v)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func resultDataString(raw, key string) string {
|
func resultDataString(raw, key string) string {
|
||||||
if v, ok := resultDataMap(raw)[key].(string); ok {
|
if v, ok := resultDataMap(raw)[key].(string); ok {
|
||||||
return v
|
return v
|
||||||
|
|||||||
@@ -378,7 +378,9 @@ export const endpoints: EndpointSpec[] = [
|
|||||||
"game_account": "4808146277",
|
"game_account": "4808146277",
|
||||||
"role_name": "巫师哈丁12",
|
"role_name": "巫师哈丁12",
|
||||||
"game_channel": "IOS-微信",
|
"game_channel": "IOS-微信",
|
||||||
"message": "绑定成功"
|
"expected_game_account": "1192083858",
|
||||||
|
"mismatch": true,
|
||||||
|
"message": "绑定成功,但绑定账号与下单预期账号不一致,请确认"
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
responseFields: [
|
responseFields: [
|
||||||
@@ -387,11 +389,14 @@ export const endpoints: EndpointSpec[] = [
|
|||||||
{ name: 'game_account', type: 'string', desc: '玩家编号(已绑定时返回)' },
|
{ name: 'game_account', type: 'string', desc: '玩家编号(已绑定时返回)' },
|
||||||
{ name: 'role_name', type: 'string', desc: '角色名(已绑定时返回)' },
|
{ name: 'role_name', type: 'string', desc: '角色名(已绑定时返回)' },
|
||||||
{ name: 'game_channel', type: 'string', desc: '区服渠道(已绑定时返回)' },
|
{ name: 'game_channel', type: 'string', desc: '区服渠道(已绑定时返回)' },
|
||||||
|
{ name: 'expected_game_account', type: 'string', desc: '下单时 data 透传的预期账号(有传时才返回)' },
|
||||||
|
{ name: 'mismatch', type: 'bool', desc: '绑定账号与预期账号不一致(下单传了预期账号时才可能为 true)' },
|
||||||
{ name: 'message', type: 'string', desc: '状态说明' },
|
{ name: 'message', type: 'string', desc: '状态说明' },
|
||||||
],
|
],
|
||||||
notes: [
|
notes: [
|
||||||
'用户扫码绑定完成前返回 bound=false,自建页可定时轮询此接口刷新状态。',
|
'用户扫码绑定完成前返回 bound=false,自建页可定时轮询此接口刷新状态。',
|
||||||
'轮询间隔建议 2-3 秒,绑定成功后展示角色信息并引导提交发货。',
|
'轮询间隔建议 2-3 秒,绑定成功后展示角色信息并引导提交发货。',
|
||||||
|
'下单时 data 传了 game_account 的情况下,绑定账号不一致会返回 mismatch=true,提交发货也会被拒绝(请让买家绑回预期账号或重新下单)。',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user