苹果内购 java验证类

package com.utils.ios;
import lombok.extern.slf4j.Slf4j;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;/*** 苹果IAP内购验证工具类* Created by wangqichang on 2019/2/26.* @author wt*/
@Slf4j
public class IosVerifyUtils {private static class TrustAnyTrustManager implements X509TrustManager {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[] {};}}private static class TrustAnyHostnameVerifier implements HostnameVerifier {@Overridepublic 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";/*** 自动续费*/private static final String IOS_SHARED_SECRET_PASSWORD = "66997811fb1848f9abd4bb21fbc28ed0";/*** 苹果服务器验证** @param receipt*            账单* @url 要验证的地址* @param password 支付密码* @return null 或返回结果 沙盒 https://sandbox.itunes.apple.com/verifyReceipt**/public static String buyAppVerify(String receipt,int type,String password) {//环境判断 线上/开发环境用不同的请求链接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("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 + "\",\"password\":\"" + password + "\"}");hurlBufOus.write(str.getBytes());
//            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) {log.error("苹果服务器异常");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;}}

苹果IAP内购验证工具类相关推荐

  1. JAVA项目之苹果IAP内购JAVA服务器验证流程详解

    1.前言 本博客是经历过多个项目检验的, 绝对真实, 适应于对苹果iap内购稍微有些了解的JAVA开发人员,  认真看,  定能完美解决苹果内购问题. 苹果IAP内购支付实际上是"将客户端支 ...

  2. 产品提交苹果审核爬坑总结之:苹果IAP内购规则

    iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...

  3. 【爬坑总结】产品提交苹果审核之:苹果IAP内购规则

    做产品的童鞋都知道,应用想要通过appstore审核,并且顺利上线到市场,是需要规避很多苹果不允许的事情.比如图片应用在提交的时候,不允许出现色情.政治等相关的不符合规定的图片,所以需要在提交的时候删 ...

  4. ios沙箱模式开启_【iOS】苹果IAP(内购)中沙盒账号使用注意事项

    目标 沙盒账号的正确使用方式 沙盒账号使用的注意事项 1.沙盒账号是什么 iOS应用里面用到了苹果应用内付费(IAP)功能,在项目上线前一定要进行功能测试.测试肯定是需要的,何况这个跟money有关. ...

  5. 苹果内购验证(熟称苹果支付回调)java版

    简介: 苹果支付是直接由ios客户端调起苹果支付并支付完成后,java后台提供一个支付回调接口供ios客户端进行同步回调,只需要在该接口进行进行验证苹果支付是否支付成功,跟微信支付和支付宝支付不一样, ...

  6. 虚拟内购服务器,苹果APP内购客户付款成功,没收到相应虚拟产品的解决办法

    一.引导用户走申请苹果的退款 1.告知用户新版本可以使用支付宝.微信支付,更划算 2.苹果可申请90天以内的退款,一般情况申请后48小时内就有反馈. 二.用户坚持补偿虚拟产品 1.如果是今天的交易,让 ...

  7. 服务器接收 App Store 苹果商店内购项目IAP的退款通知

    苹果商店内购IAP相信大家一定不陌生,苹果从中抽成30%更是让大多数公司都很反对.有时候碰上恶意退款的人更是没有办法,只能认栽.好消息是苹果终于上线了退款通知! "AppStore服务器通知 ...

  8. IOS内购验证 (Java版)

    此处给各位贴出apple官方文档 App 内购买项目配置流程 apple 收据文档 apple 收据responseBody字段释义 IOS内购逻辑图 IOS内购验证相关代码 package xxxx ...

  9. 2018 IAP内购--自动订阅类型与非自动订阅类型

    自动订阅类型特点: 1.用户订阅一次,后续自动订阅 2.可以再iTunes设置订阅时长 3.苹果会对恢复购买进行处理,直接掉restore对应方法就可以 非自动订阅特点: 1.用户订阅一次 2.订阅时 ...

最新文章

  1. 在 CentOS 8 中删除旧的 Linux 内核
  2. 安卓13来了!首个开发者版公布,三方图标随壁纸变色,电量管理系统也安排上了...
  3. Binary Tree Level Order Traversal II 解题思路
  4. HTML解析利器HtmlAgilityPack
  5. 前端---JavaScript基础4
  6. 搜索文献_【大牛经验分享】如何高效快捷搜索文献?
  7. 使用log4Net 输出日志到mongodb
  8. WASM 成为 HTML、CSS 与 JS 之后的第 4 门 Web 语言
  9. php redis主从自动切换,Redis 集群的主从切换
  10. 汉字与区位码互转(转)
  11. POJ 1125 Stockbroker Grapevine
  12. C# 中使用反射的优缺点
  13. Flutter入门学习--(18)添加本地资源图片
  14. OpenCV 单目摄像头(python版)
  15. 微信小程序 input隐藏和不可操作的设置
  16. ISTP会议论文检索
  17. 2020-8-28平衡二叉树
  18. mac os 录屏快捷键_5款好用的Mac录屏软件推荐
  19. 小记!华为 8.0系统切换APP内语言(中英文)无效(其他版本手机均有效)。
  20. 惠普暗影精灵7和联想小新pro16哪个好

热门文章

  1. 【Banana PI Leaf S3开发板试用体验】MicroPython环境搭建
  2. 尽管HTTP/3已经来了,HTTP/2也得了解啊
  3. ACRush 楼天城 回忆录
  4. 零基础学C语言(第一天)
  5. 根据年份判断属相php,自动算出生肖属相的c程序编写程序,输入一个年份,判断该年属相.(提示switch-case......
  6. pytorch拼接与保存图片
  7. 快速准确读取发票信息——发票扫描识别系统
  8. 常用流程图符号和基本流程图
  9. scratch连接wedo2.0超详细教程(附资源)
  10. 同步110序列检测电路