/// <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, }); }
/// <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); }