跳到主要内容
版本:v6

常见问题

商品配置文件是否可以使用 Excel 文件?​

不可以,请按照 SDK 6.X 商品新增说明(试行) 填写信息,使用文档内的 csv 模版,然后贴到申请工单里,不然我们还要人工再整理一遍才能使用工具自动导入。

文档中的沙盒支付和 TapPlay 有什么关系?​

和 TapPlay 没有任何关系,沙盒支付是支付渠道提供的一种不需要付真钱的支付测试功能。

如何处理退款?​

支持退款的渠道,请参考 支付服务端对接文档-退款通知 做好游戏内道具扣除处理。其他暂未支持退款通知的渠道,需要游戏根据自己的实际业务情况来定义一套退款流程。

如何测试退款?​

  1. 游戏内用苹果沙盒支付支付一笔订单;
  2. 把支付订单的 xdid 给到平台的服务端研发,ta 会给这笔订单 Mock 一下退款通知。

服务端能否同时给出支付取消回调?​

各个支付渠道并不会在玩家取消支付或者支付订单超时后给到我们这个类型的回调,因此暂时不支持服务端的支付取消回调。

为什么只有部分渠道支持退款通知?​

只有 Apple 给接入方提供了退款回调,Google Pay 可以通过定时拉取的方式获取到退款数据,而其他的支付渠道的退款方式则千差万别,目前暂不支持。

为什么没有收到支付结果回调?​

  1. 游戏需要确认是否向平台提供了回调地址;
  2. 游戏服务器防火墙是否对平台的服务开放了 ip 白名单;
  3. 以上两项都确认任无法收到回调请联系平台研发排查。

购买不同商品的时候为什么会弹出补款弹窗?​

因为苹果会做多笔交易的票据合并,所以会存在多笔交易返回相同票据的情况。购买其它商品时因为返回的票据相同,所以 SDK 会认为已经购买过了并弹出补款窗口。

为什么频繁使用沙盒账户购买商品时会 出现不到帐现象?​

因为该笔交易被苹果做了票据合并,生产环境 XD Server 禁用了苹果沙盒票据合并处理,非沙盒交易不受影响。

使用苹果支付时为什么会出现 "充值频繁,请更换其他商品进行充值"?​

使用苹果支付方式频繁购买某一个商品 SKU 时会触发小额风控,小额支付定义:40 元以下的支付。风控策略是:

  1. 第一单成功之后,1 分钟内不能操作第二单;
  2. 一小时之内已成功 5 次,再次发起充值请求需要等待 30 分钟;
  3. 一天之内(自然0点-24点)成功充值超过 20 次,再次请求需要等待 1 小时。

Android 和 iOS 支付时报错 “This item doesn’t exist” 或者其他语言显示等同的意思,比如中文 “此物品不存在” 。​

需要检查商品 id 配置是否正确,Google Pay 后台、苹果后台以及 Silent 后台商品配置是否正确。

iOS 支付时出现报错 “invalid product with id” 的报错?​

需要检查一下这个商品 id 是否正确,该商品 id 需要与在苹果后台配置的商品 id 保持一致。

调用 PayWithProduct 进行苹果支付时,返回:发生未知错误,code = 0 是什么原因?​

请检查苹果账号是否已加入到苹果的沙盒环境中。

网页充值时客户端传的 gameRoleId 与后端通知的 roleId 不一致是什么原因?​

客户端传入的 gameRoleId 会在下单时由 xd server 通过游戏提供的角色查询接口再次验证一遍,最终通知到游戏方的 gameRoleId 以游戏接口返回的 roleId 为准。

谷歌支付时,提示 "Google Play In-app Billing API version is less than 3" 是什么原因?​

Google 判定当前设备的地区时中国大陆,会被限制调用支付 API,需要开启 VPN 切换到非中国大陆地区,

同时在系统设置中清理 Google Play 应用商店 App 的缓存,重新打开 Google Play 应用商店,查看到有 「付费」列表栏时再次尝试谷歌支付方法。

谷歌包应用内商品定价与实际支付时所需要支付的金额不对应,存在几分钱差别是什么原因?​

SDK 给到的商品 sku 信息都是直接从 Google SDK 查询到的 Google 商品的 sku 信息。

在 GP Console 后台应用内商品定价的弹窗中附有说明:默认价格用户生成您的应用在其他国家/地区的当地价格。系统会根据当日汇率及相应国家/地区特定的定价模式生成当地价格。 在本地货币不受支持的国家/地区,则会直接使用您设置的默认价格。

谷歌支付出现报错:您所在国家/地区不提供该商品是什么原因?​

SDK 不会限制游戏的支付地区,不提供该商品需要游戏自行检查在 GP 上架的国家/地区信息。 示例 1示例 2

为什么在 Google Play 订单管理后台退款了却没有收到退款回调通知?​

首先参考 Google Pay 的 文档,其中说明了哪些退款可以被拉取到。tip: Google Play 订单管理后台退款未勾选 去除权限 选项是不会收到退款通知的,相当于只退钱不退货。

同时由于 Google Pay 并没有提供实时的退款回调,平台只能定时去拉取退款数据,而 Google 对拉取的频率有严格的限制,目前是定时 30 分钟拉取一次,因此请耐心等待。如果依然没有则联系平台研发排查。

接了 SDK 6.x 支付,但是 TapDB 付费数据这边没有任何记录?​

首先确认客户端使用了 TapDB.setUser("userId"); 方法 设置 userid。

如果已经 setUser 了还是查不到任何记录,再确认设置的 userid 是否为 xd user id, TapDB 上报的数据必须使用相同的 userid 才能关联起来, xd server 默认使用 xd user id 进行数据上报。如果需要使用游戏角色 id 上报请联系 XDSDK 项管。

接入 SDK 在测试阶段 Firebase 的后台能看到安装数据,但是看不到付费数据?​

Firebase 的 in_app_purchase 事件只会自动记录 Google Play 商店和 Apple 商店的付费行为,即苹果支付和 Google 支付,其他第三方不会收集,且这个事件对于无效或沙盒支付也不会记录。 附上 Firebase 自动统计事件的 文档说明。

游戏为了提审需要沙盒支付功能,该怎么处理?​

目前 XDSDK 只有 6.1.4 版本支持 SDK 提供的沙盒支付功能,如果游戏接入的是 6.1.4 版本的 XDSDK 则可以通过调用 SDK 的接口实现。除此之外,建议游戏使用最新的 6.5.x 及其以上版本的 XDSDK,游戏侧需要自行接入 TDS 提供的 实名认证防沉迷,由于第三方原因不支持沙盒支付,游戏侧需要自行处理到账流程(不调用 SDK 支付接口,玩家通过实名认证防沉迷后即点即到账的方式,不触发真实支付宝、微信等实际转账的情况。点击充值就立即到账的形式即可)。简要概括下流程:游戏侧接入 TDS 提供的实名认证防沉迷,玩家进行实名认证,消费之前调用实名认证防沉迷提供的「检查消费上限」接口判定当前玩家是否可以进行本次消费操作。如果可以消费,游戏侧服务端下发玩家购买的商品,服务端发货成功后,游戏侧再调用实名认证防沉迷提供的「上报消费金额」的接口,向 TDS 上报此次消费的金额。

Google 支付失败,提示:"query by product id: xxxx find empty SkuDetails (或 ProductDetails), please check!"?​

检查以下选项:

  1. Google 商品 ID 是否与 Google Play 控制台中配置的商品 ID 是否匹配;
  2. Google Play 应用商店 App 中首页 tab 栏中的「付费」一栏是否有数据(需要挂在 VPN);
  3. 当前手机 Google Play 应用商店 App 中地区是否在 Google Play 控制台中配置的商品所支持的地区范围内;
  4. 手机安装的游戏包签名 MD5 值是否与 Google Play 控制台中「应用完整性」的签名 MD5 值匹配;
  5. 应用未正式上架前,需在 Google Play 控制台中提供的「内部测试」轨道发布一个测试包,参考文档。

唤起 Google 支付,弹窗提示 "未配置通过 Google Play 结算..." ?​

应用在未正式上架 Google Play 应用商店时,支付测试只能有许可测试权限的人员才能进行支付。

  1. 检查当前 Google Play 应用商店 App 登录的 Google 账号是否在许可测试权限的人员名单中;

  2. 当 Google Play 应用商店 App 登录得有多个 Google 账号时,非许可测试权限的 Google 账号可能会影响沙盒支付,需退出其他账号,保证当前只登录有许可测试权限的 Google 账号。

    示例 1

Android 原生支付(国内)使用带 UI 方式时支付弹窗有支付宝支付但是并没有显示微信支付以及无 UI 支付时无法唤起微信支付。​

检查以下选项:

  1. 检查测试的设备上是否有安装微信客户端;
  2. 在 Silent 后台查看商品配置信息支付渠道是否支持微信支付;
  3. 参考文档 Android 11 适配配置检查游戏包体 AndroidManifest.xml 文件中是否对微信进行了适配即增加 <package android:name="com.tencent.mm"/> 配置。