常见问题
如何处理限购类商品超卖问题?
限购类商品指的是游戏内限制购买次数的商品,例如每日限购、战令、月卡等。此类商品可能由于玩家恶意操作、网络延迟等原因多次购买,造成游戏内资损。
因为支付整个流程都是异步的,世游侧只能被动等待 Store 回调,无法实时知道玩家是否成功购买,所以无论是世游侧还是游戏侧都无法彻底杜绝限购类问题。
为了避免减少超卖问题及带来的影响,游戏侧需要按照以下方案做出限制和声明:
限制订单创建频率 该方法不限制成功购买频率,仅限制未付款订单的创建频率,且对所有商品均适用。 实现逻辑为:当用户创建订单时,若系统检测到此商品存在未支付订单,会自动计算与当前时间的时间间隔。 若间隔小于配置的限制时间(建议设置为10秒左右,可根据用户体验调整),则拒绝创建新订单并给予用户明确提示。
明确限购策略与超卖处理 需提前明确告知玩家限购类商品的购买规则(如仅限购买一次)及多次购买的后续处理规则。 同时应建立完善的超卖处理机制,当发生超卖情况时,可向用户发放同等价值的游戏币、代金券、道具等补偿,以避免因客诉处理不及时导致玩家差评。
游戏服务端创建世游侧订单时,返回 HTTP Status Code 400 错误?
常见的错误类型包括:
- 请求参数错误,请仔细检查参数是否正确,参考 内购与支付-创建订单。
- 商品未创建,内购的商品,需要在 世游发行平台 Console 的 内购与支付 页面进行配置。
- 游戏侧
reference_id
在世游侧已存在,游戏侧需要保证用于标识创建订单请求的reference_id
唯一。
游戏服务端创建世游侧订单时,为什么需要提供游戏服务器、游戏角色信息?
创建订单时需要提供订单元数据,具体参考 内购与支付-创建订单,包含以下字段:
zone_id
游戏大区 ID,必须有值,由世游侧运维提供。server_id
游戏服务器 ID,如果游戏不分服(通服架构),请使用zone_id
作为server_id
。role_id
游戏角色 ID,如果游戏内没有角色 ID,取值可以为 Combo ID。role_name
游戏角色名,如果游戏内没有角色名,取值可以为role_id
。role_level
游戏角色等级,如果游戏内没有角色等级,可以根据游戏特性提供比较有意义的值(例如:游戏内关卡进度)。
提供以上信息主要用于以下场景:
- 问题定位与故障排查:世游侧技术团队可通过这些信息快速定位支付异常订单。
- 数据分析与业务优化:支持购买行为分析、用户画像构建等数据驱动决策。
- 用户服务支持:当玩家反馈支付问题时,客服可通过游戏服务器、游戏角色信息快速查询订单状态。
游戏服务端接收到退款通知,要怎么处理?
在接收到订单 退款通知 时,首先游戏需按照文档 请求鉴权 对请求的合法性进行校验。
此通知代表订单已经被退款,游戏侧需要对订单内发放的游戏资产进行回收。
在扣除玩家道具/货币时,需要考虑以下特殊情况的处理:
- 玩家道具数量不足:退款后,玩家道具数量可能会不足,常见做法是将游戏道具扣除为负数(注意道具数量字段需要为 int 类型,而不是 unsigned int,防止出现溢出)。
- 玩家订单未发货: 理论上可能会出现订单发货通知游戏侧一直没有处理,玩家来退款的情况。此时游戏侧应先排查处理订单发货问题,再进行游戏资产回收。
- 玩家恶意退款:有些玩家会通过退款刷道具,针对这种 "恶意" 退款的玩家,游戏侧可以通过数据分析识别出这些玩家,并对其封号处理。