C#编程之iOS的in-app purchase C#服务器二次验证实现
小标 2018-11-14 来源 : 阅读 1299 评论 0

摘要:本文主要向大家介绍了C#编程之iOS的in-app purchase C#服务器二次验证实现,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

本文主要向大家介绍了C#编程之iOS的in-app purchase C#服务器二次验证实现,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

iOS的in-app purchase实现,早在ios4的时候,我实现了一次,这次升级到ios8,重新看了下文档,ios本身有了更新,加上这次我们要做服务器二次验证,还是好好摸索了下。


首先我要说的是,ios的文档内虽然给出了服务器验证的代码,但是完全是用object-c实现的。我想这本身没什么太多价值吧。至少我还没遇见用oc来实现游戏逻辑服务器的。如果是应用,可能很多人会使用PHP,asp,或者Java来实现服务器,那么这块我就不说了,网上可以搜到非常多的资料。我这里着重介绍C#服务器的实现(为什么游戏服务器用C#,不用C++?项目就是这样,也就不解释了)。客户端的代码网上到处都是了,不再罗列


设计思路:


注意点:
1.ios7以后的版本,transaction中的transactionReceipt已经被淘汰,虽然目前到8.1.3为止,仍旧可以访问该变量,但是谁知道哪天就不行了呢,正确的访问方法
NSURL *url = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData datawithContentsOfURL:url];
2.接下来很容易出现问题的部分,按照ios的文档,此时你需要把这个NSData*的收据数据发送到你的服务器上进行二次验证,ios很轻巧的给出了一段oc的范例代码。(但是有几个人会用OC来写游戏服务器啊,范例代码完全没有参考价值)。也就是说,此时,我们需要把NSData*转换成我们服务器能读取的数据格式,大部分的服务器代码(java,php,c++,C#)我们会使用byte数组,或是string,char数组来传递。我们的项目比较特殊,使用了Unity3D的接口,所以只接受string格式。
这里我要说的是,我看到网上有人,包括unity3d的某个插件是在客户端上直接使用httpwebrequest的方式,然后客户端直接处理httpwebresponse,这种做法可以获得正确的验证,但这不是服务器二次验证,因为根本没有递交到服务器上,只是在客户端代为行使了服务器的权利。还有网上有文章介绍在客户端使用httprequest把数据POST到服务器,再由服务器POST给app
 
store,我没有试过这种方式,但是我一样觉得这完全多此一举,且麻烦。最佳的方式,就应该是像ios文档描述的那样,使用socket发送给服务器,由服务器post给app
 store。


但是要注意的是,此时读取出来的NSData*不能直接转NSString*,可能里面由结束符,直接转的话,你将无法获得完整或是正确的字符串。所以直接调用NSData的base64EncodeString,才能转出争取完整的字符串。(其实这步更好的是放到服务器上去加密,假如你不像我一样必须传递给服务器string类型的话,你可以直接把NSData传递给本地的socket,但是我估计,无论此时你本地是C++还是C#,如果你不适用基于64的加密程序,直接转string,都会出现无法正确转出字符串的,如果你能把NSData转byte数组来传递,也许就没有这个问题了)
3.服务器收到加密后的字符串,然后使用httpwebrequest 
post数据。注意,post的body主体必须是json字符串,{“receipt-data”:“服务器收到的收据数据”},大括号也是要的哦,我因为没有加大括号,曾不停的出现{“status”:21002}的错误

4.设置HttpwebRequest
method肯定是POST,这个不多说
ContentType可以是"application/x-www-form-urlencoded"或者“application/json”
ContentLength可以设,可以不设,看你怎么传递数据,


Body就是你要传给appstore的JSON字符串,在C#里没有这个变量,直接使用流写入,PHP,java等有,所以看用什么语言实现了

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程