您的位置:首页 > 其它

服务端判断苹果内容是否支付完成(二)

2016-03-31 09:30 369 查看
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为有效的,否则就是无效的。

[java] view
plain copy

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包。
这也是一种方式,不再进行多余的说明了。所谓条条道路通“苹果”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: