Stripe STPCustomerDeserializer не может разобрать клиента Swift - PullRequest
0 голосов
/ 30 мая 2019

Клиентский JSON, возвращенный из Stripe API, который невозможно проанализировать с помощью STPCustomerDeserializer (jsonResponse: data), возвращает ноль при поиске поля «id». регистрация данных показывает, что идентификатор не ноль.

Объект customer находится в том же формате, что и API Stripe. Сообщение об ошибке «Ответ от Stripe не удалось проанализировать в допустимом формате JSON."

Отладка десериализатора показывает, что он не работает здесь:

// required fields
NSString *stripeId = [dict stp_stringForKey:@"id"];
if (!stripeId) {
    return nil; <<< returning here
}

в >>>

- (nullable NSString *)stp_stringForKey:(NSString *)key {
    id value = self[key];
    if (value && [value isKindOfClass:[NSString class]]) {
        return value;
    }
    return nil; << returning here
}

Я пытался передать данные клиента в разных форматах, но безрезультатно.

Я видел, что кто-то задает подобный вопрос здесь Данные не могут быть прочитаны, потому что они не в правильном формате JSON & SWIFT 3

["customer": {
    "account_balance" = 0;
    address = "<null>";
    balance = 0;
    created = ***;
    currency = "<null>";
    "default_source" = “***”;
    delinquent = 0;
    description = "<null>";
    discount = "<null>";
    email = “***”;
    id = "cus_***";
    "invoice_prefix" = ***;
    "invoice_settings" =     {
        "custom_fields" = "<null>";
        "default_payment_method" = "<null>";
        footer = "<null>";
    };
    livemode = 1;
    metadata =     {
    };
    name = "<null>";
    object = customer;
    phone = "<null>";
    "preferred_locales" =     (
    );
    shipping = "<null>";
    sources =     {
        data =         (
                        {
                "address_city" = "<null>";
                "address_country" = GB;
                "address_line1" = "<null>";
                "address_line1_check" = "<null>";
                "address_line2" = "<null>";
                "address_state" = "<null>";
                "address_zip" = "<null>";
                "address_zip_check" = "<null>";
                brand = Visa;
                country = GB;
                customer = "cus_***";
                "cvc_check" = pass;
                "dynamic_last4" = "<null>";
                "exp_month" = ***;
                "exp_year" = ***;
                fingerprint = ***;
                funding = debit;
                id = "card_***";
                last4 = ***;
                metadata =                 {
                };
                name = "<null>";
                object = card;
                "tokenization_method" = "<null>";
            }
        );
        "has_more" = 0;
        object = list;
        "total_count" = 1;
        url = "/v1/customers/cus_***/sources";
    };
    subscriptions =     {
        data =         (
        );
        "has_more" = 0;
        object = list;
        "total_count" = 0;
        url = "/v1/customers/cus_***/subscriptions";
    };
    "tax_exempt" = none;
    "tax_ids" =     {
        data =         (
        );
        "has_more" = 0;
        object = list;
        "total_count" = 0;
        url = "/v1/customers/cus_***/tax_ids";
    };
    "tax_info" = "<null>";
    "tax_info_verification" = "<null>";
}]

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Я исправил это! Мне просто нужно подписаться на JSON, используя data["customer"] как Any.

0 голосов
/ 30 мая 2019

Я решил похожую проблему, ошибка в этом случае, кажется, что ключ не найден.Попробуйте сделать переменные в опциональных параметрах вашей модели (?). Если у него нет значения, он вернет nil или связанное с ним значение.

Вы уверены, что указанный вами идентификатор - NSString, попробуйте с NSInteger илидругие типы данных.

...