1.前言
本博客是经历过多个项目检验的, 绝对真实, 适应于对苹果iap内购稍微有些了解的JAVA开发人员, 认真看, 定能完美解决苹果内购问题.
苹果IAP内购支付实际上是"将客户端支付后的一些信息传给后台, 后台拿着这些信息在传给苹果支付平台, 来验证客户端支付是否有效"的一个过程, 中间的难点有三个.
一是沙盒测试数据和线上测试数据的问题. 刚开始接入苹果内购时,网上的各种测试一大堆, 几乎你就找不到两篇相同的数据, 这导致我刚开始做的时候踩了很多坑, 对于这种情况建议各位java开发者以实际测试数据为准, 因为我认为, 随着时间往后, 苹果平台返回的测试数据还会变化, 请以真实得到的数据为准. 下面贴一下我当时项目的测试数据(这个项目是2017年11月左右的数据)
这个是沙箱测试数据(经过检验,正式的测试数据与沙箱测试数据结构是一样,所以采用同一套代码即可)
{
"status": 0,
"environment": "Sandbox",
"receipt": {
"receipt_type": "ProductionSandbox",
"adam_id": 0,
"app_item_id": 0,
"bundle_id": "com.jiuying.twelveAnimal",
"application_version": "0",
"download_id": 0,
"version_external_identifier": 0,
"receipt_creation_date": "2018-01-05 10:06:12 Etc/GMT",
"receipt_creation_date_ms": "1515146772000",
"receipt_creation_date_pst": "2018-01-05 02:06:12 America/Los_Angeles",
"request_date": "2018-01-05 10:06:14 Etc/GMT",
"request_date_ms": "1515146774645",
"request_date_pst": "2018-01-05 02:06:14 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": "com.jiuying.twelveAnimal.6", //这个6是关键, 6就是苹果客户端支付的金额, 我们取到这个值,进行我们的业务逻辑即可
"transaction_id": "1000000364151484",
"original_transaction_id": "1000000364151484",
"purchase_date": &