苹果内购 服务器端验证
针对苹果内购,看了 大量的 其他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没办法一样。
苹果内购 服务器端验证相关推荐
- 苹果内购服务器验证之receipt返回多组in_app思考
最近有部分用户反映,苹果内购充值失败,经过测试总结有几个关键点出现问题 1.app购买成功苹果没有返回票据,属于票据遗漏(取决于苹果服务器的响应状况),只能客户端进行监听刷新等处理 2.app连续购买 ...
- php苹果内购验证,苹果内购凭据验证工具(苹果支付,苹果内购,凭据解析)
use sn01615\iap\ios\Verify; include "../vendor/autoload.php"; $cc = new Verify(); $receipt ...
- 苹果内购-后端注意事项
老大要收保护费,我等小弟那也没办法呀...是的,我说的就是苹果内购! 1.先上php验证函数: /*** 验证AppStore内付* @param string $receipt_data 付款后凭证 ...
- postman关闭ssl验证_【第5期】springboot:苹果内购服务端验证
苹果内购: 只要你在苹果系统购买APP中虚拟物品(虚拟货币,VIP充值等),必须通过内购方式进行支付,苹果和商家进行三七开 验证模式有两种: Validating Receipts With the ...
- java(jfinal) 接入ios苹果内购(连续包月订阅),服务端将二次验证。
大致流程: 1.ios端进行支付,然后收到苹果的一串数据(也叫收据),然后ios端将其转码为BASE64编码的字符串. 2.ios端请求服务端接口,将数据传给服务端,服务端拿到数据后,通过一系列处理后 ...
- 苹果内购验证(熟称苹果支付回调)java版
简介: 苹果支付是直接由ios客户端调起苹果支付并支付完成后,java后台提供一个支付回调接口供ios客户端进行同步回调,只需要在该接口进行进行验证苹果支付是否支付成功,跟微信支付和支付宝支付不一样, ...
- iOS开发 IAP苹果内购
为什么80%的码农都做不了架构师?>>> 1.概念介绍 <1>苹果内购: App内购买是指在苹果的 App Store 中购买应用程序的方式. 在玩一些游戏类应用软 ...
- uniapp苹果内购总结
uniapp苹果内购总结 1.创建App内购项目,设置好税务和银行卡等配置信息 2.HbuilderX 勾选Apple应用内支付 对于app内有虚拟物品交易的,一律需要接上苹果支付, uniapp支付 ...
- iOS 内购服务器验证失败返回21004
21004 The shared secret you provided does not match the shared secret on file for your account. 我们的产 ...
最新文章
- WSL 或者ubantu安装 apt-get install npm 失败解决方法
- 《易学Python》——1.8 总结
- DM365 dvsdk_2_10_01_18开发环境搭建
- [置顶]树莓派Android Things物联网开发:入门及资料汇总
- 设计桑基图_教你用pyecharts制作交互式桑基图,赶快学起来吧!
- Hive的安装和配置
- IIS-ShortName-Scanner使用
- python 操作系统学习_操作系统学习
- 语言在线组卷系统_如何使用在线考试系统创建题库?
- es6语法在ios低版本的支持性
- 第14章5节: HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 2
- tensorflow keras 构建神经网络、Alex net、VGG、CNN网络
- linux命令查看系统日期,Linux系统查看当前时间的命令
- 简单的图形识别python
- Office excel2010如何用两个文件分别打开两个窗口
- 技术解密之百度搜索中台低代码的探索与实践
- Xtool X100 PAD2 Error Code 5 Data Not Exist Solution
- java实现图片上传后裁剪,把白色背景变成透明图(电子印章)
- 使用基于ggplot2的包ggalluvial绘制桑基图(冲积图)
- 可控硅失效现象_晶闸管常见损坏原因分析(全)