常见问题
如何处理限购类商品超卖问题?
限购类商品指的是游戏内限制购买次数的商品,例如每日限购、战令、月卡等。此类商品可能由于玩家恶意操作、网络延迟等原因多次购买,造成游戏内资损。
因为支付整个流程都是异步的,世游侧只能被动等待 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,防止出现溢出)。
- 玩家订单未发货: 理论上可能会出现订单发货通知游戏侧一直没有处理,玩家来退款的情况。此时游戏侧应先排查处理订单发货问题,再进行游戏资产回收。
- 玩家恶意退款:有些玩家会通过退款刷道具,针对这种 "恶意" 退款的玩家,游戏侧可以通过数据分析识别出这些玩家,并对其封号处理。
TestFlight 支付提示“本游戏的内购仅支持中国区。请使用中国大陆境内的苹果账号”怎么办?
如果 TestFlight 版本支付时提示“本游戏的内购仅支持中国区。请使用中国大陆境内的苹果账号”,或确认订单接口返回 400 invalid_storefront,请先检查测试设备的 iOS 版本。
优先升级至 iOS 27 或更高正式版本后重试。 苹果已在 iOS 27 修复 TestFlight 环境下 Storefront API 可能返回错误元数据的问题(181766819 / FB23646993),参见 iOS 27 发布说明 — StoreKit。
如果测试设备仍使用 低于 iOS 27 的系统,可采用以下临时方案:
- 联系世游技术,获取 中国大陆区沙盒 Apple 账号。
- 先通过 TestFlight 安装或更新游戏。
- 退出设备 设置 > Apple 账号 > 媒体与购买项目 中的账号。
- 开启 开发者模式,在 设置 > 开发者 > 沙盒 Apple 账号 中登录世游技术提供的账号,保持原有安全设置(遇到升级提示时选择 其他选项 > 不升级)。
- 重启游戏后重试。测试期间保持 媒体与购买项目 退出状态。
苹果官方说明,重新登录「媒体与购买项目」后,TestFlight 内购会重新归属于普通 Apple 账号,而非沙盒 Apple 账号。退出该项也可能影响设备上正式 App 的已购内容访问,建议使用专用测试设备。参见 使用 TestFlight App 登录沙盒账号。
如果升级系统或采用上述临时方案后仍然失败,请将错误信息、发生时间、设备系统版本及相关订单号提供给世游技术排查。
微信小游戏在 iOS 平台进行虚拟支付失败,提示“购买失败(701001)”
该错误通常表示当前环境不满足支付要求,请检查以下项:
- 操作系统要求:使用 iPhone 或者 iPad,iOS 15及以上版本
- 基础库版本要求:3.10.3 及以上
- 客户端版本要求:8.0.68 及以上
- 苹果支付不支持使用沙箱环境,仅支持使用现网环境(该项联系世游技术团队检查)
微信小游戏虚拟支付失败,提示“购买失败(2860)”
该错误通常表示支付道具未完成发布。
请检查:
- 支付道具是否已在后台完成配置
- 道具是否已成功发布
注意:未发布的道具无法在现网环境完成支付。