ios内购二次验证安全性问题_苹果IOS内购二次验证返回state为21002的坑
项目是三四年前的老项目,之前有IOS内购二次验证的接口,貌似很久都没用了,然而最近IOS的妹子说接口用不了,让我看看啥问题。接口流程时很简单的,就是前端IOS在购买成功之后,接收到receipt后进行了base64加密,然后传到我们服务端进行二次验证,确认用户是否购买成功,确认成功后创建自己的订单。然而就是这么简单的转发校验过程,居然一直返回state="21002",网上查了下资料说是"receipt-data域的数据有问题",于是我就和妹子说你传给我的数据不对。好吧,居然数据不对,妹子就在那仔细的检查哪出问题了,最后base64加密算法都换了,还是返回21002。最后妹子得出一个结论,就是你后台代码有问题,然后就一直质疑我你会不会哪里写错了,是不是你json封装有问题啊,你就重新写一个啊。。。就这样,json封装方式换了好几种,receipt拿到后台来进行base64转换,试了N多方法,盯着短短的几十行代码看了无数次,最后还是返回21002。妹子就一直在哪吐槽就是你这里出错了,你会不会啊!!你看网上人家是这样这样写的,你参考下啊!!!我勒个去,网上代码和我这有啥区别,能参考的方案都参考了,就这样一遍顶着妹子鄙视智商的质疑,一边默默地思考和无力的反驳着(就是你传给我的数据有问题)。然后激烈的讨论声音有点大了,这时惊动了在后边的主管,于是发个消息给我,会不会是IOS返回的receip有问题,之前也遇到过IOS传输数据时把“+”变成了空格。这时我仿佛握住了一根救命草,赶紧操作试试
String newReceipt = receipt.replace(" ", "+");
哇,终于验证成功了。。。就这么简简单单的一行代码拯救了我的智商,此时心中那个高兴啊,差点就喜极而泣了。ε=(´ο`*)))唉!这个神坑吖!
附上代码吧
public staticString buyAppVerify(String receipt, String environment) {
String url= null;if(environment.equals("0")) {
url= url_verify; //生产环境
}if (environment.equals("1")) {
url= url_sandbox; //沙盒测试
}try{
SSLContext sc= SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },newjava.security.SecureRandom());
URL console= newURL(url);
HttpsURLConnection conn=(HttpsURLConnection) console.openConnection();
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(newTrustAnyHostnameVerifier());
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-type", "application/json");
conn.setDoInput(true);
conn.setDoOutput(true);
BufferedOutputStream hurlBufOus= newBufferedOutputStream(
conn.getOutputStream());
String newReceipt= receipt.replace(" ", "+");
String str= String.format("{\"receipt-data\":\"" + newReceipt + "\"}");
hurlBufOus.write(str.getBytes());
hurlBufOus.flush();
InputStream is=conn.getInputStream();
BufferedReader reader= newBufferedReader(newInputStreamReader(is));
String line= null;
StringBuffer sb= newStringBuffer();while ((line = reader.readLine()) != null) {
sb.append(line);
}returnsb.toString();
}catch(Exception ex) {
ex.printStackTrace();
}return null;
}
ios内购二次验证安全性问题_苹果IOS内购二次验证返回state为21002的坑相关推荐
- ios 自己创建的动态frameworks 怎么发布_苹果 iOS 14 修复 2 年来的一个bug 果粉炸锅:原来不是自己手残...
(给iOS大全加星标,关注iOS动态) 转自:快科技 近日苹果推出了iOS 14.2.9正式版,修复了不少bug,其中有一个很小的问题从iOS 13时就困扰不少果粉了,大家当时都以为是自己手残导致输错 ...
- 苹果开发者_苹果 iOS 14/iPadOS 14 开发者预览版 Beta 8 发布
IT之家 9 月 10 日消息 在 iOS 14 Beta 7 推送一周后,苹果今天推送了最新的 iOS 14/iPadOS 14 开发者预览版 Beta 8 更新,内部版本号为18A5373a,更新 ...
- 苹果6访问限制密码4位_苹果ios签名:AppleID为什么开启双重认证那么重要
首先,了解"苹果 AppleID"打开双重身份认证的重要性.现在,一些长期使用"苹果"的小型合作伙伴可能知道,打开双重身份认证可以提高AppleID的安全性.苹 ...
- 苹果4s怎么越狱教程_苹果iOS 11.4-11.4.1越狱发布:附越狱教程
来自1月30日晚间消息,国外Electra团队正式发布了苹果iOS 11.4 - 11.4.1越狱(1.2.0版本),新的版本越狱工具支持适用iOS 11.0–11.4.1内的所有iPhone设备.i ...
- 苹果工具条_苹果iOS 13.4 Beta 1来袭:网友直接吐槽0创新
文|明美无限 当广大的果粉们一旦聊到苹果公司最新发布的iOS系统时,相信有持续关注明美无限的果粉们应该都明白,明美无限准会准时地给众多关注我的果粉们分享iPhone.iOS.苹果最新的那些事. 这不就 ...
- ios5.1.1旧版软件下载_苹果iOS 14.1正式版推送 关闭旧版本降级通道
上周,苹果正式发布了iOS14.1 正式版.而就在今天,苹果则停止了对iOS 14.0.1的验证.这样的举措意味着用户将无法再降级到这一版本. 苹果iOS 14.1正式版推送 关闭旧版本降级通道 iO ...
- 苹果商店上架流程_苹果IOS APP上架流程
iOS应用上线发布流程一般包含四个部分,第一步是相关证书文件的配置:第二步是Xcode的设置:第三步是iTunes填写App的相关信息:最后是审核结果以及相关邮件回复. 一.开发者发布证书.AppID ...
- 二进制文件被拒_苹果ios审核1.0二进制文件被拒或Other-Other被
苹果ios审核1.0二进制文件被拒或Other-Other被拒总结.(备注:部分内容来自其他遇到此问题的同行,再次谢过.) 1.05.09开始有开发者收到1.0二进制文件被拒或Other-Other被 ...
- ios退款 怎么定位到是哪个用户_关于ios企业签名必须知道的几点
我们都知道应用的开发完成只是第一步,最重要的是用户的使用和下载才是应用开发的最终目的.安卓作为一个相对开放的系统,下载安装应用并不难.但是对于ios系统来说,必须要先上架App Store才可以安装到 ...
最新文章
- 这两年的人工智能淘金热 真正赚钱的公司是这几家
- vba 定义类_VBA中类的介绍及应用简介
- vue html引入图片,vue引入图片的几种方式
- [转]Eclipse插件开发之基础篇(3) 插件的测试与调试
- jquery-数字渐变
- [转载]C#深拷贝的方法
- idea 导入项目时 “Import project from external model” 和 “Create project from existing sources”的区别
- Solaris系统root用户无法直接登录
- 大唐移动骨干集体出走 TD人才考验大唐
- git添加对勾图标 TortoiseGit安转配置
- 4和2大于号小于号箭头那边_小于号怎么打键盘(大于小于号怎么区分)
- mbp touchbar设置_Macbook Pro 上 有什么好的 Touchbar 使用技巧?
- python中的大数据品牌运营专业公司_大数据专业有哪些就业岗位?
- 用vue+element-ui快速写一个注册登录页面
- 如何把两个文件合并成pdf文件?
- SpringBoot统一返回处理出现cannot be cast to java.lang.String异常
- Excel按不同的字体颜色对数据区域分类汇总求和
- JAVA大作业-购物车 (持续更新)
- Kaggle: Tweet Sentiment Extraction 方法总结 Part 1/2: 常用方法总结
- TypeScript中的泛型