Я действительно не знаю, что происходит с этой ошибкой (я имею в виду, связано ли это с Flutter или Dart или пакетом, который я использовал, или API, который я использовал). В двух словах, он всегда возвращает мне код ошибки 408 - неверный тип данных, отправленный из моего приложения-флаттера, в то время как я ПОЛНОСТЬЮ мог сделать это в Postman и попробовать его с PHP.
Я просто хочу вызвать обычный запрос POST к API моего платежного шлюза (я использую Midtrans).
Вот мой результат:
От Почтальона
Из моего приложения во Флаттере в VS Code
Что я делаю не так? Я совершенно не имею понятия об этом. Ниже я приведу подробности для тех, кто хочет попробовать простой вызов этого API, чтобы вы могли воспроизвести его.
Конечная точка
https://api.sandbox.midtrans.com/v2/charge
Кузов
"payment_type": "bank_transfer",
"bank_transfer": {
"bank": "permata",
"va_number": "1234567890"
},
"transaction_details": {
"order_id": "order-101b-{{2020-11-0222rrd324dzz}}",
"gross_amount": 44000
},
"customer_details": {
"email": "richie.permana@gmail.com",
"first_name": "Richie",
"last_name": "Permana",
"phone": "+6281 1234 1234"
},
"item_details": [
{
"id": "item01",
"price": 21000,
"quantity": 1,
"name": "Schema Programmer"
},
{
"id": "item02",
"price": 23000,
"quantity": 1,
"name": "Ayam Xoxoxo"
}
]
}
Это заголовок
{
'content-type': 'application/json',
'accept': 'application/json',
'authorization':
'Basic U0ItTWlkLXNlcnZlci1kNnJNbGp5ZDBKSDgyOEhBT28tSWkxM0E=',
'cache-control': 'no-cache'
}
Фрагмент My Dart Function
Future _makePayment() async {
String url = "https://api.sandbox.midtrans.com/v2/charge";
final Map<String, String> header = {
'content-type': 'application/json',
'accept': 'application/json',
'authorization':
'Basic U0ItTWlkLXNlcnZlci1kNnJNbGp5ZDBKSDgyOEhBT28tSWkxM0E=',
'cache-control': 'no-cache'
};
var json = jsonEncode({
"payment_type": "bank_transfer",
"bank_transfer": {"bank": "permata", "va_number": "1234567890"},
"transaction_details": {
"order_id": "order-101b-{{2020-11-0222rrddzz557}}",
"gross_amount": 44000
},
"customer_details": {
"email": "richie@example.com",
"first_name": "Richie",
"last_name": "Permana",
"phone": "+6281 1234 1234"
},
"item_details": [
{
"id": "item01",
"price": 21000,
"quantity": 1,
"name": "Schema Programmer"
},
{"id": "item02", "price": 23000, "quantity": 1, "name": "Ayam Xoxoxo"}
]
});
Response response = await post(
url,
headers: header,
body: json,
);
var res = jsonDecode(response.body);
print(
"payloadddded =>> ${json.runtimeType}\n");
if (res['status_code'] == 201) {
print("ngeheeeee berhasil MIDTRAANSS =>> ${res['status_code']}");
} else {
print("res full =>> ${response.body}");
print("ape kaden => ${res['status_code']} || terosz => $res");
}
}
Примечание:
Для корпуса может потребоваться уделить больше внимания order_id
, поскольку он вернет некоторую ошибку, если вы не измените order_id
(да, думаю, что это как любой другой идентификатор первичного ключа).
Документы API: https://api-docs.midtrans.com/
Я действительно ценю любую помощь или обходной путь, данный. Большое спасибо.