appstore苹果商店支付对接总结

    公司最近把对接的appstore的任务(包括游戏登陆需要对接新浪微博登录和腾讯登录)分配给我。由于这三种对接(新浪微博登录、腾讯登录和appstore的支付),都是只有对应的API文档,没有对方的技术人员支持(大家懂的哈),造成在开发的过程的过程中遇到了各种先前想象不到的问题。幸运的是,功夫不负有心人,最终自己在自己的努力和同事的帮助下,终于完成了任务。现在把本人开发过程中的遇到的挫折写下来,作为自己的技术积累也希望给其它开发人员提供有益的参考。

    问题一:(腾讯登录对接)腾讯SDK1.8版本开发是否需要选最新的版本?

     答       :  我刚开始的时候想许多开发人员一样到腾讯官网下载最新的SDK(1.8.1版本),但是在后面的开发过程中发现用这个版本开发有一些问题,后面果断放弃最新版本改用1.2.1版本(因为我们只是需要对接腾讯的登陆和分享功能,所以版本低点没有问题)。最新版本有的问题主要是:1.需要把项目的URL Scheme设置成“tencent”+AppId的格式;2.需要在applation.mm文件必须添加腾讯url转向转向接口;3.加载授权页面时经常进入到空白页面;4.在真机上测试的时候经常还是会报转向错误(即登录的结果不能返回给应用程序)。特别是前2个原因是我不能接受的(腾讯和新浪都采用的sso数据返回,我看到新浪也有类似要求),但是他们的低版本好像不显示设置这些参数也可以正常返回。所以最终决定用低版本的SDK。(补充:选择低版本是无奈之举,如果后面上面的问题有新的解决办法,最后SDK还是采用第三方的最新版本)。

    补充(20131012):今年国庆节之后,腾讯sdk(ios1.2.0版本)首次登录的时候,会报100029(http协议非法),并且1.2版本SDK中有APPstore不允许使用的私有方法,所以现在必须采用最新的版本(好处:支持ios7,并且以URL Scheme是可以添加多个的)。


   问题二:(腾讯登录和微博登录)登陆成功但是获取不到第三方的账号信息?

    答       : 这个问题很好解决,你用的账号有问题。到腾讯的开发者后台(新浪的开发者后台)查看你应用的appId、appKey等账号信息是否正确。对应的权限是否有(我开发中遇到的查询不到腾讯的账号信息就是后台的获取账号信息是“非激活”状态)。


   问题三:(新浪微博登录)点击新浪登录没有进入自己写的流程,而是去打开新浪微博客户端的登录?

    答       :这个问题我刚开始遇到感觉很奇怪,因为我在模拟器上新浪微博登录都是正常的。后来发现是我测试的真机上已经安装的新浪微博的客户端,在打印日志发现登录调用也是正常的。我来解决这个问题,还是跟踪代码到新浪微博登录的源代码,发现在弹SDK内嵌的授权页面之前,首先去判断IPad是否安装了新浪微博客户端、IPhone是否安装的新浪微博客户端,如果安装了首先调用上面的其次才是SDK内嵌的登录页。发现之后把之前判断立马注掉,问题解决。

   

   问题四:(腾讯登录和微博登录)这两种登录方式的授权页面为什么没有关闭页面的按钮?

   答        :这个问题还不太清楚,不知道是否是早期的版本就没有这个按钮。但是新浪微博登录是有的(不信,你可以尝试点击授权页面的左上角会有取消效果),这个是看新浪微博SDK源代码的发现的。但是不知道为什么按钮没有显示出来(最大的可能是布局的时候,把按钮放错了位置)。

        补充:(130917)今天发现了原因:是我的项目忘记了引入腾讯SDK和微博SDK的图片资源,导致显示不出来。

   

   问题五:(appstore支付)点击购买的时候报Invalid product Id(无效的产品id)?

    答       : 刚开始遇到这个问题以为和问题二类似,但是登登录到appstore的开发者中心的后台配置页面检查发现配置状态都是正常的。无语了(最终解决这个问题花了我2天多时间啊)! 百度google一顿狂找原因啊。按照网上的各种可能不断的尝试,某天早上突然好了(现在也不知道具体原因,不过最有可能是证书和网络原因)。然后在appstore后台配置了一个测试账号(沙盒测试需要测试账号)。好不容易在模拟器上把一切都调试好了,准备结束任务的时候,意外又出现了。在真机上测试的时候,又报invalid product id的异常。崩溃了!又是一顿好找啊。最后终于知道原因了——“appstore应用沙盒测试的时候必须使用没有越狱原版ios的机器测试”。找了一个没有越狱的机器,问题解决。

     补充:(20131120)appstore支付注意下面三个方面:1,项目bundle id 必须和appstore配置的一样;2,商品编号必须和配置的一致并且商品的状态正确;3,测试支付的时候是沙盒模式必须在没有越狱的原生ios系统设备中测试。

  

    参考文档:

   http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91SDK%E4%B8%8B%E8%BD%BD   腾讯登录API文档

   http://troybrant.net/blog/2010/01/invalid-product-ids/comment-page-2/   invid product id 原因汇总

   http://xiaominghimi.blog.51cto.com/2614927/706419  沙盒测试注意事项

   http://www.cocoachina.com/bbs/read.php?tid-24738.html appstore对接官方文档(中文版)


你可能感兴趣的:(第三方对接)