系统验证服务器+ios,iOS iap receipt 服务器校验

本文介绍了如何实现iOS应用内购买(IAP)的服务器端收据验证,详细展示了使用Python进行验证的代码,并强调了验证过程中需要注意的交易ID与商品信息的对应问题。同时指出,该验证方法并不能防止中间人攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import json

import requests

SAND_BOX_VERIFY_URL = 'https://sandbox.itunes.apple.com/verifyReceipt'

VERIFY_URL = 'https://buy.itunes.apple.com/verifyReceipt'

# /**

# * 服务器二次验证代码

# * 21000 App Store不能读取你提供的JSON对象

# * 21002 receipt-data域的数据有问题

# * 21003 receipt无法通过验证

# * 21004 提供的shared secret不匹配你账号中的shared secret

# * 21005 receipt服务器当前不可用

# * 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送

# * 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务

# * 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务

# */

def verify_receipt_with_apple(receipt, is_sandbox=False):

jsonStr = json.dumps({"receipt-data": receipt})

headers = {'Content-Type': 'application/json'}

url = VERIFY_URL

if is_sandbox:

url = SAND_BOX_VERIFY_URL

rep = requests.post(url=url, data=jsonStr, headers=headers)

# print(rep.text)

return rep.text

def verify_receipt_with_apple_json(receipt, is_sandbox=False):

resp = verify_receipt_with_apple(receipt, is_sandbox)

try:

json_data = json.loads(resp)

except:

return None

return json_data

if __name__ == "__main__":

receipt = "MIITrQYJKoZIhvcNAQcCoIITnjCCE5oCAQExCzAJBgUrDgMCGg"

js = verify_receipt_with_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值