using System.Collections.Generic;
using System.Globalization;
using System.Web.Helpers;
using System.Web.Script.Serialization;
namespace A1PayIntegrationTest
public static string MerchantId = ""; //your merchant ID
public static string Secret = ""; //your secret key
public static string BaseURL = "https://a1pay.net/";
public static string TransactionHash(decimal Amount)
////hash= amount+apikey+secret hashed with 256
return Crypto.SHA256(Amount.ToString("#.00", CultureInfo.InvariantCulture) + MerchantId + Secret);
public static A1PayResponse Query(string A1PayReference, decimal Amount)
var client = new RestClient(BaseURL+ "api/Query/");
var request = new RestRequest("Status/?transactionRef=" + HttpUtility.UrlEncode(A1PayReference), Method.GET);
request.AddHeader("Hash", TransactionHash(Amount));
request.RequestFormat = DataFormat.Json;
IRestResponse response = client.Execute(request);
var content = response.Content;
A1PayTransactionResponse QueryResponse = new JavaScriptSerializer().Deserialize<A1PayTransactionResponse>(content);
if (QueryResponse == null)
if (QueryResponse.status.ToLower() == "error")
string ResponseJson = new JavaScriptSerializer().Serialize(QueryResponse.data);
A1PayResponse ReturnValue = new JavaScriptSerializer().Deserialize<A1PayResponse>(ResponseJson);
public static A1PayResponse QueryWithMyReference(string MyTransactionReference, decimal Amount)
var client = new RestClient(BaseURL + "api/Query/");
var request = new RestRequest("StatusWithMyReference/?transactionRef=" + HttpUtility.UrlEncode(MyTransactionReference)+
"&merchantId=" + HttpUtility.UrlEncode(MerchantId), Method.GET);
request.AddHeader("Hash", TransactionHash(Amount));
request.RequestFormat = DataFormat.Json;
IRestResponse response = client.Execute(request);
var content = response.Content;
A1PayTransactionResponse QueryResponse = new JavaScriptSerializer().Deserialize<A1PayTransactionResponse>(content);
if (QueryResponse == null)
if (QueryResponse.status.ToLower() == "error")
string ResponseJson = new JavaScriptSerializer().Serialize(QueryResponse.data);
A1PayResponse ReturnValue = new JavaScriptSerializer().Deserialize<A1PayResponse>(ResponseJson);
public class A1PayTransactionResponse
public string status { get; set; }
public object data { get; set; }
public class A1PayResponse
public decimal AmountPaid { get; set; }
public string TransactionDate { get; set; }
public string PaymentReference_Switch { get; set; }
public string PaymentReference_Local { get; set; }
public string PayerName { get; set; }
public string PayerEmail { get; set; }
public string TransactionType { get; set; }
public string ResponseCode { get; set; }
public string ResponseDescription { get; set; }
public string FriendlyMessage { get; set; }
public string FurtherExplanation { get; set; }
public bool IsSuccessful { get; set; }