iOS内购买防作弊说明

2020-01-16  本文已影响0人  1150b290110c

iOS客户端完成内购买后,会得到一个收据(receipt)。需要服务器用这个收据发送给苹果进行验证,防止内购买作弊。

服务端向苹果服务器发送post请求

苹果测试环境 https://sandbox.itunes.apple.com/verifyReceipt,

苹果生产环境 https://buy.itunes.apple.com/verifyReceipt

开发和苹果审核时要使用测试环境,上架苹果商店后要使用生产环境。服务端可以配置固定账号用于开发和测试,用苹果测试环境验证,其它账号用生产环境验证。

以下适用于非自动订阅的商品。

请求的http body是json格式,receipt-data字段对应的就是收据数据,例如

{

"receipt-data":"***"

}

苹果服务器返回的http body里的status字段对应的是收据状态,若为0,则收据为真。

在receipt字段里,bundle_id 是APP的固定ID,可用于检查收据是否属于我们的APP。

In_app数组包含了用户每次的交易,

product_id 是商品id,要与购买的商品ID相符才有效。

transaction_id标志了每次的交易。服务端通过新增的transaction_id,得知此次的购买,添加用户时长。

例如

{

    "receipt": {

        "receipt_type": "ProductionSandbox",

        "adam_id": 0,

        "app_item_id": 0,

        "bundle_id": "***",

        "application_version": "6",

        "download_id": 0,

        "version_external_identifier": 0,

        "receipt_creation_date": "2019-11-20 06:33:11 Etc/GMT",

        "receipt_creation_date_ms": "1574231591000",

        "receipt_creation_date_pst": "2019-11-19 22:33:11 America/Los_Angeles",

        "request_date": "2019-11-20 07:08:44 Etc/GMT",

        "request_date_ms": "1574233724373",

        "request_date_pst": "2019-11-19 23:08:44 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": "***",

                "transaction_id": "1000000592835282",

                "original_transaction_id": "1000000592835282",

                "purchase_date": "2019-11-15 08:28:40 Etc/GMT",

                "purchase_date_ms": "1573806520000",

                "purchase_date_pst": "2019-11-15 00:28:40 America/Los_Angeles",

                "original_purchase_date": "2019-11-15 08:28:40 Etc/GMT",

                "original_purchase_date_ms": "1573806520000",

                "original_purchase_date_pst": "2019-11-15 00:28:40 America/Los_Angeles",

                "is_trial_period": "false"

            }

        ]

    },

    "status": 0,

    "environment": "Sandbox"

}

补充说明:在向苹果验证收据,返回的表示购买时间的字段中

purchase_date 其时间格式类似ISO 8601

purchase_date_ms  是Unix时间戳格式,单位为毫秒

purchase_date_pst  是太平洋时区

上一篇下一篇

猜你喜欢

热点阅读