项目是三四年前的老项目,之前有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的坑相关推荐

  1. ios 自己创建的动态frameworks 怎么发布_苹果 iOS 14 修复 2 年来的一个bug 果粉炸锅:原来不是自己手残...

    (给iOS大全加星标,关注iOS动态) 转自:快科技 近日苹果推出了iOS 14.2.9正式版,修复了不少bug,其中有一个很小的问题从iOS 13时就困扰不少果粉了,大家当时都以为是自己手残导致输错 ...

  2. 苹果开发者_苹果 iOS 14/iPadOS 14 开发者预览版 Beta 8 发布

    IT之家 9 月 10 日消息 在 iOS 14 Beta 7 推送一周后,苹果今天推送了最新的 iOS 14/iPadOS 14 开发者预览版 Beta 8 更新,内部版本号为18A5373a,更新 ...

  3. 苹果6访问限制密码4位_苹果ios签名:AppleID为什么开启双重认证那么重要

    首先,了解"苹果 AppleID"打开双重身份认证的重要性.现在,一些长期使用"苹果"的小型合作伙伴可能知道,打开双重身份认证可以提高AppleID的安全性.苹 ...

  4. 苹果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 ...

  5. 苹果工具条_苹果iOS 13.4 Beta 1来袭:网友直接吐槽0创新

    文|明美无限 当广大的果粉们一旦聊到苹果公司最新发布的iOS系统时,相信有持续关注明美无限的果粉们应该都明白,明美无限准会准时地给众多关注我的果粉们分享iPhone.iOS.苹果最新的那些事. 这不就 ...

  6. ios5.1.1旧版软件下载_苹果iOS 14.1正式版推送 关闭旧版本降级通道

    上周,苹果正式发布了iOS14.1 正式版.而就在今天,苹果则停止了对iOS 14.0.1的验证.这样的举措意味着用户将无法再降级到这一版本. 苹果iOS 14.1正式版推送 关闭旧版本降级通道 iO ...

  7. 苹果商店上架流程_苹果IOS APP上架流程

    iOS应用上线发布流程一般包含四个部分,第一步是相关证书文件的配置:第二步是Xcode的设置:第三步是iTunes填写App的相关信息:最后是审核结果以及相关邮件回复. 一.开发者发布证书.AppID ...

  8. 二进制文件被拒_苹果ios审核1.0二进制文件被拒或Other-Other被

    苹果ios审核1.0二进制文件被拒或Other-Other被拒总结.(备注:部分内容来自其他遇到此问题的同行,再次谢过.) 1.05.09开始有开发者收到1.0二进制文件被拒或Other-Other被 ...

  9. ios退款 怎么定位到是哪个用户_关于ios企业签名必须知道的几点

    我们都知道应用的开发完成只是第一步,最重要的是用户的使用和下载才是应用开发的最终目的.安卓作为一个相对开放的系统,下载安装应用并不难.但是对于ios系统来说,必须要先上架App Store才可以安装到 ...

最新文章

  1. 这两年的人工智能淘金热 真正赚钱的公司是这几家
  2. vba 定义类_VBA中类的介绍及应用简介
  3. vue html引入图片,vue引入图片的几种方式
  4. [转]Eclipse插件开发之基础篇(3) 插件的测试与调试
  5. jquery-数字渐变
  6. [转载]C#深拷贝的方法
  7. idea 导入项目时 “Import project from external model” 和 “Create project from existing sources”的区别
  8. Solaris系统root用户无法直接登录
  9. 大唐移动骨干集体出走 TD人才考验大唐
  10. git添加对勾图标 TortoiseGit安转配置
  11. 4和2大于号小于号箭头那边_小于号怎么打键盘(大于小于号怎么区分)
  12. mbp touchbar设置_Macbook Pro 上 有什么好的 Touchbar 使用技巧?
  13. python中的大数据品牌运营专业公司_大数据专业有哪些就业岗位?
  14. 用vue+element-ui快速写一个注册登录页面
  15. 如何把两个文件合并成pdf文件?
  16. SpringBoot统一返回处理出现cannot be cast to java.lang.String异常
  17. Excel按不同的字体颜色对数据区域分类汇总求和
  18. JAVA大作业-购物车 (持续更新)
  19. Kaggle: Tweet Sentiment Extraction 方法总结 Part 1/2: 常用方法总结
  20. TypeScript中的泛型

热门文章

  1. java之简易的文件加密器的实现
  2. win7系统定时删除数据的批处理命令_Win7系统怎么批处理删除文件
  3. C语言:飞翔的小鸟游戏
  4. canon佳能ip1000/1200/1600 废弃墨水吸收器已满解决办法(有效)
  5. VN700+最新固件下载
  6. 应届生必备简历模板,分享
  7. 乔布斯斯坦福大学演讲中文译文
  8. shell脚本实战-使用shell进行数学运算
  9. 按头安利 好看又实用的中望3D 3d模型素材看这里
  10. 为什么和中国的人口结构相似,都是男多女少,印度的女性却愁嫁还要为男方提供巨额嫁妆呢?