针对苹果内购,看了 大量的 其他blog和阅读官方文档才发现,其实 苹果内购服务器做的工作很少,

此文档   写于2018年10月,只针对此时苹果返回的数据结构  内容解析。

基本上所有的 操作都可以再前端完成操作,包括对支付凭证的验证,但是如果在客户端验证凭证可能存在被篡改的危险,

服务器去重验证和加款,是建立在 用户已经在前端支付成功,然后由ios会得到一个字节流,然后 base64后转给 后台。

后台通过这个字符串 去请求苹果的服务器,然后得到一个json字符串去给用户加款,其中注意事项为

//沙箱static final String testUrl = "https://sandbox.itunes.apple.com/verifyReceipt";
//正式 static final String product =  "https://buy.itunes.apple.com/verifyReceipt";

请求苹果地址 返回的 内容为

conten-type = application/json

请求的苹果的内容为String param = "{\"receipt-data\":\""+客户端返回的base64+"\"}";

{
    "receipt": {
        "receipt_type": "ProductionSandbox",
        "adam_id": 0,
        "app_item_id": 0,
        "bundle_id": "com.rtjk.xshl",//当前的产品的包名,一定要验证返回的包名和此包名要一致
        "application_version": "2018101001",
        "download_id": 0,
        "version_external_identifier": 0,
        "receipt_creation_date": "2018-10-19 10:50:48 Etc/GMT",
        "receipt_creation_date_ms": "1539946248000",
        "receipt_creation_date_pst": "2018-10-19 03:50:48 America/Los_Angeles",
        "request_date": "2018-10-31 01:58:21 Etc/GMT",
        "request_date_ms": "1540951101844",
        "request_date_pst": "2018-10-30 18:58:21 America/Los_Angeles",
        "original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",
        "original_purchase_date_ms": "1375340400000",
        "original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles",
        "original_application_version": "1.0",
        "in_app": [
            {
                "quantity": "1",
                "product_id": "6hongliao",//对应产品id,自己做一个金额的映射就行,对应到具体的金额,建议命名要规则
                "transaction_id": "1000000460004095",//一定要进行去重验证,一个订单号只能加一次款
                "original_transaction_id": "1000000460004095",
                "purchase_date": "2018-10-19 10:50:48 Etc/GMT",
                "purchase_date_ms": "1539946248000",
                "purchase_date_pst": "2018-10-19 03:50:48 America/Los_Angeles",
                "original_purchase_date": "2018-10-19 10:50:48 Etc/GMT",
                "original_purchase_date_ms": "1539946248000",
                "original_purchase_date_pst": "2018-10-19 03:50:48 America/Los_Angeles",
                "is_trial_period": "false"
            }
        ]
    },
    "status": 0, //表示当前请求返回正常
    "environment": "Sandbox"
}

为什么要做 product_id,bundle_id,因为 客户端传递过来的 凭证,是不可信的,有可能是别人篡改后的结果。

比如,他们有个自己的内购,我们把这个凭证发到苹果是可以拿到返回结果的,但是 product_id,bundle_id没办法一样。

苹果内购 服务器端验证相关推荐

  1. 苹果内购服务器验证之receipt返回多组in_app思考

    最近有部分用户反映,苹果内购充值失败,经过测试总结有几个关键点出现问题 1.app购买成功苹果没有返回票据,属于票据遗漏(取决于苹果服务器的响应状况),只能客户端进行监听刷新等处理 2.app连续购买 ...

  2. php苹果内购验证,苹果内购凭据验证工具(苹果支付,苹果内购,凭据解析)

    use sn01615\iap\ios\Verify; include "../vendor/autoload.php"; $cc = new Verify(); $receipt ...

  3. 苹果内购-后端注意事项

    老大要收保护费,我等小弟那也没办法呀...是的,我说的就是苹果内购! 1.先上php验证函数: /*** 验证AppStore内付* @param string $receipt_data 付款后凭证 ...

  4. postman关闭ssl验证_【第5期】springboot:苹果内购服务端验证

    ​苹果内购: 只要你在苹果系统购买APP中虚拟物品(虚拟货币,VIP充值等),必须通过内购方式进行支付,苹果和商家进行三七开 验证模式有两种: Validating Receipts With the ...

  5. java(jfinal) 接入ios苹果内购(连续包月订阅),服务端将二次验证。

    大致流程: 1.ios端进行支付,然后收到苹果的一串数据(也叫收据),然后ios端将其转码为BASE64编码的字符串. 2.ios端请求服务端接口,将数据传给服务端,服务端拿到数据后,通过一系列处理后 ...

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

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

  7. iOS开发 IAP苹果内购

    为什么80%的码农都做不了架构师?>>>    1.概念介绍 <1>苹果内购: App内购买是指在苹果的 App Store 中购买应用程序的方式. 在玩一些游戏类应用软 ...

  8. uniapp苹果内购总结

    uniapp苹果内购总结 1.创建App内购项目,设置好税务和银行卡等配置信息 2.HbuilderX 勾选Apple应用内支付 对于app内有虚拟物品交易的,一律需要接上苹果支付, uniapp支付 ...

  9. iOS 内购服务器验证失败返回21004

    21004 The shared secret you provided does not match the shared secret on file for your account. 我们的产 ...

最新文章

  1. WSL 或者ubantu安装 apt-get install npm 失败解决方法
  2. 《易学Python》——1.8 总结
  3. DM365 dvsdk_2_10_01_18开发环境搭建
  4. [置顶]树莓派Android Things物联网开发:入门及资料汇总
  5. 设计桑基图_教你用pyecharts制作交互式桑基图,赶快学起来吧!
  6. Hive的安装和配置
  7. IIS-ShortName-Scanner使用
  8. python 操作系统学习_操作系统学习
  9. 语言在线组卷系统_如何使用在线考试系统创建题库?
  10. es6语法在ios低版本的支持性
  11. 第14章5节: HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 2
  12. tensorflow keras 构建神经网络、Alex net、VGG、CNN网络
  13. linux命令查看系统日期,Linux系统查看当前时间的命令
  14. 简单的图形识别python
  15. Office excel2010如何用两个文件分别打开两个窗口
  16. 技术解密之百度搜索中台低代码的探索与实践
  17. Xtool X100 PAD2 Error Code 5 Data Not Exist Solution
  18. java实现图片上传后裁剪,把白色背景变成透明图(电子印章)
  19. 使用基于ggplot2的包ggalluvial绘制桑基图(冲积图)
  20. 可控硅失效现象_晶闸管常见损坏原因分析(全)

热门文章

  1. MATLAB函数:min、randn、norm、logspace函数
  2. 如何将大数据变成企业的洞察力和行动力?
  3. 使用U盘安装CenTOS6
  4. 第13集 英语的完成时态
  5. 网络诈骗公司普通员工如何判
  6. CPU设计实战 第5章 实践任务
  7. java时间设置_JAVA中的时间操作
  8. SAP MM MM17物料主数据批量扩充视图
  9. 怎么样把中文版的Windows7改成英文版的Windows7
  10. 高速SerDes PCB 设计