关于apple pay防止伪造的付款成功的方案

当你付款成功能后,会收到一个从apple来的receipt.,内容大概6000多个字符的字符串:

     MXABCEFEFDSFSDF...

通过这个字符串,可以去apple验证这个串是否是合法的。拿这个串去验证时,会返回一个json。格式如下:

{
    "status": 0,
    "environment": "Production",
    "receipt": {
        "receipt_type": "Production",

        省略一部分

        "in_app": [
            {
                "quantity": "1",
                "product_id": "product1",
                "transaction_id": "123456790123456",

                省略一部分           

            },

            {
                "quantity": "1",
                "product_id": "product2",
                "transaction_id": "123456790654321",

                省略一部分           

            } ,

            ....可能是多个product

      ]
    }
}

这里的transaction_id,应该是为一的。在网上找了一些资料,没看到哪里说这个肯定是唯一的,但很人说可能是唯一的,估计至少对于每个APP来说,可能是唯一的。

方案:

每次交易结果来后,把Receipt和transaction_id都保存一份(一笔处理里有多个transaction_id的话,都要保存一下)

然后进行下面的验证:

1,先去apple验证recipte的正确性
2,然后查看receipt,在我们数据库里有没有重复的
3,再看看一次交易里的所有transaction_id,在我们数据库里有没有重复的


下面是一些资料官方资料,可以看看。

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Introduction.html#//apple_ref/doc/uid/TP40008267-CH104-SW1

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW12

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html

下面是一个有点年头的防黑客的资料:

http://miha.hribar.org/2012/09/validate-in-app-purchase-receipts/

下面是一个很好的iap入门资料:

http://blog.csdn.net/xyxjn/article/details/16887151

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值