internal new HpsGiftCardResponse FromResponse(PosResponseVer10 response) { base.FromResponse(response); TransactionId = response.Header.GatewayTxnId; string[] propertyNames = { "AuthCode", "BalanceAmt", "PointsBalanceAmt", "Rewards", "Notes", "RspCode", "RspText" }; string[] valuesNames = { "AuthorizationCode", "BalanceAmount", "PointsBalanceAmount", "Rewards", "Notes", "ResponseCode", "ResponseText" }; var transaction = response.Transaction.Item; for (int i = 0; i < propertyNames.Length; i++) { var propertyInfo = transaction.GetType().GetProperty(propertyNames[i]); if (propertyInfo != null) { var value = propertyInfo.GetValue(transaction); var valueInfo = this.GetType().GetProperty(valuesNames[i]); if (valueInfo != null) { try { valueInfo.SetValue(this, value); } catch { valueInfo.SetValue(this, value.ToString()); } } } } return this; }
internal new HpsAuthorization FromResponse(PosResponseVer10 response) { base.FromResponse(response); if (response.Transaction == null) return this; var authResponse = (AuthRspStatusType)response.Transaction.Item; this.AuthorizationCode = authResponse.AuthCode; this.AvsResultCode = authResponse.AVSRsltCode; this.AvsResultText = authResponse.AVSRsltText; this.CvvResultCode = authResponse.CVVRsltCode; this.CvvResultText = authResponse.CVVRsltText; this.AuthorizedAmount = authResponse.AuthAmt; this.CardType = authResponse.CardType; this.Descriptor = authResponse.TxnDescriptor; this.CpcIndicator = authResponse.CPCInd; if (response.Header.TokenData != null) { HpsTokenData token = new HpsTokenData { TokenRspCode = response.Header.TokenData.TokenRspCode, TokenRspMsg = response.Header.TokenData.TokenRspMsg, TokenValue = response.Header.TokenData.TokenValue }; this.TokenData = token; } return this; }
internal new HpsGiftCardSale FromResponse(PosResponseVer10 response) { base.FromResponse(response); var saleResponse = (PosGiftCardSaleRspType)response.Transaction.Item; TransactionId = response.Header.GatewayTxnId; AuthorizationCode = saleResponse.AuthCode; if (saleResponse.BalanceAmtSpecified) BalanceAmount = saleResponse.BalanceAmt; if (saleResponse.PointsBalanceAmtSpecified) PointsBalanceAmount = saleResponse.PointsBalanceAmt; Rewards = saleResponse.Rewards; Notes = saleResponse.Notes; ResponseCode = saleResponse.RspCode.ToString(); ResponseText = saleResponse.RspText; if (saleResponse.SplitTenderCardAmtSpecified) SplitTenderCardAmount = saleResponse.SplitTenderCardAmt; if (saleResponse.SplitTenderBalanceDueAmtSpecified) SplitTenderBalanceDue = saleResponse.SplitTenderBalanceDueAmt; return this; }
internal HpsReportTransactionSummary[] FromResponse(PosResponseVer10 response, HpsTransactionType? filterBy = null) { var reportResponse = (PosReportActivityRspType)response.Transaction.Item; List<HpsReportTransactionSummary> transactions = new List<HpsReportTransactionSummary>(); string serviceName = string.Empty; if (filterBy.HasValue) serviceName = TransactionTypeToServiceName(filterBy.Value); foreach (var charge in reportResponse.Details) { var trans = new HpsReportTransactionSummary(); trans.FromResponse(response); trans.OriginalTransactionId = charge.OriginalGatewayTxnId; trans.MaskedCardNumber = charge.MaskedCardNbr; trans.ResponseCode = charge.IssuerRspCode; trans.ResponseText = charge.IssuerRspText; trans.Amount = charge.Amt; trans.SettlementAmount = charge.SettlementAmt; trans.TransactionUtcDate = charge.TxnDT; trans.TransactionType = ServiceNameToTransactionType(charge.ServiceName); if (filterBy.HasValue) trans.TransactionType = filterBy.Value; if (charge.GatewayRspCode != 0 || charge.IssuerRspCode != "00") { trans.Exceptions = new HpsChargeExceptions(); if (charge.GatewayRspCode != 0) trans.Exceptions.GatewayException = HpsGatewayResponseValidation.GetException(charge.GatewayRspCode, charge.GatewayRspMsg); if (charge.IssuerRspCode != "00") trans.Exceptions.IssuerException = HpsIssuerResponseValidation.GetException(charge.GatewayRspCode, charge.IssuerRspCode, charge.IssuerRspText); } transactions.Add(trans); } return transactions.ToArray(); }
public static void CheckResponse(PosResponseVer10 response, ItemChoiceType2 expectedResponseType) { var e = GetException(response.Header.GatewayRspCode, response.Header.GatewayRspMsg); if (e != null) throw e; if (response.Transaction.ItemElementName != expectedResponseType) throw new HpsGatewayException(HpsExceptionCodes.UnexpectedGatewayResponse, "Unexpected response from HPS gateway."); }
internal new HpsGiftCardAlias FromResponse(PosResponseVer10 response) { base.FromResponse(response); var transaction = (PosGiftCardAliasRspType)response.Transaction.Item; GiftCard = HpsGiftCard.FromResponse(transaction.CardData); ResponseCode = transaction.RspCode.ToString(); ResponseText = transaction.RspText; return this; }
internal new HpsReversal FromResponse(PosResponseVer10 response) { var reverseResponse = (AuthRspStatusType)response.Transaction.Item; base.FromResponse(response); AvsResultCode = reverseResponse.AVSRsltCode; AvsResultText = reverseResponse.AVSRsltText; CpcIndicator = reverseResponse.CPCInd; CvvResultCode = reverseResponse.CVVRsltCode; CvvResultText = reverseResponse.CVVRsltText; return this; }
public HpsDebitAuthorization FromResponse(PosResponseVer10 rsp) { base.FromResponse(rsp); var response = (AuthRspStatusType)rsp.Transaction.Item; AuthorizationCode = response.AuthCode; AvsResultCode = response.AVSRsltCode; AvsResultText = response.AVSRsltText; CvvResultCode = response.CVVRsltCode; CvvResultText = response.CVVRsltText; CardType = response.CardType; AvailableBalance = response.AvailableBalance; AuthorizedAmount = response.AuthAmt; return this; }
internal HpsCheckResponse FromResponse(PosResponseVer10 response) { base.FromResponse(response); if (response.Transaction.Item is PosCheckSaleRspType) { var trans = (PosCheckSaleRspType)response.Transaction.Item; ResponseCode = trans.RspCode.ToString(); ResponseText = trans.RspMessage; AuthorizationCode = trans.AuthCode; if (trans.CheckRspInfo != null) { Details = new List<HpsCheckResponseDetails>(); foreach (var rspInfo in trans.CheckRspInfo) { var detail = new HpsCheckResponseDetails { MessageType = rspInfo.Type, Code = rspInfo.Code, Message = rspInfo.Message, FieldNumber = rspInfo.FieldNumber, FieldName = rspInfo.FieldName }; Details.Add(detail); } } } else if (response.Transaction.Item is PosCheckVoidRspType) { var trans = (PosCheckVoidRspType)response.Transaction.Item; ResponseCode = trans.RspCode.ToString(); ResponseText = trans.RspMessage; AuthorizationCode = trans.AuthCode; if (trans.CheckRspInfo != null) { Details = new List<HpsCheckResponseDetails>(); foreach (var rspInfo in trans.CheckRspInfo) { var detail = new HpsCheckResponseDetails { MessageType = rspInfo.Type, Code = rspInfo.Code, Message = rspInfo.Message, FieldNumber = rspInfo.FieldNumber, FieldName = rspInfo.FieldName }; Details.Add(detail); } } } return this; }
private void ProcessGatewayResponse(PosResponseVer10 response, ItemChoiceType1 expectedResponseType, decimal? amount) { var responseCode = response.Header.GatewayRspCode; var transactionId = response.Header.GatewayTxnId; if (responseCode == 0) return; if (responseCode == 30) { try { //Reverse(amount).WithTransactionId(transactionId).Execute(); } catch (HpsException e) { throw new HpsGatewayException(HpsExceptionCodes.GatewayTimeoutReversalError, "Error occurred while reversing a charge due to a gateway timeout.", e); } } HpsGatewayResponseValidation.CheckResponse(response, (ItemChoiceType2)expectedResponseType); }
internal new HpsReportTransactionDetails FromResponse(PosResponseVer10 response) { var reportResponse = (PosReportTxnDetailRspType)response.Transaction.Item; base.FromResponse(response); OriginalTransactionId = reportResponse.OriginalGatewayTxnId; TransactionType = ServiceNameToTransactionType(reportResponse.ServiceName); var data = reportResponse.Data; SettlementAmount = data.SettlementAmt; MaskedCardNumber = data.MaskedCardNbr; TransactionUtcDate = reportResponse.ReqUtcDT; AuthorizedAmount = data.AuthAmt; AvsResultCode = data.AVSRsltCode; AvsResultText = data.AVSRsltText; CardType = data.CardType; Descriptor = data.TxnDescriptor; CpcIndicator = data.CPCInd; CvvResultCode = data.CVVRsltCode; CvvResultText = data.CVVRsltText; ReferenceNumber = data.RefNbr; ResponseCode = data.RspCode; ResponseText = data.RspText; TransactionStatus = data.TxnStatus; if (data.TokenizationMsg != null) TokenData = new HpsTokenData { TokenRspMsg = data.TokenizationMsg }; if (data.AdditionalTxnFields != null) { Memo = data.AdditionalTxnFields.Description; InvoiceNumber = data.AdditionalTxnFields.InvoiceNbr; CustomerId = data.AdditionalTxnFields.CustomerID; } if (data.RspCode != "0") { if (Exceptions == null) Exceptions = new HpsChargeExceptions(); Exceptions.IssuerException = HpsIssuerResponseValidation.GetException( response.Header.GatewayTxnId, data.RspCode, data.RspText ); } return this; }
private void ProcessIssuerResponse(PosResponseVer10 response, ItemChoiceType1 expectedType, decimal? amount) { int transactionId = response.Header.GatewayTxnId; if (!(response.Transaction.Item is AuthRspStatusType)) return; var transaction = (AuthRspStatusType)response.Transaction.Item; if (transaction.RspCode == "91") { try { //this.Reverse(amount).Execute(); } catch (HpsGatewayException e) { if (e.Details.GatewayResponseCode == 3) HpsIssuerResponseValidation.CheckResponse(transactionId, transaction.RspCode, transaction.RspText); throw new HpsCreditException(transactionId, HpsExceptionCodes.IssuerTimeoutReversalError, "Error occurred while reversing a charge due to an issuer timeout.", e); } catch (HpsException e) { throw new HpsCreditException(transactionId, HpsExceptionCodes.IssuerTimeoutReversalError, "Error occurred while reversing a charge due to an issuer timeout.", e); } } HpsIssuerResponseValidation.CheckResponse(transactionId, transaction.RspCode, transaction.RspText); }
public HpsEbtAuthorization FromResponse(PosResponseVer10 response) { base.FromResponse(response); return this; }
internal HpsTransaction FromResponse(PosResponseVer10 response) { var header = response.Header; long? clientTransactionId = null; if (header.ClientTxnIdSpecified) clientTransactionId = header.ClientTxnId; this.Header = new HpsTransactionHeader { ClientTxnId = clientTransactionId, GatewayRspCode = header.GatewayRspCode, GatewayRspMsg = header.GatewayRspMsg, RspDt = header.RspDT }; this.TransactionId = header.GatewayTxnId; this.ClientTransactionId = clientTransactionId; if (response.Transaction != null) { var transaction = response.Transaction.Item; var rspCodeField = transaction.GetType().GetProperty("RspCode"); if (rspCodeField != null) { var rspCode = rspCodeField.GetValue(transaction); if (rspCode != null) this.ResponseCode = rspCode.ToString(); } var rspTextField = transaction.GetType().GetProperty("RspText"); if (rspTextField != null) { var rspText = rspTextField.GetValue(transaction); if (rspText != null) this.ResponseText = (string)rspText; } var refNbrField = transaction.GetType().GetProperty("RefNbr"); if (refNbrField != null) { var refNbr = refNbrField.GetValue(transaction); if (refNbr != null) this.ReferenceNumber = (string)refNbr; } var EMVIssuerRespField = transaction.GetType().GetProperty("EMVIssuerResp"); if (EMVIssuerRespField != null) { var emvIssuerResp = EMVIssuerRespField.GetValue(transaction); if (emvIssuerResp != null) this.EMVIssuerResp = (string)emvIssuerResp; } } return this; }
private void ProcessChargeGatewayResponse(PosResponseVer10 rsp, ItemChoiceType2 expectedResponseType, decimal amount, string currency) { if (rsp.Header.GatewayRspCode == 0) return; if (rsp.Header.GatewayRspCode == 30) { try { Reverse(rsp.Header.GatewayTxnId, amount, currency); } catch (Exception ex) { throw new HpsGatewayException(HpsExceptionCodes.GatewayTimeoutReversalError, "Error occurred while reversing a charge due to HPS gateway time-out.", ex); } } HpsGatewayResponseValidation.CheckResponse(rsp, expectedResponseType); }
internal new HpsCharge FromResponse(PosResponseVer10 response) { base.FromResponse(response); return this; }
internal new HpsAccountVerify FromResponse(PosResponseVer10 response) { base.FromResponse(response); return this; }