在Python中本地验证iTunes IAP收据。
我刚接触OpenSSL,想在Python中本地验证iTunes的应用内购买收据。
收据验证编程指南(https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateLocally.html)上说:
最外层的部分(图中标记为收据)是一个PKCS #7容器,这个定义来自RFC 2315。它的内容是用ASN.1(抽象语法标记一)编码的,这个标准由ITU-T X.690定义。这个内容包含了一组收据属性。每个收据属性都有类型、版本和数值。
import OpenSSL
f = open('sample_IAP_receipt_base64.txt', 'r').read()
type = OpenSSL.crypto.FILETYPE_ASN1
data = OpenSSL.crypto.load_pkcs7_data(type, f)
print f
这个测试似乎产生了一个错误:
data = OpenSSL.crypto.load_pkcs7_data(type, f)
OpenSSL.crypto.Error: [('asn1 encoding routines', 'ASN1_CHECK_TLEN', 'wrong tag'), ('asn1 encoding routines', 'ASN1_ITEM_EX_D2I', 'nested asn1 error')]
有没有什么想法可以让它正常工作?
2 个回答
0
唯一能在本地实现这个功能的就是这个库:
1
我建议你使用一个现成的Python库,itunes-iap就是一个不错的选择: