Verify an App Store Transaction Receipt 【苹果服务端 验证一
发布时间:2020-12-17 01:18:31 所属栏目:安全 来源:网络整理
导读:? 1、?从Transaction 的TransactionReceipt属性中得到接收的数据,并以base64编码; 2、创建JSON对象,字典格式,单键值对,键名为“receiptdata”,值为上一次编码的数据,效果: {"receipt-data":"base64编码之后的数据"} 3、发送HTTP POST请求,将数据发
? 1、?从Transaction 的TransactionReceipt属性中得到接收的数据,并以base64编码; 2、创建JSON对象,字典格式,单键值对,键名为“receiptdata”,值为上一次编码的数据,效果: {"receipt-data":"base64编码之后的数据"} 3、发送HTTP POST请求,将数据发送到App Store?,其地址为:https://buy.itunes.apple.com/verifyReceipt 4、App Store的返回值也是一个JSON格式对象,包括两个键值对: { 如果status的值为0,就说明该receipt为有效的,否则就是无效的。 public int verifyReceipt( byte[] receipt) { int status = -1; //This is the URL of the REST webservice in iTunes App Store URL url = new URL("https://buy.itunes.apple.com/verifyReceipt"); //make connection,use post mode HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setAllowUserInteraction(false); //Encode the binary receipt data into Base 64 //Here I'm using org.apache.commons.codec.binary.Base64 as an encoder,since commons-codec is already in Grails classpath Base64 encoder = new Base64(); String encodedReceipt = new String(encoder.encode(receipt)); //Create a JSON query object //Here I'm using Grails' org.codehaus.groovy.grails.web.json.JSONObject Map map = new HashMap(); map.put("receipt-data",encodedReceipt); JSONObject jsonObject = new JSONObject(map); //Write the JSON query object to the connection output stream PrintStream ps = new PrintStream(connection.getOutputStream()); ps.print(jsonObject.toString()); ps.close(); //Call the service BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); //Extract response String str; StringBuffer sb = new StringBuffer(); while ((str = br.readLine()) != null) { sb.append(str); sb.append("/n"); } br.close(); String response = sb.toString(); //Deserialize response JSONObject result = new JSONObject(response); status = result.getInt("status"); if (status == 0) { //provide content } else { //signal error,throw an exception,do your stuff honey! } return status ; } ? ? 验证的方式也可以采用HTTP协议:HttpClient,下载httpcomponents-client,然后导入lib里的几个jar包。 这也是一种方式,不再进行多余的说明了。所谓条条道路通“苹果”。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- bash – 将条目插入到crontab中,除非它已经存在(如果可能的
- 阅读bootstrap2 中的bootstrap-responsive.css源文件总结的
- AngularJS过滤器只在某些对象上
- bash – 清洁的方式从shell脚本启动Web浏览器?
- .net – 单声道shell执行
- angularjs – Ionic:获取离子内容中当前可见的项目
- twitter-bootstrap – Twitter Bootstrap:没有匹配的Typea
- 如何使用$promise.then在jasmine规范中模拟AngularJS $资源
- 我正在寻找学习Vim或Emacs的聪明方式的提示
- bootstrap里的sr-only是什么属性?用途是什么?