Example #1
0
        public IMerchantPayment FindPayment(string purse, long number,
                                            Contracts.BasicTypes.PaymentNumberKind numberKind)
        {
            if (null == purse)
            {
                throw new ArgumentNullException(nameof(purse));
            }

            var request = new MerchantOperationObtainer(Purse.Parse(purse), number,
                                                        ConvertFrom.ContractTypeToApiType(numberKind))
            {
                Initializer = CreateInitializer(purse)
            };

            MerchantOperation response;

            try
            {
                response = request.Submit();
            }
            catch (WmException exception)
            {
                throw new ExternalServiceException(exception.Message, exception);
            }

            var merchantPayment = new MerchantPayment(response.TransferId, response.InvoiceId,
                                                      response.Amount, response.CreateTime.ToUniversalTime(), response.Description, response.SourceWmId,
                                                      response.SourcePurse.ToString())
            {
                IsCapitaller  = response.CapitallerFlag,
                IsEnum        = response.EnumFlag,
                IPAddress     = response.IpAddress,
                TelepatPhone  = response.TelepatPhone,
                PaymerNumber  = response.PaymerNumber,
                PaymerEmail   = response.PaymerEmail,
                CashierNumber = response.CashierNumber,
                CashierDate   = response.CashierDate?.ToUniversalTime(),
                CashierAmount = response.CashierAmount,
            };


            if (null != response.TelepatMethod)
            {
                merchantPayment.TelepatMethod = ConvertFrom.ApiTypeToContractType(response.TelepatMethod.Value);
            }

            if (XmlInterfaces.BasicObjects.PaymerType.None != response.PaymerType)
            {
                merchantPayment.PaymerType = ConvertFrom.ApiTypeToContractType(response.PaymerType);
            }

            // TODO [L] Расшифровать тип e-invoicing платежа.
            if (null != response.SdpType)
            {
                merchantPayment.InvoicingMethod = (byte)response.SdpType.Value;
            }

            return(merchantPayment);
        }
Example #2
0
        public static XmlInterfaces.BasicObjects.PaymentNumberKind ContractTypeToApiType(
            Contracts.BasicTypes.PaymentNumberKind contractType)
        {
            switch (contractType)
            {
            case Contracts.BasicTypes.PaymentNumberKind.Auto:
                return(XmlInterfaces.BasicObjects.PaymentNumberKind.Unknown);

            case Contracts.BasicTypes.PaymentNumberKind.OrderId:
                return(XmlInterfaces.BasicObjects.PaymentNumberKind.OrderId);

            case Contracts.BasicTypes.PaymentNumberKind.InvoicePrimaryId:
                return(XmlInterfaces.BasicObjects.PaymentNumberKind.InvoicePrimaryId);

            case Contracts.BasicTypes.PaymentNumberKind.TransferPrimaryId:
                return(XmlInterfaces.BasicObjects.PaymentNumberKind.TransferPrimaryId);

            default:
                throw new ArgumentOutOfRangeException(nameof(contractType));
            }
        }