当前位置: 代码迷 >> 综合 >> Verify an App Store Transaction Receipt 【苹果服务端 验证一个应用程序商店交易收据有效性】
  详细解决方案

Verify an App Store Transaction Receipt 【苹果服务端 验证一个应用程序商店交易收据有效性】

热度:3   发布时间:2024-01-09 18:34:28.0

 

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 StoreURL url = new URL("https://buy.itunes.apple.com/verifyReceipt");//make connection, use post modeHttpsURLConnection 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 classpathBase64 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.JSONObjectMap map = new HashMap();map.put("receipt-data", encodedReceipt);JSONObject jsonObject = new JSONObject(map);//Write the JSON query object to the connection output streamPrintStream ps = new PrintStream(connection.getOutputStream());ps.print(jsonObject.toString());ps.close();//Call the serviceBufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));//Extract responseString str;StringBuffer sb = new StringBuffer();while ((str = br.readLine()) != null) {sb.append(str);sb.append("/n");}br.close();String response = sb.toString();//Deserialize responseJSONObject 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包。

这也是一种方式,不再进行多余的说明了。所谓条条道路通“苹果”。

 

 

  相关解决方案