1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Translate from C# to PROGRESS OPENEDGE ABL

Discussão em 'StackOverflow' iniciado por fdantas, Outubro 10, 2019.

  1. fdantas

    fdantas Administrator Moderador

    I received an C# DLL to access an API and another C# to invoke the DLL.

    I'm trying to make an ABL program to INVOKE the DLL.

    Ive tried the USING, also run it as an EXTERNAL but no luck.

    Never used C#, but it looks like a very simple program can't find how to instatiate the DLL from ABL.

    Thanks in advance,

    Hugo

    Here is the C# code, will appreciate any help


    Code: using System; using System.Windows.Forms;

    namespace CayanConnectSample { public partial class MainFrm : Form { public MainFrm() { InitializeComponent(); }

    private string merchantName = "Test Dynamic Payments";
    private string merchantSiteId = "2Q5JSJH3";
    private string merchantKey = "GQPXT-GTJTP-66A1Y-RWT5G-CNULU";
    private string terminalIPAddress = "192.168.1.32"; //ip address in CDI Technologies
    private int requestTimeout = 60;

    private void btnCreateTransaction_Click(object sender, EventArgs e)
    {

    decimal amount = Convert.ToDecimal(0.09);
    string clerkId = "MIKE";

    //only transactionType used are sale & refund
    CayanConnect.CreateTransaction.Request request = new CayanConnect.CreateTransaction.Request()
    {
    MerchantName = merchantName,
    MerchantSiteId = merchantSiteId,
    MerchantKey = merchantKey,
    TransactionType = CayanConnect.CreateTransaction.TransactionTypeEnum.SALE,
    ClerkId = clerkId,
    Dba = merchantName,
    Amount = amount,
    //[Amount] is always positive. TransactionType has the sign. Sale or Refund
    OrderNumber = "1234"
    };

    CayanConnect.CreateTransaction createTrx = new CayanConnect.CreateTransaction();

    CayanConnect.CreateTransaction.Response ctr = createTrx.Process(request, CayanConnect.ThemeEnum.None);

    if (ctr.Success)
    {
    CayanConnect.InitiateTransaction it = new CayanConnect.InitiateTransaction(terminalIPAddress, ctr.TransportKey, null, CayanConnect.ThemeEnum.None, "Waiting for customer...");

    CayanConnect.InitiateTransaction.Response response = it.Process(requestTimeout, true);

    string emvDetail = response.EMVDetail;
    bool approved = false;


    if (response.Success)
    {
    //THERE IS NO TIMEOUT OR ERROR CALLING THE SERVICE
    if (response.Status.ToUpper() == "APPROVED")
    {
    //AN AMOUNT HAS BEEN APPROVED
    if (Convert.ToDecimal(Math.Abs(amount)) == response.AmountApproved)
    {
    //FULL AMOUNT APPROVED
    approved = true;
    txtResponse.Text = "Good to go!!";
    }
    else
    {
    //PARTIALLY APPROVED, HAS TO VOID THIS
    string v = this.VoidApprovedTransaction(response.Token);
    string em = v.IsEmpty() ? "Transaction was voided succesfully." : v;
    txtResponse.Text = $"Invalid approved amount.{Environment.NewLine}Amount: {amount.ToString("C")}{Environment.NewLine}Approved Amount: {response.AmountApproved.ToString("c")}{em}";
    }
    }
    else
    {
    //AMOUNT WAS DECLINED
    txtResponse.Text = response.DeclinedMessage(amount);
    }
    }
    else
    {
    //THERE WAS A PROBLEM CALLING THE SERVICE
    txtResponse.Text = response.ErrorMessage;
    }
    }
    else
    {
    //THERE WAS A PROBLEM CALLING THE SERVICE
    txtResponse.Text = ctr.ErrorMessage;
    }
    }
    private string GetStatus()
    {
    string rt = string.Empty;

    CayanConnect.GetStatus status = new CayanConnect.GetStatus(this.terminalIPAddress, null, CayanConnect.ThemeEnum.None, "Verifying terminal status...");
    CayanConnect.GetStatus.Response statusResponse = status.Process(this.requestTimeout);

    rt = statusResponse.ToXml();

    return rt;
    }
    private string VoidApprovedTransaction(string token)
    {
    string rt = string.Empty;

    CayanConnect.Void _void = new CayanConnect.Void();

    CayanConnect.Void.Request request = new CayanConnect.Void.Request()
    {
    MerchantName = this.merchantName,
    MerchantKey = this.merchantKey,
    MerchantSiteId = this.merchantSiteId,
    Token = token,
    Timeout = this.requestTimeout
    };

    CayanConnect.Void.Response response = _void.Process(request, CayanConnect.ThemeEnum.None);

    if (!response.Success)
    {
    rt = $"Error voiding transaction.{Environment.NewLine}{Environment.NewLine}{response.ErrorMessage}";
    }

    return rt;
    }

    private void btnIsOnLine_Click(object sender, EventArgs e)
    {
    txtResponse.Text = GetStatus();
    }
    }

    }

    Continue reading...

Compartilhe esta Página