API/Autodoc/Files/RuStorePaymentResult.gd.md


Source code

# @brief Родительский класс результатов покупки.
class_name RuStorePaymentResult extends RefCounted

# @brief Результат успешного завершения покупки цифрового товара.
class Success extends RuStorePaymentResult:
    #   Максимальная длина 150 символов.
    var orderId = null
    
    # @brief Идентификатор покупки.
    var purchaseId: String = ""
    
    # @brief Идентификатор продукта, который был присвоен продукту в консоли RuStore.
    var productId: String = ""
    
    # @brief Идентификатор счёта.
    var invoiceId: String = ""
    
    # @brief Токен для валидации покупки на сервере.
    var subscriptionToken = null
    
    #   Значения могут быть true или false, где true обозначает тестовый платёж, а false – реальный.
    var sandbox: bool = false
    
    func _init(json: String = ""):
        if json != "":
            var obj = JSON.parse_string(json)
            if obj.has("orderId"):
                orderId = obj["orderId"]
            
            purchaseId = obj["purchaseId"]
            productId = obj["productId"]
            invoiceId = obj["invoiceId"]
            sandbox = obj["sandbox"]
            
            if obj.has("subscriptionToken"):
                subscriptionToken = obj["subscriptionToken"]

#   и результат оплаты неизвестен.
class Cancelled extends RuStorePaymentResult:
    # @brief Идентификатор покупки.
    var purchaseId: String
    
    #   где true обозначает тестовый платёж, а false – реальный.
    var sandbox: bool = false
    
    func _init(json: String = ""):
        if json != "":
            var obj = JSON.parse_string(json)
            purchaseId = obj["purchaseId"]
            sandbox = obj["sandbox"]

#   невозможно установить статус покупки.
class Failure extends RuStorePaymentResult:
    # @brief Идентификатор покупки.
    var purchaseId = null
    
    # @brief Идентификатор счёта.
    var invoiceId = null
    
    #   Максимальная длина 150 символов.
    var orderId = null
    
    # @brief Количество продукта (необязательный параметр).
    var quantity = null
    
    # @brief Идентификатор продукта, который был присвоен продукту в консоли RuStore.
    var productId = null
    
    # @brief Код ошибки.
    var errorCode = null
    
    #   где true обозначает тестовый платёж, а false – реальный.
    var sandbox: bool = false
    
    func _init(json: String = ""):
        if json != "":
            var obj = JSON.parse_string(json)
            if obj.has("purchaseId"): purchaseId = obj["purchaseId"]
            if obj.has("invoiceId"): invoiceId = obj["invoiceId"]
            if obj.has("orderId"): orderId = obj["orderId"]
            if obj.has("quantity"): quantity = int(obj["quantity"])
            if obj.has("productId"): productId = obj["productId"]
            if obj.has("errorCode"): errorCode = int(obj["errorCode"])
            sandbox = obj["sandbox"]

#   Может возникнуть, в случае некорректного обратного deeplink.
class InvalidPaymentState extends RuStorePaymentResult:
    pass

static func parse(json: String):
    var obj = JSON.parse_string(json)
    var type = obj["type"]
    var data = str(obj["data"])

    if type == "Success":
        return Success.new(data)
    elif type == "Cancelled":
        return Cancelled.new(data)
    elif type == "Failure":
        return Failure.new(data)
    elif type == "InvalidPaymentState":
        return InvalidPaymentState.new()
    else:
        return RuStorePaymentResult.new()