BoricaNet 1.0.7

There is a newer version of this package available.
See the version list below for details.
dotnet add package BoricaNet --version 1.0.7
NuGet\Install-Package BoricaNet -Version 1.0.7
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BoricaNet" Version="1.0.7" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BoricaNet --version 1.0.7
#r "nuget: BoricaNet, 1.0.7"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install BoricaNet as a Cake Addin
#addin nuget:?package=BoricaNet&version=1.0.7

// Install BoricaNet as a Cake Tool
#tool nuget:?package=BoricaNet&version=1.0.7

alternate text is missing from this package README image

BoricaNet

Library for borica in .Net

Download

dotnet add package BoricaNet

Example request

  1. Create params
var boricaData = new BoricaNetParams(
    pathToPublicKeyPath: "borica-pub-key.cer",
    pathToPrivateKeyPath: "keystore-test.pfx",
    privateKeyPassword: "password",
    email: "myemail@gmail.com",
    terminalId: "V0000000",
    description: "Description shows at payment page",
    merchantUrl: "https://mywebsite.com",
    merchantName: "myCompany",
    merchant: "0000000000",
    amount: "31.00"
);
  1. Initialize Borica class with params
var borica = new Borica(boricaData);
  1. Generate payload
var paymentPayload = borica.GeneratePayload();
  1. Or generate html form as string directly with hidden input
  • Using isDev: true will generate with borica's dev url
  • Using isDev: false will generate with borica production url
var paymentPayload = borica.GenerateForm(isDev: true);

Example response

The formBody is the response submited from borica after payment on your endpoint

var paymentResponse = borica.HandleResponse(formBody: new Dictionary<string, string>());
  • paymentResponse will cointain the payload data inside if you want to handle the error checks yourself

Example order status check

Sends a request to borica with the order id to check the status of the order. Borica will save the order id for 24hrs only.

 var statusCheckParams = new BoricaCheckStatusParams
 {
    OrderId = "123456",
    TerminalId = "V0000000",
    OriginalTransactionCode = "1"
};
        
 await CheckStatusForOrder(httpClient: new HttpClient(), statusParams: statusCheckParams);

By default it will send the request to borica's production url, if you want to send it to dev url use the overwrite default value isDev: true

 await CheckStatusForOrder(httpClient: new HttpClient(), statusParams: statusCheckParams, isDev: true);

Order generation

The order generation ensures that the order is unique for 24hrs and for the transaction by taking into account the current date and time and the nonce. If you want to generate the order id yourself you can use the overloads of the GeneratePayload and GenerateForm methods

var paymentPayload = borica.GeneratePayload(orderId: 123456);
var paymentPayloadForm = borica.GenerateForm(isDev: true, orderId: 123456);

Resources

Borica urls that process the requests

  • Borica test url https://3dsgate-dev.borica.bg/cgi-bin/cgi_link
  • Borica production url https://3dsgate.borica.bg/cgi-bin/cgi_link

openssl commands to convert keys

  1. Generate cer file form csr and private.key
    • openssl x509 -req -in [.csr] -signkey [.key] -out certificate.cer
  2. Generate pfx file from cer and private.key
    • openssl pkcs12 -export -inkey [.key] -in [.cer] -out key-store.pfx

Test cards with status codes

For testing purposes you can use the following cards with the corresponding status codes. The card date and CVV can any numbers.

  • 5100770000000022 - Approved - RC: 00
  • 5555000000070019 - Declined - RC: 04
  • 5555000000070027 - Declined - RC: 13
  • 5555000000070035 - Declined - RC: 91
  • 4341792000000044 - Approved - RC: 00
    • Requires 3DSecure verification with sum greater than 30.00
    • The 3DSecure password is 111111
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.10 222 4/9/2023
1.0.9 163 4/9/2023
1.0.8 161 4/9/2023
1.0.7 205 3/17/2023
1.0.6 230 3/1/2023
1.0.5 223 2/24/2023
1.0.4 224 2/23/2023
1.0.3 228 2/23/2023
1.0.2 258 2/19/2023
1.0.1 266 2/18/2023
1.0.0 257 2/18/2023