/// <summary> /// Responsible for creating a /// </summary> /// <param name="gatewayResource"> /// The gateway resource. /// </param> /// <param name="name"> /// The name. /// </param> /// <param name="description"> /// The description. /// </param> /// <returns> /// The <see cref="IPaymentGatewayMethod"/>. /// </returns> public override IPaymentGatewayMethod CreatePaymentMethod(IGatewayResource gatewayResource, string name, string description) { var available = ListResourcesOffered().FirstOrDefault(x => x.ServiceCode == gatewayResource.ServiceCode); if (available == null) { var error = new InvalidOperationException("The GatewayResource has already been assigned."); LogHelper.Error <SagePayPaymentGatewayProvider>("GatewayResource has alread been assigned", error); throw error; } var attempt = GatewayProviderService.CreatePaymentMethodWithKey(GatewayProviderSettings.Key, name, description, available.ServiceCode); if (attempt.Success) { PaymentMethods = null; return(available.ServiceCode == "SagePay Form" ? (IPaymentGatewayMethod) new SagePayFormPaymentGatewayMethod(GatewayProviderService, attempt.Result, GatewayProviderSettings.ExtendedData) : new SagePayDirectPaymentGatewayMethod(GatewayProviderService, attempt.Result, GatewayProviderSettings.ExtendedData)); } LogHelper.Error <SagePayPaymentGatewayProvider>(string.Format("Failed to create a payment method name: {0}, description {1}, paymentCode {2}", name, description, available.ServiceCode), attempt.Exception); throw attempt.Exception; }
/// <summary> /// Creates a <see cref="IPaymentGatewayMethod"/> /// </summary> /// <param name="gatewayResource">The <see cref="IGatewayResource"/> implemented by this method</param> /// <param name="name">The name of the payment method</param> /// <param name="description">The description of the payment method</param> /// <returns>A <see cref="IPaymentGatewayMethod"/></returns> public override IPaymentGatewayMethod CreatePaymentMethod(IGatewayResource gatewayResource, string name, string description) { var paymentCode = gatewayResource.ServiceCode + "-" + Guid.NewGuid(); var attempt = GatewayProviderService.CreatePaymentMethodWithKey(GatewayProviderSettings.Key, name, description, paymentCode); if (attempt.Success) { PaymentMethods = null; return(new CashPaymentGatewayMethod(GatewayProviderService, attempt.Result)); } LogHelper.Error <CashPaymentGatewayProvider>(string.Format("Failed to create a payment method name: {0}, description {1}, paymentCode {2}", name, description, paymentCode), attempt.Exception); throw attempt.Exception; }
/// <summary> /// Creates a <see cref="IPaymentGatewayMethod"/> /// </summary> /// <param name="gatewayResource"> /// The gateway Resource. /// </param> /// <param name="name"> /// The name of the payment method /// </param> /// <param name="description"> /// The description of the payment method /// </param> /// <returns> /// A <see cref="IPaymentGatewayMethod"/> /// </returns> public override IPaymentGatewayMethod CreatePaymentMethod(IGatewayResource gatewayResource, string name, string description) { // assert gateway resource is still available var available = ListResourcesOffered().FirstOrDefault(x => x.ServiceCode == gatewayResource.ServiceCode); if (available == null) { throw new InvalidOperationException("GatewayResource has already been assigned"); } var attempt = GatewayProviderService.CreatePaymentMethodWithKey(GatewayProviderSettings.Key, name, description, available.ServiceCode); if (attempt.Success) { PaymentMethods = null; return(new AuthorizeNetPaymentGatewayMethod(GatewayProviderService, attempt.Result, GatewayProviderSettings.ExtendedData)); } LogHelper.Error <AuthorizeNetPaymentGatewayProvider>(string.Format("Failed to create a payment method name: {0}, description {1}, paymentCode {2}", name, description, available.ServiceCode), attempt.Exception); throw attempt.Exception; }
/// <summary> /// Creates a <see cref="IPaymentGatewayMethod"/> for this provider. /// </summary> /// <param name="gatewayResource"> /// The gateway resource. /// </param> /// <param name="name"> /// The name. /// </param> /// <param name="description"> /// The description. /// </param> /// <returns> /// The <see cref="IPaymentGatewayMethod"/>. /// </returns> public override IPaymentGatewayMethod CreatePaymentMethod(IGatewayResource gatewayResource, string name, string description) { var available = ListResourcesOffered().FirstOrDefault(x => x.ServiceCode == gatewayResource.ServiceCode); if (available == null) { var error = new InvalidOperationException("The GatewayResource has already been assigned."); LogHelper.Error <BraintreePaymentGatewayProvider>("GatewayResource has alread been assigned", error); throw error; } var attempt = GatewayProviderService.CreatePaymentMethodWithKey(GatewayProviderSettings.Key, name, description, available.ServiceCode); if (attempt.Success) { PaymentMethods = null; switch (available.ServiceCode) { case Constants.PaymentCodes.VaultTransaction: return(new BraintreeVaultTransactionPaymentGatewayMethod(this.GatewayProviderService, attempt.Result, this.GetBraintreeApiService())); case Constants.PaymentCodes.RecordSubscriptionTransaction: return(new BraintreeSubscriptionRecordPaymentMethod(GatewayProviderService, attempt.Result, this.GetBraintreeApiService())); default: return(new BraintreeStandardTransactionPaymentGatewayMethod(GatewayProviderService, attempt.Result, this.GetBraintreeApiService())); } } LogHelper.Error <BraintreePaymentGatewayProvider>(string.Format("Failed to create a payment method name: {0}, description {1}, paymentCode {2}", name, description, available.ServiceCode), attempt.Exception); throw attempt.Exception; }