package com.xinquan.order.utils;
|
|
import javax.net.ssl.*;
|
import java.io.BufferedOutputStream;
|
import java.io.BufferedReader;
|
import java.io.InputStream;
|
import java.io.InputStreamReader;
|
import java.net.URL;
|
import java.security.cert.CertificateException;
|
import java.security.cert.X509Certificate;
|
import java.util.Locale;
|
|
/**
|
* @desc: 苹果IAP内购验证工具类
|
* @author: hwm
|
* @date: 2019/9/3 17:11
|
*/
|
public class IosVerifyUtil {
|
|
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";
|
|
public static void main(String[] args) {
|
System.err.println(buyAppVerify("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",0));
|
|
}
|
/**
|
* 苹果服务器验证
|
*
|
* @param receipt 账单
|
* @return null 或返回结果 沙盒 https://sandbox.itunes.apple.com/verifyReceipt
|
* @url 要验证的地址
|
*/
|
public static String buyAppVerify(String receipt, int type) {
|
//环境判断 线上/开发环境用不同的请求链接
|
String url = "";
|
if (type == 0) {
|
url = url_sandbox; //沙盒测试
|
} else {
|
url = url_verify; //线上测试
|
}
|
//String url = EnvUtils.isOnline() ?url_verify : url_sandbox;
|
|
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", "text/json");
|
conn.setRequestProperty("Content-Type", "application/json");
|
conn.setRequestProperty("Proxy-Connection", "Keep-Alive");
|
conn.setDoInput(true);
|
conn.setDoOutput(true);
|
BufferedOutputStream hurlBufOus = new BufferedOutputStream(conn.getOutputStream());
|
|
String str = String.format(Locale.CHINA, "{\"receipt-data\":\"" + receipt + "\"}");//拼成固定的格式传给平台
|
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);
|
}
|
|
return sb.toString();
|
} catch (Exception ex) {
|
System.out.println("苹果服务器异常");
|
ex.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 用BASE64加密
|
*
|
* @param str
|
* @return
|
*/
|
public static String getBASE64(String str) {
|
byte[] b = str.getBytes();
|
String s = null;
|
if (b != null) {
|
s = new sun.misc.BASE64Encoder().encode(b);
|
}
|
return s;
|
}
|
}
|