JAVA——苹果IAP内购JAVA服务器验证

最近公司需要做这样一个功能,网上查了这方面的资料不是很多就记录一下, 对苹果iap内购稍微有些了解的JAVA开发人员, 认真看, 定能完美解决苹果内购问题.

苹果IAP内购支付实际上是"将客户端支付后的一些信息传给后台, 后台拿着这些信息在传给苹果支付平台, 来验证客户端支付是否有效"的一个过程, 中间的难点有三个.

一是沙盒测试数据和线上测试数据的问题. 刚开始接入苹果内购时,网上的各种测试一大堆, 几乎你就找不到两篇相同的数据, 这导致我刚开始做的时候踩了很多坑, 对于这种情况建议各位java开发者以实际测试数据为准, 因为我认为, 随着时间往后, 苹果平台返回的测试数据还会变化, 请以真实得到的数据为准. 下面贴一下我当时项目的测试数据。
这个是沙箱测试数据(经过检验,正式的测试数据与沙箱测试数据结构是一样,所以采用同一套代码即可)

{
   
   
    "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": "2018-01-05 10:06:11 Etc/GMT",
                "purchase_date_ms": "1515146771000",
                "purchase_date_pst": "2018-01-05 02:06:11 America/Los_Angeles",
                "original_purchase_date": "2018-01-05 10:06:11 Etc/GMT",
                "original_purchase_date_ms": "1515146771000",
                "original_purchase_date_pst": "2018-01-05 02:06:11 America/Los_Angeles",
                "is_trial_period": "false"
            }
        ]
    }
}

得到前端支付数据,发给苹果平台,进行二次验证

	/**
  * @throws Exception  
  * 苹果内购支付
  * @Title: doIosRequest  
  * @Description:Ios客户端内购支付
  * @param  TransactionID :交易单号  需要客户端传过来的参数1
  * @param  Payload:需要客户端传过来的参数2
  * @throws 
   */  
  public Map<String, Object>  doIosRequest(String TransactionID,String Payload, int userId) throws Exception {
   
   
  	Map<String, Object> map = new HashMap<String, Object>();
  	Map<String, Object> mapChan
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值