public static void DoBillRun() { IEnumerable<InsuranceDetails> full_billing_accounts = null; IEnumerable<InsuranceDetails> partial_billing_accounts = null; List<DatatransTransaction> transactions = null; DatatransTransaction transaction = null; double partial_amount = 0.00; int days_to_bill = 0; int paymentMethod = 0; full_billing_accounts = GetInsurancesToBillFull(); partial_billing_accounts = GetInsurancesToBillPartially(); transactions = new List<DatatransTransaction>(); // Normale Belastung. Versicherungsende liegt in der Zukunft (nicht im aktuellen Monat) foreach (InsuranceDetails details in full_billing_accounts) { transaction = new DatatransTransaction() { Amount = (Decimal)PraemienHelper.GetPraemie((int)details.Franchise, paymentMethod), DetailsId = details.DetailsId }; transactions.Add(transaction); } // Teilweise Belastung. Versicherungsende im aktuellen Monat foreach (InsuranceDetails details in partial_billing_accounts) { days_to_bill = details.EndDate.Value.Day; partial_amount = PraemienHelper.GetPraemie((int)details.Franchise, paymentMethod) / 30 * days_to_bill; transaction = new DatatransTransaction() { Amount = (Decimal)partial_amount, DetailsId = details.DetailsId }; transactions.Add(transaction); } DatatransHelper.BatchExecuteTransactions(transactions); }
public static string PrepareForm(DatatransTransaction p_transaction, string rootUrl) { StringWriter writer = null; string transationId = null; writer = new StringWriter(); transationId = p_transaction.TransactionId.ToString(); transationId = transationId.PadLeft(8, '0'); if (TestMode) { p_transaction.Amount = new Decimal(1.00); ; } writer.WriteLine("<html><head></head><body onload=\"document.datatrans.submit()\">"); writer.WriteLine("<form name='datatrans' id='datatrans' action='https://payment.datatrans.biz/upp/jsp/upStart.jsp' method='post'>"); writer.WriteLine("<input type='hidden' name='merchantId' value='3000004038'>"); //5923 = xml writer.WriteLine(string.Format("<input type='hidden' name='amount' value='{0}'>", (int)p_transaction.Amount * 100)); writer.WriteLine("<input type='hidden' name='currency' value='CHF'>"); writer.WriteLine("<input type='hidden' name='useAlias' value='yes'>"); writer.WriteLine(string.Format("<input type='hidden' name='refno' value='{0}'>", transationId)); writer.WriteLine("<input type='hidden' 'name='successUrl' value='{0}success.aspx'>", rootUrl); writer.WriteLine("<input type='hidden' 'name='errorUrl' value='{0}error.aspx'>", rootUrl); writer.WriteLine("<input type='hidden' 'name='cancelUrl' value='{0}cancel.aspx'>", rootUrl); writer.WriteLine("</form></body></html>"); return (writer.ToString()); }
public static string GetXmlTransaction(DatatransTransaction p_transaction) { CreditCardAlias alias = null; string transaction_id = null; double amount = 0.00; transaction_id = p_transaction.TransactionId.ToString(); transaction_id = transaction_id.PadLeft(8, '0'); amount = (double)p_transaction.Amount; if (TestMode) { amount = 1.00; } using (AviertDataContext context = new AviertDataContext()) { alias = context.CreditCardAlias.Single(a => a.InsuranceId == p_transaction.DetailsId); } string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + "<authorizationService version=\"1\">" + "<body merchantId=\"3000005923\">" + "<transaction refno=\"" + transaction_id + "\">" + "<request>" + "<amount>" + (int)(amount / 100) + "</amount>" + "<currency>CHF</currency>" + "<aliasCC>" + alias.Alias + "</aliasCC>" + "<expm>" + alias.ExpirationMonth + "</expm>" + "<expy>" + alias.ExpirationYear + "</expy>" + "</request>" + "</transaction>" + "</body>" + "</authorizationService>"; return (xml); }
public static DatatransTransaction CreateTransaction(InsuranceDetails p_details, double p_amount) { DatatransTransaction transaction = null; transaction = new DatatransTransaction() { DetailsId = p_details.DetailsId, Amount = (decimal)p_amount, Status = (int)TransactionStatus.Pending, InsDate = DateTime.Now }; using (AviertDataContext context = new AviertDataContext()) { context.DatatransTransaction.InsertOnSubmit(transaction); context.SubmitChanges(); } return (transaction); }