ProvOrian.getPOSSignature Method
Deferred POS payments can only be done if the invoice paymentMethod.type = 5.
Public Function getPOSSignature( _
ByVal posTransaction As posTransaction _
) As Dictionary(Of String, String)
This language is not supported or no code example is available.
public Dictionary<string, string> getPOSSignature(
posTransaction posTransaction
)
This language is not supported or no code example is available.
Parameters
- posTransaction
- posTransaction
The raw data of a POS Transaction.
Return Value
Dictionary<string, string>
var por = new ProvOrian("orianUser", "orianPassword", "Arbitrans User", "Arbitrans Key", false);
var posTransaction = new ProvOrian.posTransaction();
posTransaction.invoiceID = "1d2e3456-bc78-9012-345b-6789b012a345"; // The first time you sent the "On Credit" invoice, you received the invoice ID.
posTransaction.paidAmount = 204.0d; // The POS will determine the amount the customer will pay. Typically, it is the invoice's gross value.
posTransaction.terminalID = "111111111111";
Dictionary<string, string> fResult = por.getPOSSignature(posTransaction);
// Set up the POS variables so they can transmit the amount to the POS and complete the invoice for ORIAN.
string paymentID = "";
string paymentData = "";
string paymentSignature = "";
double paymentAmount = 0.0d;
// In order to complete a POS transaction using an Invoicing Provider, you need first a POS Signature from the Provider.
// This ensures that the payment contains indeed a POS transaction.
if (fResult.ContainsKey("paymentInfo.paymentData") & fResult.ContainsKey("paymentInfo.paymentSignature"))
{
paymentID = fResult["paymentInfo.paymentID"];
paymentData = fResult["paymentInfo.paymentData"];
paymentSignature = fResult["paymentInfo.paymentSignature"];
paymentAmount = Conversions.ToDouble(fResult["paymentInfo.paymentAmount"]);
}
#region VivaWallet POS TRANSACTION
// In order to complete a POS transaction using an Invoicing Provider, you need first a POS Signature from the Provider.
// Call the getPOSSignature Method to get a Dictionary(Of String, String) containing the signature data.
// Initialize the VivaWalletPOS
var vw = new VivaWalletPOS("Arbitrans User", "Arbitrans Key", "ClientID", "ClientSecret", false);
Transaction tra = vw.NewTransaction; // initialize a new Sale Object
tra.sessionID = "my custom and unique Session ID"; // The SessionID must be unique. The same SessionID cannot be used twice.
// The Terminal ID. In order to enable user-selected POS terminals, implement the "POS(i).TerminalID" property,
// where "i" represents the POS terminal index that the user has selected.
tra.terminalID = posTransaction.terminalID;
tra.cashRegisterID = "transaction without cash register"; // The Cash Register ID
tra.amount = paymentAmount; // The amount to be charged
tra.currencyCode = "978"; // The currency ISO Code. The 978 is EUR ISO Code
tra.merchantReference = tra.sessionID; // A text message informing the merchant of the nature of this sale.
tra.customerTrns = tra.sessionID; // A text message informing the customer of the nature of this sale.
tra.preauth = false; // Boolean flag indicating whether the payment is or is not a pre-authorization.
tra.maxInstalments = 12; // Max instalments allowed during card presentment
tra.tipAmount = 0.0d; // The desired Tip Amount
tra.aadeProviderId = 115; // The Invoicing Provider Code. Check re "Remarks" of the field aadeProviderId to find the Provider code you need.
tra.aadeProviderSignatureData = paymentData; // The aadeProviderSignatureData
tra.aadeProviderSignature = paymentSignature; // The aadeProviderSignature
string resultVW = vw.newSale(tra); // Send the sale to the POS.
// The subsequent code executes a session status check. It rechecks the session while it is being processed until the user cancels or confirms the sale.
// Such is the nature of an example. This can be substituted with a timer or any other suitable alternative.
Checkagain:
;
// create a loop checking the transaction status in real-time.
string traStatus = vw.checkSession(tra.sessionID); // Get the status of the session
if (traStatus.StartsWith("204")) // If the session is being processed
{
// If you want to cancel the transaction, uncomment the line below.
// vw.sendAbort(sessionID, tra.cashRegisterID);
goto Checkagain; // Check the status again
}
else
{
MessageBox.Show(traStatus);
} // Show the status to the end user.
string transactionID = vw.getTransactionID(sessionID); // Get the tansaction ID after the succesfull transaction.
#endregion
// Send the payment to ORIAN.
var pos = new ProvOrian.posComplete();
pos.paymentID = paymentID;
pos.transactionID = transactionID;
pos.paidAmount = paymentAmount;
pos.invoiceID = posTransaction.invoiceID;
Dictionary<string, string> result = por.completePOSTransaction(pos);
This language is not supported or no code example is available.
Dim por As ProvOrian = New ProvOrian("orianUser", "orianPassword", "Arbitrans User", "Arbitrans Key", False)
Dim posTransaction As New ProvOrian.posTransaction
posTransaction.invoiceID = "1d2e3456-bc78-9012-345b-6789b012a345" 'The first time you sent the "On Credit" invoice, you received the invoice ID.
posTransaction.paidAmount = 204.0 'The POS will determine the amount the customer will pay. Typically, it is the invoice's gross value.
posTransaction.terminalID = "111111111111"
Dim fResult As Dictionary(Of String, String) = por.getPOSSignature(posTransaction)
'Set up the POS variables so they can transmit the amount to the POS and complete the invoice for ORIAN.
Dim paymentID As String = ""
Dim paymentData As String = ""
Dim paymentSignature As String = ""
Dim paymentAmount As Double = 0.0
'In order to complete a POS transaction using an Invoicing Provider, you need first a POS Signature from the Provider.
'This ensures that the payment contains indeed a POS transaction.
If fResult.ContainsKey("paymentInfo.paymentData") And fResult.ContainsKey("paymentInfo.paymentSignature") Then
paymentID = fResult("paymentInfo.paymentID")
paymentData = fResult("paymentInfo.paymentData")
paymentSignature = fResult("paymentInfo.paymentSignature")
paymentAmount = fResult("paymentInfo.paymentAmount")
End If
#Region "VivaWallet POS TRANSACTION"
'In order to complete a POS transaction using an Invoicing Provider, you need first a POS Signature from the Provider.
'Call the getPOSSignature Method to get a Dictionary(Of String, String) containing the signature data.
'Initialize the VivaWalletPOS
Dim vw As New VivaWalletPOS("Arbitrans User", "Arbitrans Key", "ClientID", "ClientSecret", False)
Dim tra As Transaction = vw.NewTransaction 'initialize a new Sale Object
tra.sessionID = "my custom and unique Session ID" 'The SessionID must be unique. The same SessionID cannot be used twice.
'The Terminal ID. In order to enable user-selected POS terminals, implement the "POS(i).TerminalID" property,
'where "i" represents the POS terminal index that the user has selected.
tra.terminalID = posTransaction.terminalID
tra.cashRegisterID = "transaction without cash register" 'The Cash Register ID
tra.amount = paymentAmount 'The amount to be charged
tra.currencyCode = "978" 'The currency ISO Code. The 978 is EUR ISO Code
tra.merchantReference = tra.sessionID 'A text message informing the merchant of the nature of this sale.
tra.customerTrns = tra.sessionID 'A text message informing the customer of the nature of this sale.
tra.preauth = False 'Boolean flag indicating whether the payment is or is not a pre-authorization.
tra.maxInstalments = 12 'Max instalments allowed during card presentment
tra.tipAmount = 0.0 'The desired Tip Amount
tra.aadeProviderId = 115 'The Invoicing Provider Code. Check re "Remarks" of the field aadeProviderId to find the Provider code you need.
tra.aadeProviderSignatureData = paymentData 'The aadeProviderSignatureData
tra.aadeProviderSignature = paymentSignature ' The aadeProviderSignature
Dim resultVW As String = vw.newSale(tra) 'Send the sale to the POS.
'The subsequent code executes a session status check. It rechecks the session while it is being processed until the user cancels or confirms the sale.
'Such is the nature of an example. This can be substituted with a timer or any other suitable alternative.
Checkagain: 'create a loop checking the transaction status in real-time.
Dim traStatus As String = vw.checkSession(tra.sessionID) 'Get the status of the session
If traStatus.StartsWith("204") Then 'If the session is being processed
'If you want to cancel the transaction, uncomment the line below.
'vw.sendAbort(sessionID, tra.cashRegisterID)
GoTo Checkagain 'Check the status again
Else
MessageBox.Show(traStatus) 'Show the status to the end user.
End If
Dim transactionID As String = vw.getTransactionID(sessionID) 'Get the tansaction ID after the succesfull transaction.
#End Region
'Send the payment to ORIAN.
Dim pos As New ProvOrian.posComplete
pos.paymentID = paymentID
pos.transactionID = transactionID
pos.paidAmount = paymentAmount
pos.invoiceID = posTransaction.invoiceID
Dim result As Dictionary(Of String, String) = por.completePOSTransaction(pos)
This language is not supported or no code example is available.