服务端判断苹果内容是否支付完成(二)
来源:互联网 发布:mac能玩穿越火线吗 编辑:程序博客网 时间:2024/05/20 18:54
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" : { … }
}
说明:
如果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包。
这也是一种方式,不再进行多余的说明了。所谓条条道路通“苹果”。
0 0
- 服务端判断苹果内容是否支付完成(二)
- Java服务端支付功能模块--(二)微信支付
- 判断苹果是否越狱
- IOS苹果内支付iap Java服务端
- java 服务端验证苹果支付applepay账单
- From表单判断内容是否有改变(二)
- 判断苹果手机是否联网
- 判断支付宝是否安装
- 判断网页是否加载完成
- 判断页面是否加载完成
- 判断Webbrowser是否加载完成
- 判断iframe是否加载完成
- 判断flash是否加载完成
- 判断 iframe 是否加载完成
- 判断 iframe 是否加载完成
- 判断页面是否加载完成~
- 判断<script><link>等标签src 或href内容是否加载完成
- 苹果支付成功后,JAVA服务端二次验证
- va_start和va_end使用详解
- IOS编程学习:property、nonatomic, retain,weak,strong用法
- 【12c新特性】12c中如何自动启动PDB Pluggable Database
- Redis基础
- 1013
- 服务端判断苹果内容是否支付完成(二)
- Oracle存储过程基本语法介绍-存储过程
- EditText常用属性【一】:空白提示/文本域/特殊字符/数字类型/等属性设置
- 欢迎使用CSDN-markdown编辑器
- Android volley 使用OkHttp3.0
- 使用第三方授权登录以及分享文字和图片
- 页面checkbox处理
- HR筛选简历的12个要点,投简历必读!
- JavaScript笔记4--闭包