Beispiel #1
0
        /// <summary>
        /// Processes a transaction with the given data supplied by the JSON component.
        /// </summary>
        /// <param name="transactionData">A JSON object containing the parameters to be sent in the transaction</param>
        /// <returns>A string with the assembled response from Shift4 and the device.</returns>
        public async Task <string> processTransaction(Newtonsoft.Json.Linq.JToken transactionData)
        {
            string resultString = "";

            // 1.5 Parse out JSON
            string[] transactionDetails = parseTransactionDetails(transactionData);

            // 2. Set the Payment/Management Request Settings
            setRequestType(transactionDetails[0].ToUpper(), transactionDetails[1].ToUpper());

            if (transactionDetails[1].ToUpper() == "MANAGE")
            {
                // Do this flow for a management request
                // 3. Set the management Variables
                manage.VarName  = transactionDetails[20];
                manage.VarValue = transactionDetails[21];

                // 4. Execute the request
                result = executeManagement(manage);

                // 5. Handle Response
                resultString = handleResponse(result);
            }
            else
            {
                // 3. Set the PayLink Settings
                setPayLinkSettings(transactionDetails[2],
                                   "3",
                                   transactionDetails[5],
                                   transactionDetails[6],
                                   transactionDetails[7],
                                   transactionDetails[4],
                                   transactionDetails[3],
                                   transactionDetails[8],
                                   transactionDetails[15],
                                   transactionDetails[16],
                                   transactionDetails[19]
                                   );

                // 3.5 Set ExtData <XML/>
                setExtData(transactionDetails[12], transactionDetails[13], transactionDetails[9], transactionDetails[10], transactionDetails[11], transactionDetails[14]);

                // 4. Execute the Payment
                result = executeTransaction(request);

                // 5. Handle Response
                resultString = handleResponse(result);
            }
            return(resultString);
        }
Beispiel #2
0
        /// <summary>
        /// 5. Handle Response
        /// </summary>
        /// <param name="result">The Transaction result</param>
        /// <returns>A string representation of the response object.</returns>
        private string handleResponse(POSLink.ProcessTransResult result)
        {
            string output = "";

            if (result.Code == POSLink.ProcessTransResultCode.OK)
            {
                POSLink.PaymentResponse res  = paxDevice.PaymentResponse;
                POSLink.ManageResponse  mRes = paxDevice.ManageResponse;

                if (res != null && res.ResultCode != null)
                {
                    output += "Approved Amount: " + res.ApprovedAmount + Environment.NewLine;
                    output += "Auth Code: " + res.AuthCode + Environment.NewLine;
                    output += "AVS Response: " + res.AvsResponse + Environment.NewLine;
                    output += "Bogus Account Number: " + res.BogusAccountNum + Environment.NewLine;
                    output += "Card Type: " + res.CardType + Environment.NewLine;
                    output += "CVV Response: " + res.CvResponse + Environment.NewLine;
                    output += "EXT Data: " + res.ExtData + Environment.NewLine;
                    output += "Extra Balance: " + res.ExtraBalance + Environment.NewLine;
                    output += "Invoice: " + res.HostCode + Environment.NewLine;             // HostCode = Shift4 Invoice Number
                    output += "Host Response: " + res.HostResponse + Environment.NewLine;
                    output += "Message: " + res.Message + Environment.NewLine;
                    output += "Raw Response: " + res.RawResponse + Environment.NewLine;
                    output += "Reference Number: " + res.RefNum + Environment.NewLine;
                    output += "Remaining Balance: " + res.RemainingBalance + Environment.NewLine;
                    output += "Requested Amount: " + res.RequestedAmount + Environment.NewLine;
                    output += "Result Code: " + res.ResultCode + Environment.NewLine;
                    output += "Result Text: " + res.ResultTxt + Environment.NewLine;
                    output += "Sig File Name: " + res.SigFileName + Environment.NewLine;
                    output += "Time Stamp: " + res.Timestamp + Environment.NewLine;
                }
                if (mRes != null)
                {
                    // Do something here to handle the management response.
                    //output += "Approved Amount: 0.00"  + Environment.NewLine;
                    //output += "Auth Code: " + mRes.ResultTxt + Environment.NewLine;
                    //output += "AVS Response: " + res.AvsResponse + Environment.NewLine;
                    //output += "Bogus Account Number: " + res.BogusAccountNum + Environment.NewLine;
                    //output += "Card Type: " + res.CardType + Environment.NewLine;
                    //output += "CVV Response: " + res.CvResponse + Environment.NewLine;
                    //output += "EXT Data: " + res.ExtData + Environment.NewLine;
                    //output += "Extra Balance: " + res.ExtraBalance + Environment.NewLine;
                    //output += "Invoice: " + res.HostCode + Environment.NewLine;             // HostCode = Shift4 Invoice Number
                    if (mRes.ResultTxt == "OK")
                    {
                        output += "Host Response: A" + Environment.NewLine;
                    }
                    //output += "Message: " + res.Message + Environment.NewLine;
                    //output += "Raw Response: " + res.RawResponse + Environment.NewLine;
                    //output += "Reference Number: " + res.RefNum + Environment.NewLine;
                    //output += "Remaining Balance: " + res.RemainingBalance + Environment.NewLine;
                    //output += "Requested Amount: " + res.RequestedAmount + Environment.NewLine;
                    output += "Result Code: " + mRes.ResultCode + Environment.NewLine;
                    output += "Result Text: " + mRes.ResultTxt + Environment.NewLine;
                    //output += "Sig File Name: " + res.SigFileName + Environment.NewLine;
                    //output += "Time Stamp: " + res.Timestamp + Environment.NewLine;
                }
            }
            else if (result.Code == POSLink.ProcessTransResultCode.ERROR)
            {
                Console.WriteLine("Ruh Roh! Something went wrong, the PAX device returned an error.");
                output += "Ruh Roh! Something went wrong, the PAX device returned an error.";
            }
            else if (result.Code == POSLink.ProcessTransResultCode.TimeOut)
            {
                Console.WriteLine("Timeout: I dunno Scoob, it looks like they ran out of ScoobySnacks before we could get here.");
                output += "Timeout: I dunno Scoob, it looks like they ran out of ScoobySnacks before we could get here.";
            }

            return(output);
        }