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