void post_to_pairing() {
sorgu = "Pairing";
HTTPClient http;
http.setTimeout(5000);
http.begin("http://" + String(serverAddress) + ":" + istek);
http.addHeader("Content-Type", "application/json");
Serial.println("http://" + String(serverAddress) + ":" + istek);
int httpResponseCode = http.POST(PairingJson());
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("HTTP Response Code: " + String(httpResponseCode));
httpAnswer(response);
} else {
Serial.print("err:");
Serial.println(httpResponseCode);
}
http.end();
}
////////////////*********************************************************************//////////////
String PairingJson() {
jsonData = ""; // json stringi temizle
doc.clear();
doc["HasError"] = false;
doc["Message"] = "";
JsonObject TransactionHandle = doc.createNestedObject("TransactionHandle");
TransactionHandle["SerialNumber"] = "xxxxxxx";
TransactionHandle["TransactionDate"] = String(opr_time);
TransactionHandle["TransactionSequence"] = opr_order;
TransactionHandle["Fingerprint"] = "xxxxxxxxxxxxx";
serializeJson(doc, jsonData);
return jsonData;
}
////////////////*********************************************************************//////////////
void post_to_payment() {
sorgu = "StartPayment";
HTTPClient http;
http.setTimeout(40000);
http.begin("http://" + String(serverAddress) + ":" + istek2);
http.addHeader("Content-Type", "application/json");
Serial.println("http://" + String(serverAddress) + ":" + istek2);
int httpResponseCode = http.POST(PaymentJson());
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("HTTP Response Code: " + String(httpResponseCode));
// Serial.println(response);
httpAnswer(response);
} else {
Serial.print("err:");
Serial.println(httpResponseCode);
}
http.end();
}
////////////////*********************************************************************//////////////
String PaymentJson() {
jsonData = ""; // json stringi temizle
doc.clear();
JsonObject TransactionHandle = doc.createNestedObject("TransactionHandle");
TransactionHandle["SerialNumber"] = "xxxxxx";
TransactionHandle["TransactionDate"] = String(opr_time);
TransactionHandle["TransactionSequence"] = opr_order + 1;
TransactionHandle["Fingerprint"] = "xxxxxxxxxxx";
JsonObject Payment = doc.createNestedObject("Payment");
Payment["Amount"] = String(payment_price); // ÇEKİLECEK FİYAT
Payment["installmentCount"] = 1;
Payment["puan"] = 0;
Payment["CurrencyCode"] = "TRY";
Payment["CardReadTimeout"] = 20;
Payment["AllowDismissCardRead"] = false;
JsonObject Payment_AdditionalInfo = Payment.createNestedObject("AdditionalInfo");
Payment_AdditionalInfo["print"] = false;
Payment_AdditionalInfo["receiptImage"] = false;
Payment_AdditionalInfo["customerReceiptImageEnabled"] = false;
Payment_AdditionalInfo["merchantReceiptImageEnabled"] = false;
Payment_AdditionalInfo["receiptWidth"] = "80mm";
Payment_AdditionalInfo["headUnmaskLength"] = 4;
Payment_AdditionalInfo["tailUnmaskLength"] = 4;
serializeJson(doc, jsonData);
return jsonData;
}
////////////////*********************************************************************//////////////
void httpAnswer(String answer) {
StaticJsonDocument<0> filter;
filter.set(true);
DeserializationError error = deserializeJson(doc, answer, DeserializationOption::Filter(filter));
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return;
}
bool hasabondon = doc["HasAbondon"];
bool haserror = doc["HasError"];
const char* message = doc["Message"];
JsonObject TransactionHandle = doc["TransactionHandle"];
opr_order = TransactionHandle["TransactionSequence"];
opr_time = TransactionHandle["TransactionDate"];
JsonObject Data = doc["Data"];
const char* sales_return = Data["emvErrorText"]; // "Başarılı" yada "İşlem Red" dönecek
// POS CİHAZINDAN DÖNEN BİLGİLER//*****////*****////************/////////////**********////////
if (String(message) == "İşlemden vazgeçildi") {
Serial.println("zaman aşımı");
delay(10000);
} else if (String(message) == "EMV: İşlem Başarısız") {
Serial.println("işlem iptal edildi");
delay(7500);
} else if (hasabondon == false && haserror == false && String(sales_return) == "Başarılı") {
Serial.println("PARA ÇEKILDI ");
pay_pass = true;
return Go_to_machine(); // Yapılacak işleme gidiyor.
} else if (haserror == true) {
Serial.println("Hata kodu: " + String(message));
Serial.println("Operasyon Sırası: " + String(opr_order));
Serial.println("Operasyon Zamanı: " + String(opr_time));
delay(30);
if (sorgu == "Pairing") return post_to_pairing();
if (sorgu == "StartPayment") return post_to_payment();
} else Serial.println("SORGU BAŞARILI <OK>");
}