public void CreateOutgoingInvoice(IOriginalOutgoingInvoice outgoingInvoice) { if (null == outgoingInvoice) { throw new ArgumentNullException(nameof(outgoingInvoice)); } var request = new OriginalInvoice(outgoingInvoice.OrderId, (WmId)outgoingInvoice.ClientIdentifier, Purse.Parse(outgoingInvoice.StorePurse), (Amount)outgoingInvoice.Amount) { Initializer = Session.AuthenticationService.ObtainInitializer() }; if (null != outgoingInvoice.Description) { request.Description = (Description)outgoingInvoice.Description; } if (null != outgoingInvoice.Address) { request.Address = (Description)outgoingInvoice.Address; } if (null != outgoingInvoice.ProtectionPeriod) { request.Period = outgoingInvoice.ProtectionPeriod.Value; } request.Expiration = outgoingInvoice.ExpirationPeriod; try { request.Submit(); } catch (WmException exception) { throw new ExternalServiceException(exception.Message, exception); } }
public override GT.BO.Implementation.BillingSystem.Transfer TopUp(decimal amount) { if (m_TargetWmId == null) { return null; } Transfer t = null; amount = amount.ToMoney(); if (amount > 0) { t = base.TopUp(amount); if (t != null) { OriginalInvoice oi = new OriginalInvoice((ulong)t.TransferId, m_TargetWmId, Purse.Parse(Configuration.Purse), Amount.Parse(amount.ToString()), new Info(TOPUP, false), new Info(ADDRESS, false)); GT.BO.Implementation.BillingSystem.WebMoneyTransfer wm = new GT.BO.Implementation.BillingSystem.WebMoneyTransfer(); wm.TransferId = t.TransferId; wm.TargetPurse = Configuration.Purse; try { RecentInvoice ri = oi.Submit(); if (ri != null) { int? msgId = Dictionaries.Instance.GetWebMoneyMessageIdByRetcodeAndType(0, (int)WebMoneyMessagesTypes.X1); if (msgId.HasValue) { wm.RetCode = msgId.Value; } wm.WmInvoiceId = (int)ri.Id; wm.PayerWmid = ri.SourceWmId.ToString(); wm.Description = ri.Description; wm.TransDate = ((DateTime)ri.CreateTime).ToUniversalTime(); WebMoneyTransferFacade.Add(wm); } } catch (WmException ex) { string note = null; int? messageId = Dictionaries.Instance.GetWebMoneyMessageIdByRetcodeAndType(ex.Number, (int)WebMoneyMessagesTypes.X1); if (messageId != null) { wm.RetCode = messageId.Value; wm.Description = ex.Message; note = Dictionaries.Instance.GetWebMoneyMessageById(messageId.Value); } else { wm.Description = String.Format("retcode = {0}; {1}", ex.Number, ex.Message); note = Dictionaries.Instance.GetWebMoneyDefaultSystemErrorMessage(); } WebMoneyTransferFacade.Add(wm); BillingSystemFacade.RefuseTransfer(t.TransferId, note); } } } return t; }