查询绑定结果增加预期账号比对: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"`
|
||||
RoleName string `json:"role_name,omitempty"`
|
||||
GameChannel string `json:"game_channel,omitempty"`
|
||||
ExpectedGameAccount string `json:"expected_game_account,omitempty"`
|
||||
Mismatch bool `json:"mismatch,omitempty"`
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
@@ -220,14 +222,24 @@ func (s *DeliveryService) GetBindResult(merchantID uint, orderNo, bindUUID strin
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &DeliveryBindResult{
|
||||
boundAccount := stringFromMap(account, "game_account")
|
||||
result := &DeliveryBindResult{
|
||||
BindUUID: bindUUID,
|
||||
Bound: true,
|
||||
GameAccount: stringFromMap(account, "game_account"),
|
||||
GameAccount: boundAccount,
|
||||
RoleName: stringFromMap(account, "game_account_role_name"),
|
||||
GameChannel: gameChannelText(account),
|
||||
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) {
|
||||
|
||||
@@ -1322,6 +1322,14 @@ func requestDataMap(raw string) map[string]interface{} {
|
||||
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 {
|
||||
if v, ok := resultDataMap(raw)[key].(string); ok {
|
||||
return v
|
||||
|
||||
@@ -378,7 +378,9 @@ export const endpoints: EndpointSpec[] = [
|
||||
"game_account": "4808146277",
|
||||
"role_name": "巫师哈丁12",
|
||||
"game_channel": "IOS-微信",
|
||||
"message": "绑定成功"
|
||||
"expected_game_account": "1192083858",
|
||||
"mismatch": true,
|
||||
"message": "绑定成功,但绑定账号与下单预期账号不一致,请确认"
|
||||
}
|
||||
}`,
|
||||
responseFields: [
|
||||
@@ -387,11 +389,14 @@ export const endpoints: EndpointSpec[] = [
|
||||
{ name: 'game_account', type: 'string', desc: '玩家编号(已绑定时返回)' },
|
||||
{ name: 'role_name', 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: '状态说明' },
|
||||
],
|
||||
notes: [
|
||||
'用户扫码绑定完成前返回 bound=false,自建页可定时轮询此接口刷新状态。',
|
||||
'轮询间隔建议 2-3 秒,绑定成功后展示角色信息并引导提交发货。',
|
||||
'下单时 data 传了 game_account 的情况下,绑定账号不一致会返回 mismatch=true,提交发货也会被拒绝(请让买家绑回预期账号或重新下单)。',
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user