Receipt¶
A successful response returns a JSON object including receipts. To manipulate
them in convinient way, itunes-iap wrapped it with ObjectMapper
.
-
class
itunesiap.receipt.
ObjectMapper
(data)¶ A pretty interface for decoded receipt object.
__DOCUMENTED_FIELDS__ and __UNDOCUMENTED_FIELDS__ are managed lists of field names. They are regarded as safe values and guaranteed to be converted in python representation when needed. When a field exists in __OPAQUE_FIELDS__, its result will be redirected. The common type is
str
. When a field exists in __FIELD_ADAPTERS__, it will be converted to corresponding python data representation.To access to the converted value, use a dictionary key as an attribute name. For example, the key receipt is accessible by:
>>> mapper.receipt # return converted python object Receipt >>> # == Receipt(mapper['receipt'])
To access to the raw JSON value, use a dictionary key as an attribute name but with the prefix _. For example, the key receipt is accessible by:
>>> mapper._receipt # return converted python object Receipt >>> # == mapper['receipt']
Parameters: data (dict) – A JSON object. Returns: ObjectMapper
-
class
itunesiap.receipt.
Response
(data)¶ The root response.
- About the value of status:
-
__DOCUMENTED_FIELDS__
= frozenset({'pending_renewal_info', 'status', 'latest_receipt_info', 'latest_receipt', 'receipt'})¶
-
__FIELD_ADAPTERS__
= {'pending_renewal_info': <bound method ObjectMapper.from_list of <class 'itunesiap.receipt.PendingRenewalInfo'>>, 'receipt': <class 'itunesiap.receipt.Receipt'>, 'status': <class 'int'>}¶
-
__OPAQUE_FIELDS__
= frozenset({'latest_receipt'})¶
-
__UNDOCUMENTED_FIELDS__
= frozenset()¶
-
class
itunesiap.receipt.
Receipt
(data)¶ The actual receipt.
The receipt may hold only one purchase directly in receipt object or may hold multiple purchases in in_app key. This object encapsulate it to list of
InApp
object in in_app property.See: https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html -
__DOCUMENTED_FIELDS__
= frozenset({'cancellation_reason', 'version_external_identifier', 'is_in_billing_retry_period', 'is_in_intro_offer_period', 'cancellation_date', 'original_purchase_date', 'app_item_id', 'original_transaction_id', 'web_order_line_item_id', 'application_version', 'transaction_id', 'expires_date', 'price_consent_status', 'bundle_id', 'in_app', 'expiration_date', 'quantity', 'auto_renew_product_id', 'auto_renew_status', 'purchase_date', 'receipt_creation_date', 'product_id', 'original_application_version'})¶
-
__FIELD_ADAPTERS__
= {'auto_renew_status': <class 'int'>, 'cancellation_date': <function _rfc3339_to_datetime>, 'cancellation_reason': <class 'int'>, 'expiration_date': <function _rfc3339_to_datetime>, 'expiration_date_ms': <class 'int'>, 'expiration_intent': <class 'int'>, 'expires_date': <function _ms_to_datetime>, 'expires_date_ms': ('expires_date', <class 'int'>), 'is_in_billing_retry_period': <function _to_bool>, 'is_in_intro_offer_period': <function _to_bool>, 'original_purchase_date': <function _rfc3339_to_datetime>, 'original_purchase_date_ms': <class 'int'>, 'price_consent_status': <class 'int'>, 'purchase_date': <function _rfc3339_to_datetime>, 'purchase_date_ms': <class 'int'>, 'quantity': <class 'int'>, 'receipt_creation_date': <function _rfc3339_to_datetime>, 'receipt_creation_date_ms': <class 'int'>, 'request_date': <function _rfc3339_to_datetime>, 'request_date_ms': <class 'int'>}¶
-
__OPAQUE_FIELDS__
= frozenset({'expires_date_formatted', 'bundle_id', 'app_item_id', 'product_id', 'original_application_version', 'original_transaction_id', 'version_external_identifier', 'web_order_line_item_id', 'auto_renew_product_id', 'application_version', 'transaction_id'})¶
-
__UNDOCUMENTED_FIELDS__
= frozenset({'unique_identifier', 'request_date_ms', 'expires_date_formatted', 'request_date', 'expiration_date_ms', 'version_external_identifier', 'original_purchase_date_ms', 'purchase_date_ms', 'receipt_creation_date_ms'})¶
-
-
class
itunesiap.receipt.
InApp
(data)¶ -
__DOCUMENTED_FIELDS__
= frozenset({'expires_date', 'is_trial_period', 'cancellation_reason', 'cancellation_date', 'purchase_date', 'original_purchase_date', 'original_transaction_id', 'product_id', 'quantity', 'web_order_line_item_id', 'transaction_id'})¶
-
__FIELD_ADAPTERS__
= {'cancellation_date': <function _rfc3339_to_datetime>, 'cancellation_date_ms': <class 'int'>, 'cancellation_reason': <class 'int'>, 'expires_date': <function _rfc3339_to_datetime>, 'expires_date_ms': <class 'int'>, 'is_trial_period': <function _to_bool>, 'original_purchase_date': <function _rfc3339_to_datetime>, 'original_purchase_date_ms': <class 'int'>, 'purchase_date': <function _rfc3339_to_datetime>, 'purchase_date_ms': <class 'int'>, 'quantity': <class 'int'>}¶
-
__OPAQUE_FIELDS__
= frozenset({'unique_identifier', 'expires_date_formatted', 'original_transaction_id', 'product_id', 'web_order_line_item_id', 'transaction_id'})¶
-
__UNDOCUMENTED_FIELDS__
= frozenset({'unique_identifier', 'expires_date_formatted', 'original_purchase_date_ms', 'purchase_date_ms', 'cancellation_date_ms'})¶
-