Я просмотрел SO и Google и не нашел подобной проблемы. Я чувствую, что ответ смотрит мне прямо в лицо, и мне просто нужна еще одна пара глаз.
Я использую AFNetworking для подключения к API Stripe.com. В частности, я использую AFHTTPClient postPath для отправки данных в конечную точку, сборы. Stripe требует, чтобы запрос был закодирован как application/x-www-form-urlencoded, поэтому я не могу использовать кодировку JSON.
Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть объект Charge и объект Card. Card является свойством Charge, и я конвертирую как Charge, так и Card в NSDictionary (Card — это словарь внутри словаря Charge), а затем передаю их в качестве параметров запроса следующим образом:
NSDictionary *parameters = [ChargeRequest convertToDictionary:request];
[[StripeAPIClient sharedClient] postPath:@"charges" parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"Response: %@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error localizedDescription]);
NSLog(@"Response: %@", operation.responseString);
}];
Когда я делаю это со свойством AFHttpClient ParameterEncoding, установленным в AFFormURLParameterEncoding, Stripe возвращает эту ошибку:
"error": {
"message": "Invalid token id: {\n \"exp_month\" = 10;\n \"exp_year\" = 2016;\n number = 4242111111111111;\n}",
"type": "invalid_request_error"
}
Значения в ошибке — это, в частности, ключ/значения объекта Card после его преобразования. Вот код, который я использую для преобразования:
return [[NSDictionary alloc] initWithObjectsAndKeys:request.number, @"number", [NSNumber numberWithInt:10], @"exp_month", [NSNumber numberWithInt:2016], @"exp_year", nil];
Любые советы о том, что делать, чтобы избавиться от недопустимых токенов, помещенных в этот NSDictionary? Я фокусируюсь не на том?
Спасибо!