public PaymentResponse PreAuthorizationRelease(Transaction preauthenTrans) { try { string signature = GetSignature(TransactionViewModel.New(preauthenTrans), Settings.MerchantCode, Settings.MerchantKey); Dictionary <string, object> postData = new Dictionary <string, object>(); postData.Add("Ds_Merchant_TransactionType", GetType(ETransactionType.PreauthCancelation)); postData.Add("Ds_Merchant_MatchingData", preauthenTrans.TransactionIDExt); postData.Add("Ds_Merchant_MerchantCode", Settings.MerchantCode); postData.Add("Ds_Merchant_Amount", preauthenTrans.Amount.ToString("N2").Replace(".", string.Empty)); postData.Add("Ds_Date", preauthenTrans.Resolved.ToString(GATEWAY_DATE_FORMAT)); postData.Add("Ds_Merchant_PanMask", preauthenTrans.PanMask); postData.Add("Ds_Merchant_MerchantSignature", signature); postData.Add("Ds_Merchant_Currency", GetCurrency(preauthenTrans.ECurrency)); string url = Settings.ApiOperationHost; PaymentResponse response = Remote(url, postData); return(response); } catch (Exception ex) { throw ex; } }
public PaymentResponse ParseHtmlResponse(HttpRequestBase request) { if (request == null) { return(null); } PaymentResponse response = new PaymentResponse(); response.Transaction = TransactionInfo.New(); StreamReader strReader = new StreamReader(request.InputStream); response.Transaction.Response = strReader.ReadToEnd(); strReader.Close(); response.Transaction.Amount = Convert.ToDecimal(request["Ds_Amount"]); //Tefpay uses amount without . or , that's why we have to divide it by 100 response.Transaction.Amount = response.Transaction.Amount / 100; response.Transaction.TransactionIDExt = request["Ds_Merchant_MatchingData"].ToString(); string merchantCode = request["Ds_Merchant_MerchantCode"].ToString(); //TOKEN CHECK string url = (Convert.ToInt32(request["Ds_Code"]) < 200) ? GetResponseOKURL(request) : GetResponseKOURL(request); string signature = GetSignature(TransactionViewModel.New(response.Transaction), merchantCode, Settings.MerchantKey); /*TODO: Check TefPay response signature * if (signature != request["Ds_Signature"]) { * throw new Exception("TOKEN DOES NOT MISMATCH!"); * }*/ response.Transaction.Resolved = DateTime.ParseExact(request["Ds_Date"], GATEWAY_DATE_FORMAT, CultureInfo.InvariantCulture); response.Transaction.AuthCode = request["Ds_AuthorisationCode"].ToString(); response.Transaction.PanMask = request["Ds_PanMask"].ToString(); response.Message = GetMessage(request); response.ResponseCode = request["Ds_Code"].ToString(); response.Status = (response.ResponseCode == "100") ? EStatus.OK : EStatus.Error; return(response); }