帮助与文档

国内标准版>常见问题

Iap支付常见问题Q&A

Q.SDK调用重要说明

A:

以下接口调用出错直接会影响现网收入,请务必重视!!

  1. 必须添加KeychainSharing的支付Group,groupid为com.tencent.wsj.keystoregroup;

  2. 环境变量开发联调阶段用test,发布前切换成release,且必须保证游戏后台也是release,

  3. 发布前切记检查,切记切记!

  4. 登陆成功后立刻调用registerPay接口进行注册补发货操作,不要在registerPay接口前判

  5. 断judgeIsCanPay(C  接口 为IsSupprotIapPay),切记切记!

  6. 支付pay接口前,不需要再调用registerPay接口,直接pay即可,否则会导致支付失败!


Q: 下单失败回调错误码说明

A :

OC回调:-(void)onOrderFailue:(RequestInfo*)info withErrorMessage:(NSString*)errorMessage withEorrorCode: (int)code;

C++回调:onOrderFailure(const APMidasIAPRequestInfo& IAPRequestInfo,const char * errorMessage, int code); 

  1. 当code为1138的时候,是由于支付被风控而导致下单失败,可能此用户支付是由于淘宝代充或刷单引起的,请游戏直接展示errorMessage中的错误提示,提示用户支付失败的原因(大意为您的账号存在安全风险,暂时无法支付); 

  2. 当code为其他错误的时候,建议业务自己构造如“系统繁忙,请稍后再试”;


Q: 拉取商品信息失败

A:

  1. RDM上,是否将应用的In-App Purchase功能打开:在Certificates, Identifiers &

    Profiles中查找,确认RDM管理员帮你申请app-id时,打开了In-App Purchase选项;

  2. RDM上的应用状态,请确认是否为Waiting For Upload;

  3. 千万确定你的工程文件中制定的bundle identifier和RDM中申请的app id是一致的,必须一字不差,大小写敏感;

  4. 检查你用来测试的iOS系统版本是否过低,一般目前已知的可以支持的版本,在iOS5.0以上;

  5. 在RDM上检查配置的商品是否在Ready to Submit及其以后的状态,支持的其他状态还有Submit for Review,Waiting for Review,Waiting for Upload,Waiting for Screenshot,In Review,Approved。

  6. 检查你所请求的productId是否与在RDM上配置的id一致,必须一字不差,大小写敏感;

  7. 你是否完善了iTC账户上的银行卡信息、税务信息以及联系人信息等:这一项,一般用公司的RDM来申请的,不会遇到这个问题,但是也不排除公司新申请的开发者账户还没有维护这个信息,请找RDM管理员确认(另外,这一项配置后,可能要数小时才能生效,1小时到24小时不等,请耐心等待);

  8. 是否刚在RDM中添加的productId?有时候也会遇到要等一会才能生效的情况;

  9. 是否是越狱设备?越狱设备大多数已经将app store的购买请求截流在本地,如果设备越狱,请换一台设备测试;

    (更多描述见http://km.oa.com/articles/show/215241

  10. 每次输入测试appleid的时候,不要 在系统设置里面输入,要在购买时拉起的密码框输入


Q:提示连不上iTunes Store

  A:

  1. 网络问题(一般多换几个网络,不太可能都出现,比如说,freewifi出问题,可以尝试更换成3G网络;

  2. 未经苹果审核正式发布的测试版本,没用使用开发者帐号下的测试帐号进行测试。(首先检

    测手机App Store上是否已经登录了苹果帐号,如果有先进行注销再登录对应开发者帐号下的测试帐号)

  3. 越狱的手机,也会连不上;

  4. 开发环境下,用mac电脑上的模拟器,一般情况下也连不上iTunes Store,不建议在模拟器上调试midas iap 支付sdk。

  5. 如果没有,还是一直连不上,可以定位是苹果沙箱不稳定,请稍后再进行尝试


Q:点击支付以后提示“您已购买此APP内购买项目”,导致无法进行购买

A: 

这种情况是因为之前有一笔同等数量的交易未完成导致票据没有Finish,当下次登录的时候苹果会通知midas进行补发。如还未补发按以下步骤检查:

  1. register接口在登录成功和重新登录成功的时候调用一次即可

  2. dipose接口在游戏release自己的时候调用一次,其他地方不能调用。

  3. 支付的时候不能锁定屏幕

  4. payfinish回调表示苹果扣费成功但还没有发货

  5. distrbutegood接口表示发货成功,这个时候刷新余额

  6. 设置支付环境 在 register之前

如果确定都没有问题先kill掉,然后重新拉起登录 ,应该就会进行补发.如果还是没有补发,这个基本就确定是苹果的沙箱不稳定造成建议更换测试账号进行测试


Q:程序出现crash,或者log不符合逻辑

A:

因为C和Objective-C混编的时候,Extern C函数中不能新建IAPHelper、Objec所以需要在Object-C 内将所有初始化封装好。如果不是该原因请联系midas


Q:应用需要上线一个包月类型的商品,该需要怎么配置

A:

苹果后台物品登记Type值不自动续费选subscribe,自动续费选auto renewable subscribe;

程序中producttype参数值不自动续费设置“4”,自动续费设置“2”。


Q:包月类型为什么会一直发货失败

A:

包月的商品都有一个key必须配置在我们的后台,出现该问题请联系midas进行检查


Q:为什么demo编译不过

A:

把支付的framework包删掉引用,重新引入


Q:关于非消耗性商品的补发接口

A:

这个接口是非消耗性商品由于某种原因需要补发时调用,含有非消耗性商品的应用调用该接口可减少一点被App Store拒绝上线的理由。


Q:什么是非消耗性商品

A:

非消耗性商品是指在一个帐号中购买该商品后,在其它硬件设备上登录此帐号同样拥有使用该商品的权限。

例如:在甲手机上登录甲的帐号经过购买可以下载某段音乐,那么在乙手机上登录甲的帐号同样能下载该段音乐。


Q:时间戳冲突问题

A:

调用赠送接口和扣费接口时,如果同一个账户同一时间对账户进行操作会引发时间搓冲突。建议不要在同一时间多次调用赠送接口、扣费接口。


Q:为什么支付无法成功或者为什么会提示“没有授权购买此商品”

A:

未上线的应用无法使用现网环境的apple id进行支付测试,需要使用开发者帐号下的测试帐号进行

测试。该测试帐号需要找itc管理员去申请或索要。


Q:包月类型业务如何修改续费类型

A:

修改续费类型需要:

  1. 在RDM上重新申请新的product id 并选择对应的类型(Auto-Renewable Subscription 表示自动续费包月,Non-Renewing Subscription 表示非自动续费包月)。

  2. 在cpay上将对应offerid下登记的物品信息更改成,并在更改后同步沙箱现网数据。


Q:苹果官方支付扣费邮件说明

A:

由于苹果的服务器在美国,当玩家通过appel帐号进行支付后绑定邮箱会收到相应的扣费通知,

这里需要注意的是该通知的时间为美国时间。 我们查询充值流水的时候需要进行时差的转换。


Q:Midas支付SDK1.3.6c和1.3.6d版本C++接口补发货问题调用顺序

A:

  1. 原则是所有的接口都必须在APMidasInterface::RegisterPay调用之后调用;

  2. RegisterPay之前不需要判断IsSupportIapPay,一方面防止补发货的时间窗口被错过,另外,

    也防止 再一次补发货还没完成时,用户打开支付的访问限制导致用户损失;

  3. 下个版本会在不变动C++接口的情况下,优化调用顺序影响补发货的问题,尽量让业务用的更顺手;

  4. 给出调用顺序的参考,请业务核对,如下:

        APMidasInterface::RegisterPay

        APMidasInterface::RegisterCallbackHandler

        APMidasInterface::SetLocale -> optional

        APMidasInterface::SetIapEnalbeLog  -> optional


Q:如何判断玩家是否触发风控策略导致无法下单

A:

  1. 获取玩家登录的QQ或者openid

  2. 打开日志查询地址

  3. 发现日志中有如下1138错误的情况为风控策略限制下单[object Object]