示例#1
0
        /// <summary>
        /// Возврат оплаты.
        /// </summary>
        /// <param name="amount"></param>
        /// <returns></returns>
        public PaymentResponse Return(decimal amount)
        {
            uint iAmount = (uint)(amount * 100);
            var  ans     = new AuthAnswer9
            {
                TType  = PilotNtTransType.Return,
                Amount = iAmount,
            };

            PilotNtInterop.CardAuthorize9(null, ref ans);

            var check    = ReadCheck(ans.Check);
            var encoding = Encoding.GetEncoding(1251);
            var code     = int.Parse(encoding.GetString(ans.Rcode).TrimEnd('\0'));
            var message  = encoding.GetString(ans.AMessage).TrimEnd('\0');
            var authCode = encoding.GetString(ans.AuthCode).TrimEnd('\0');

            return(new PaymentResponse
            {
                Checks = check,
                ResponseCode = code,
                ErrorMessage = message,
                AuthCode = authCode,
            });
        }
示例#2
0
        /// <summary>
        /// Проведение оплаты.
        /// Для завершения транзакции необходимо вызвать метод CommiTransaction
        /// </summary>
        /// <param name="amount"></param>
        /// <param name="suspendTransaction"></param>
        /// <returns></returns>
        public PaymentResponse Payment(decimal amount, bool suspendTransaction = true)
        {
            uint iAmount = (uint)(amount * 100);
            var  ans     = new AuthAnswer9
            {
                TType  = PilotNtTransType.Payment,
                Amount = iAmount,
            };

            PilotNtInterop.CardAuthorize9(null, ref ans);

            var check    = ReadCheck(ans.Check);
            var encoding = Encoding.GetEncoding(1251);
            var code     = int.Parse(encoding.GetString(ans.Rcode).TrimEnd('\0'));
            var message  = encoding.GetString(ans.AMessage).TrimEnd('\0');
            var authCode = encoding.GetString(ans.AuthCode).TrimEnd('\0');

            var response = new PaymentResponse
            {
                ResponseCode = code,
                ErrorMessage = message,
                AuthCode     = authCode,
                Checks       = check,
                CardHash     = ans.Hash,
            };

            if (response.IsSuccess && suspendTransaction)
            {
                PilotNtInterop.SuspendTrx(iAmount, ans.AuthCode);
            }

            return(response);
        }