Клиентский 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>";
}]