admin
2024-07-25 47e3087067abd35e6337c011f96d2338c0bb1aae
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package org.yeshi.utils.ios.pay;
 
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.yeshi.utils.ios.pay.vo.IOSAPPBuyVerifyResult;
 
import javax.net.ssl.*;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Locale;
 
public class IOSPayVerifyUtil {
 
    private static class TrustAnyTrustManager implements X509TrustManager {
 
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        }
 
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        }
 
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[]{};
        }
    }
 
    private static class TrustAnyHostnameVerifier implements HostnameVerifier {
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    }
 
    private static final String url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt";
    private static final String url_verify = "https://buy.itunes.apple.com/verifyReceipt";
 
    /**
     * 应用内购验证
     *
     * @param receipt
     * @param sandbox
     * @return
     */
    public static IOSAPPBuyVerifyResult buyAppVerify(String receipt, String password, boolean sandbox) throws Exception {
        //环境判断 线上/开发环境用不同的请求链接
        String url = "";
        if (sandbox) {
            url = url_sandbox; //沙盒测试
        } else {
            url = url_verify; //线上测试
        }
        try {
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
            URL console = new URL(url);
            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
            conn.setSSLSocketFactory(sc.getSocketFactory());
            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("Proxy-Connection", "Keep-Alive");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            BufferedOutputStream hurlBufOus = new BufferedOutputStream(conn.getOutputStream());
            JSONObject data = new JSONObject();
            data.put("receipt-data", receipt);
            if (password != null)
                data.put("password", password);
 
            String str = String.format(Locale.CHINA, data.toString());//拼成固定的格式传给平台
            hurlBufOus.write(str.getBytes());
            hurlBufOus.flush();
 
            InputStream is = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            String line = null;
            StringBuffer sb = new StringBuffer();
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            System.out.println(sb.toString());
            JSONObject root = JSONObject.fromObject(sb.toString());
            if (root.optInt("status") != 0) {
                throw new Exception("苹果服务器返回的状态出错:" + sb.toString());
            }
            JSONObject receiptNew = root.optJSONObject("receipt");
            Gson gson = new Gson();
            IOSAPPBuyVerifyResult verifyResult = gson.fromJson(receiptNew.toString(), IOSAPPBuyVerifyResult.class);
 
            JSONArray latestReceiptInfo = root.optJSONArray("latest_receipt_info");
            if (latestReceiptInfo != null) {
                Type type = new TypeToken<List<IOSAPPBuyVerifyResult.OrderInfo>>() {
                }.getType();
                List<IOSAPPBuyVerifyResult.OrderInfo> orderInfoList = gson.fromJson(latestReceiptInfo.toString(), type);
                verifyResult.setLatestReceiptInfo(orderInfoList);
            }
 
            return verifyResult;
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new Exception("苹果服务器异常:" + ex.getMessage());
        }
    }
 
    public static void main(String[] args) {
        String receiptData = "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";
        try {
            IOSAPPBuyVerifyResult result = buyAppVerify(receiptData, "28ca52e358b94c4eba3de41dfa7dd023", true);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
}