private MDOM_POS SetInitialParams() { Request = new MDOM_POS(); Request.ResponseReq.TerminalId = StaticMain.Settings.Terminal_MdomPOS.TerminalID; Request.ResponseReq.Version = StaticMain.Settings.Terminal_MdomPOS.version; return(Request); }
public static PS_ERIP SetPosError(this PS_ERIP eripArg, MDOM_POS arg) { try { if (arg.EnumType == PosQAType.PURResponse) { eripArg.EnumType = EripQAType.POSPayResponse; } if (arg.EnumType == PosQAType.VOIResponse) { eripArg.EnumType = EripQAType.POSCancelResponse; } if (arg.EnumType == PosQAType.UnknownResponse) { eripArg.EnumType = EripQAType.UnknownResponse; } eripArg.ResponseReq.ErrorCode = arg.ResponseReq.ErrorCode ?? 0; eripArg.ResponseReq.ErrorText = arg.ResponseReq.ErrorText; if (arg.ResponseReq.ErrorCode == 16) { eripArg.ResponseReq.KioskError = arg.ResponseReq.ResponseCode ?? eripArg.ResponseReq.KioskError; eripArg.ResponseReq.ErrorText = arg.ResponseReq.VisualHostResponse ?? eripArg.ResponseReq.ErrorText; } } catch (Exception ex) { ex.Log(); } return(eripArg); }
private async Task <string> Serialize(MDOM_POS PosArg) { XDocument reqXml = await SerializationUtil.Serialize(PosArg); //string request = $"xml={reqXml?.ToString()}"; string request = reqXml?.ToString(); return(request); }
private async Task <MDOM_POS> GetPosResponse(string argReq) { Ex.Log($"{nameof(XmlTransactionsManager)}.{nameof(GetPosResponse)}()"); XDocument respXml = await PostGetHTTP.PostStringGetXML(StaticMain.Settings.Terminal_MdomPOS.url, argReq); MDOM_POS respPos = await SerializationUtil.Deserialize <MDOM_POS>(respXml); return(respPos); }
private void HandleCancelPOSResponse(MDOM_POS arg) { Ex.Log($"{nameof(XmlTransactionsManager)}.{nameof(HandleCancelPOSResponse)}()"); if (arg?.ResponseReq?.ErrorCode == null) { string str = $"Error: {nameof(HandleCancelPOSResponse)}(): MDOM_POS response = null"; Ex.Throw(str); } if (arg?.ResponseReq?.ErrorCode != null && arg?.ResponseReq?.ErrorCode != 0) { string str = $"Error: {nameof(HandleCancelPOSResponse)}(): ErrorCode={arg.ResponseReq.ErrorCode}; ErrorText={arg.ResponseReq.ErrorText}"; Ex.Throw(str); } }
public static PS_ERIP Accept(this PS_ERIP eripArg, MDOM_POS arg) { try { eripArg.ResponseReq.PayDate = arg?.ResponseReq?.PayDate; eripArg.ResponseReq.KioskReceipt = arg?.ResponseReq?.KioskReceipt; eripArg.ResponseReq.PAN = arg?.ResponseReq?.PAN; eripArg.ResponseReq.TypePAN = arg?.ResponseReq?.TypePAN; eripArg.ResponseReq.KioskReceipt = arg?.ResponseReq?.KioskReceipt; var payrec = eripArg.ResponseReq?.PayRecord?.FirstOrDefault(); payrec.PC_ID = arg.ResponseReq?.PC_ID; } catch (Exception ex) { ex.Log(); } return(eripArg); }
private async Task CancelPayPOS() { Ex.Log($"{nameof(XmlTransactionsManager)}.{nameof(CancelPayPOS)}()"); var RunOpReq = Request; //list.Page.Request MDOM_POS CancelPOSReq = null; if (RunOpReq.EnumType != EripQAType.RunOperationRequest) { Ex.Log($"Error: {nameof(CancelPayPOS)} RunOpReq.EnumType != RunOperationRequest"); CancelPOSReq = lastPOSTransaction.GetCancelVOIRequest(lastPCID, lastKioskReceipt); } else { CancelPOSReq = lastPOSTransaction.GetCancelVOIRequest(RunOpReq); } string request = await Serialize(CancelPOSReq); lastPOSTransaction.Response = await GetPosResponse(request); Ex.Catch(() => HandleCancelPOSResponse(lastPOSTransaction.Response)); }
private async Task <PS_ERIP> HandlePayRecordParam(PayRecord payrecArg, PS_ERIP requestArg = null) { PS_ERIP @return = null; if (payrecArg == null) { Ex.Throw <ArgumentNullException>($"{nameof(HandlePayRecordParam)}(): PayRecord argument = null"); } PS_ERIP requestCopy = requestArg ?? list.Current.Request.Copy(); if (payrecArg.GetPayListType == "1" || payrecArg.GetPayListType == "2") { Ex.Log($"{nameof(HandlePayRecordParam)}(): GetPayListType=1/2; SessionID={payrecArg.SessionId}"); requestCopy.ResponseReq.SessionId = payrecArg.SessionId; requestCopy.ResponseReq.AttrRecord = new List <AttrRecordRequest>(); payrecArg.AttrRecord.ForEach(attr => { var newAttr = new AttrRecordRequest(attr); newAttr.Change = 1; requestCopy.ResponseReq.AttrRecord.Add(newAttr); }); return(requestCopy); } if (payrecArg.GetPayListType == "0") { Ex.Log($"GetPayListType=0; SessionID={payrecArg.SessionId}"); Ex.Try(false, () => payrecArg.Summa = payrecArg.Summa.Replace(",", ".")); lastPOSTransaction.CreatePayPosRequest(payrecArg); string request = await Serialize(lastPOSTransaction.Request); MDOM_POS PosRespon = await GetPosResponse(request); lastPOSTransaction.Response = PosRespon; string fakeRespon = @" <MDOM_POS> <PURResponse> <ErrorCode>0</ErrorCode> <PayDate>04/11/2019 15:54:18</PayDate> <KioskReceipt>0002</KioskReceipt> <PC_ID>000000000000</PC_ID> <PAN>522208******0693</PAN> <TypePAN>MS</TypePAN> <Receipt> ***************************** DEMO MODE ONLY FOR TEST ДЕМОНСТРАЦИОННЫЙ РЕЖИМ ТОЛЬКО ДЛЯ ТЕСТИРОВАНИЯ ***************************** **** TRAINING MODE **** ТЕРМИНАЛ: PTS01001 Торговец: 0000001 Тестовый терминал Расвиком КАРТ-ЧЕК: 990003/000001 ERN: 2 * ДЛЯ КЛИЕНТА * ОПЛАТА 04.11.2019 КАРТА: 522208******0693 Ввод данных - (CL) Сумма 1.00 BYN КОД: 00 ЗАВЕРШЕНО УСПЕШНО КОД АВТ.: XXXXXX AID: A0000000041010 APP: Mastercard </Receipt> </PURResponse> </MDOM_POS>"; //FAKE RESPONSE //Ex.Log($"TEST ПОДСТАВА ответа от POS вместо реального"); if (PosRespon.ResponseReq.ErrorCode == 0) //УСПЕХ POS { this.lastPCID = PosRespon?.ResponseReq?.PC_ID; this.lastKioskReceipt = PosRespon?.ResponseReq?.KioskReceipt; var responCopy = list.Current.Response.Copy(); responCopy.EnumType = EripQAType.RunOperationRequest; responCopy.Accept(requestCopy); responCopy.Accept(PosRespon).RunOpRequestClear();; responCopy.ResponseReq.SessionId = payrecArg.SessionId; var payrec = responCopy.ResponseReq.PayRecord.FirstOrDefault(); payrec.SessionId = payrecArg.SessionId; Ex.Try(false, () => payrec.Summa = payrec.Summa.Replace(",", ".")); responCopy.ClearAttrRecords(); return(responCopy); } if ((PosRespon.ResponseReq.ErrorCode != null && PosRespon.ResponseReq.ErrorCode != 0) || PosRespon.ResponseReq.ErrorCode == null) //ОШИБКА POS { var eripResponPosError = Factory.PsEripCreate().SetPosError(PosRespon); if (PosRespon.ResponseReq.ErrorCode == 16) { Task.Run(() => { try { Font font = SetFont(); var posReceipt = PosRespon.ResponseReq.Receipt; Print(posReceipt, font); } catch (Exception ex) { ex.Show("Print if ErroCode=16"); } }).RunAsync(); } return(eripResponPosError); } } return(@return); }