public string AuthTransactionToIssuer(string json)
        {
            ContactCardOnlineAuthRequest  request  = ContactCardOnlineAuthRequest.FromJsonString(json);
            ContactCardOnlineAuthResponse response = new ContactCardOnlineAuthResponse();

            try
            {
                EMVApproverResponse onlineResponse = GoOnline(
                    new EMVApproverRequest()
                {
                    EMV_Data = TLVasJSON.Convert(request.EMV_Data),
                });

                response.AuthCode_8A       = TLVasJSON.Convert(onlineResponse.AuthCode_8A);
                response.IssuerAuthData_91 = TLVasJSON.Convert(onlineResponse.IssuerAuthData_91);
                response.ResponseMessage   = onlineResponse.ResponseMessage;
                if (onlineResponse.IsApproved)
                {
                    response.Response = ContactCardOnlineAuthResponseEnum.Approved;
                }
                else
                {
                    response.Response = ContactCardOnlineAuthResponseEnum.Declined;
                }

                return(JsonConvert.ToString(response.ToJsonString()));
            }
            catch (Exception ex)
            {
                response.Response = ContactCardOnlineAuthResponseEnum.UnableToGoOnline;
                Logger.Log("Unable to go online:" + ex.Message);
                return(JsonConvert.ToString(response.ToJsonString()));
            }
        }
Esempio n. 2
0
        private EMVApproverResponse GoOnlineForContactEMV(InterFaceType interfaceType, TLV data, TLV discretionary)
        {
            try
            {
                #region Merge EMV Lists
                if (discretionary != null)
                {
                    data.Children.AddListToList(discretionary.Children);
                }
                #endregion

                EMVApproverResponse onlineResponse = (EMVApproverResponse)onlineContactEMVApprover.DoAuth(
                    new EMVApproverRequest()
                {
                    EMV_Data        = data,
                    TCPClientStream = tcpClientStream
                });
                return(onlineResponse);
            }
            catch (Exception ex)
            {
                Logger.Log("Unable to go online:" + ex.Message);
                return(null);
            }
        }
Esempio n. 3
0
        private void EmvTxCtl_TxCompleted(object sender, EventArgs e)
        {
            if ((e as TxCompletedEventArgs).TxResult == TxResult.Cancelled)
            {
                UpdateView(ViewState.StepTxCtl);
            }

            if ((e as TxCompletedEventArgs).EMV_Data.IsPresent())
            {
                //the contact app would have already gone online, and the TxResult would be approved or declined
                //the reason going online for contactless is handled differently to going online for
                //contact is that with contact we have to go online and then back to the card before we can
                //process the transaction on the backend, for contacless we can choose to go online and process
                //the transaction in one call
                if ((e as TxCompletedEventArgs).TxResult == TxResult.ContactlessOnline)
                {
                    EMVApproverRequest auth = new EMVApproverRequest()
                    {
                        EMV_Data = (e as TxCompletedEventArgs).EMV_Data.Get()
                    };
                    try
                    {
                        EMVApproverResponse response = (EMVApproverResponse)onlineApprover.DoAuth(auth);
                        emvTxCtl.SetTxFinalResultLabel("CTLS Online:" + response.ResponseMessage);
                    }
                    catch (Exception ex)
                    {
                        emvTxCtl.SetTxFinalResultLabel("CTLS Online:" + ex.Message);
                    }
                }
            }
            if ((e as TxCompletedEventArgs).QR_Data.IsPresent())
            {
                if ((e as TxCompletedEventArgs).TxResult == TxResult.QRCodeScanned)
                {
                    //send qr code auth request
                    QRCodeApproverRequest auth = new QRCodeApproverRequest()
                    {
                        QRData = (e as TxCompletedEventArgs).QR_Data.Get()
                    };
                    try
                    {
                        QRCodeApproverResponse response = (QRCodeApproverResponse)onlineApprover.DoAuth(auth);
                        emvTxCtl.SetTxFinalResultLabel("QRCode Online:" + response.ResponseMessage);
                    }
                    catch (Exception ex)
                    {
                        emvTxCtl.SetTxFinalResultLabel("QRCode Online:" + ex.Message);
                    }
                }
            }
        }
Esempio n. 4
0
        private ApproverResponseBase DoEMVAuth(ApproverRequestBase requestIn)
        {
            try
            {
                EMVApproverRequest request = ((EMVApproverRequest)requestIn);

                DCEMVDemoServerClient client = SessionSingleton.GenDCEMVServerApiClient();
                using (SessionSingleton.HttpClient)
                {
                    ContactCardOnlineAuthRequest tx = new ContactCardOnlineAuthRequest()
                    {
                        EMV_Data = TLVasJSON.Convert(request.EMV_Data),
                    };
                    string responseJson = "";
                    Task.Run(async() => {
                        responseJson = await client.TransactionAuthtransactiontoissuerPostAsync(tx.ToJsonString());
                    }).Wait();
                    ContactCardOnlineAuthResponse response = ContactCardOnlineAuthResponse.FromJsonString(responseJson);

                    EMVApproverResponse approverResponse = null;
                    switch (response.Response)
                    {
                    case ContactCardOnlineAuthResponseEnum.Approved:
                    case ContactCardOnlineAuthResponseEnum.Declined:
                        approverResponse                   = new EMVApproverResponse();
                        approverResponse.AuthCode_8A       = TLVasJSON.Convert(response.AuthCode_8A);
                        approverResponse.IssuerAuthData_91 = TLVasJSON.Convert(response.IssuerAuthData_91);
                        approverResponse.IsApproved        = response.Response == ContactCardOnlineAuthResponseEnum.Approved ? true : false;
                        approverResponse.ResponseMessage   = response.ResponseMessage;
                        break;

                    case ContactCardOnlineAuthResponseEnum.UnableToGoOnline:
                        break;
                    }

                    return(approverResponse);
                }
            }
            catch
            {
                return(null);
            }
        }
Esempio n. 5
0
        private void ContactApp_OnlineRequest(object sender, EventArgs e)
        {
            EMVApproverResponse onlineResponse = GoOnlineForContactEMV(InterFaceType.Contact, ((OnlineEventArgs)e).data, ((OnlineEventArgs)e).discretionaryData);

            if (onlineResponse == null)
            {
                contactCardApp.DoOnlineReponse(KernelOnlineResponseType.UnableToGoOnline,
                                               TLV.Create(EMVTagsEnum.AUTHORISATION_RESPONSE_CODE_8A_KRN.Tag),
                                               TLV.Create(EMVTagsEnum.ISSUER_AUTHENTICATION_DATA_91_KRN.Tag),
                                               TLV.Create(EMVTagsEnum.ISSUER_SCRIPT_TEMPLATE_1_71_KRN.Tag),
                                               TLV.Create(EMVTagsEnum.ISSUER_SCRIPT_TEMPLATE_2_72_KRN.Tag));
            }
            else
            {
                if (onlineResponse.IsApproved)
                {
                    contactCardApp.DoOnlineReponse(KernelOnlineResponseType.Approve, onlineResponse.AuthCode_8A, onlineResponse.IssuerAuthData_91, onlineResponse.IssuerScriptTemplate_71, onlineResponse.IssuerScriptTemplate_72);
                }
                else
                {
                    contactCardApp.DoOnlineReponse(KernelOnlineResponseType.Decline, onlineResponse.AuthCode_8A, onlineResponse.IssuerAuthData_91, onlineResponse.IssuerScriptTemplate_71, onlineResponse.IssuerScriptTemplate_72);
                }
            }
        }