Я пытаюсь отправить сообщение Json на серверную часть фляги.
Клиентский код javascript:
submit.addEventListener('click', function(){
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"amount":Number(amount.value),
"ccnumber":`${ccnumber.value}`,
"month":`${ccmonth.value}`,
"year":`${ccyear.value}`,
"zip":`${zip.value}`,
"cvv":`${cvv.value}`,
"first_name":`${name.value}`,
"last_name":`${lastname.value}`,
"address1":`${address.value}`,
"city":`${city.value}`,
"state":`${state.value}`,
"country":`${country.value}`,
"isJava": "true",
"lang": navigator.language,
"colorDepth": screen.colorDepth,
"browserTZ": new Date().getTimezoneOffset(),
"screenWidth": screen.width,
"screenHeight": screen.height,
"browserAgent": navigator.userAgent});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow' };
fetch("https://0.0.0.0:80/consulting-h", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
})
внутренний код:
requestJson = flask.request.json
amount = requestJson['amount']
ccnumber = requestJson['ccnumber']
month = requestJson['month']
year = requestJson['year']
ccexp = f'{month}{year}'
zip = requestJson['zip']
cvv = requestJson['cvv']
first_name = requestJson['first_name']
last_name = requestJson['last_name']
address1 = requestJson['address1']
city = requestJson['city']
state = requestJson['state']
country = requestJson['country']
# Browser Fingerprint
isJava = requestJson['isJava']
lang = requestJson['lang']
colorDepth = requestJson['colorDepth']
browserTZ = requestJson['browserTZ']
screenWidth = requestJson['screenWidth']
screenHeight = requestJson['screenHeight']
browserAgent = requestJson['browserAgent']
dataDict = {
"challengeIndicator": "01",
"amount": amount,
"pan": ccnumber,
"month": month,
"year": year,
"browser": {
"browserAcceptHeader": "application/json",
"browserJavaEnabled": isJava,
"browserLanguage": lang,
"browserColorDepth": colorDepth,
"browserTZ": browserTZ,
"browserScreenWidth": screenWidth,
"browserScreenHeight": screenHeight,
"browserUserAgent": browserAgent
},
"threeDSRequestorURL": requestorURL,
}
data = json.dumps(dataDict)
print(data)
postResponse = requests.post('https://apisandbox.3dsintegrator.com/v2/authenticate/browser', headers=headers(),
data=data).json()
print(postResponse)
Результат:
{"challengeIndicator": "01", "amount": 1, "pan": "5107747733373841", "month": "06", "year": "20", "browser": {"browserAcceptHeader": "application/json", "browserJavaEnabled": "true", "browserLanguage": "en", "browserColorDepth": "45", "browserTZ": "245", "browserScreenWidth": "1440", "browserScreenHeight": "900", "browserUserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"}, "threeDSRequestorURL": "https://5090ca5ec085.ngrok.io"}
Ответ сервера:
{'error': 'Не удалось разобрать тело запроса. Пожалуйста, проверьте формат JSON'}
если тот же запрос будет выполнен с Postman, он вернет действительный.
Json отправлен с PostmanL
var raw = JSON.stringify({"amount":1,"ccnumber":"5107747722273841","month":"09","yea r":"20","zip":"33132","cvv":"352","first_name":"kevin","last_name":"luciano","address1":"244 biscayne","city":"Miami","state":"FL","country":"US","isJava":true,"lang":"en","colorDepth":"45","browserTZ":"230","screenWidth":"1440","screenHeight":"900","browserAgent":"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"});
Что я могу сделать, чтобы это работало при отправке запроса со стороны клиента?