[Stackoverflow] [Progress OpenEdge ABL] Translate from C# to PROGRESS OPENEDGE ABL

  • Thread starter Hugo Y Mercado-Otero
  • Start date
Status
Not open for further replies.
H

Hugo Y Mercado-Otero

Guest
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...
 
Status
Not open for further replies.
Top