Пример #1
0
        internal void Fill(Native.PaymentInfo info)
        {
            captureMethod = info.CaptureMethod == Native.CaptureMethod.EMV
                                ? CaptureMethod.EMV
                                : CaptureMethod.Magstripe;
            status         = info.Decision == Native.Decision.Refused ? PaymentStatus.Rejected : PaymentStatus.Accepted;
            paymentMethod  = (PaymentMethod)info.ApplicationType;
            emv            = captureMethod == CaptureMethod.EMV ? GetString(info.EmvData, info.EmvDataLength) : null;
            pan            = GetString(info.Pan, info.PanLength);
            expirationDate = GetString(info.ExpirationDate);
            holderName     = info.HolderNameLength.ToInt32() > 0
                ? GetString(info.HolderName, info.HolderNameLength)
                : null;
            panSequenceNumber = info.PanSequenceNumber;
            pin         = null;
            pinKek      = null;
            isOnlinePin = info.IsOnlinePin != 0;
            requiredPin = info.PinRequired != 0;

            track1 = info.Track1Length.ToInt32() > 0 ? GetString(info.Track1, info.Track1Length) : null;
            track2 = GetString(info.Track2, info.Track2Length);
            track3 = info.Track3Length.ToInt32() > 0 ? GetString(info.Track3, info.Track3Length) : null;

            expirationDate = expirationDate.Substring(2, 2) + expirationDate.Substring(0, 2);
            if (holderName != null)
            {
                holderName = holderName.Trim().Split('/').Reverse().Aggregate((a, b) => a + ' ' + b);
            }

            if (requiredPin && isOnlinePin)
            {
                pin    = GetString(info.Pin);
                pinKek = GetString(info.PinKek);
            }
        }
Пример #2
0
        internal async Task <PaymentResult> HandlePaymentCallback(int error, Native.PaymentInfo info)
        {
            var result = new PaymentResult();

            if (error == 0)
            {
                result.Fill(info);
                await result.BuildAccepted(EncryptionKey);
            }
            else
            {
                result.BuildErrored(error);
            }

            return(result);
        }