public GetStoredPaymentProfileResult GetStoredPaymentProfile(GetStoredPaymentProfileParameter parameter)
        {
            GetAllRecurringSaleInformationRequest getAllRecurringSaleInformationRequest = new GetAllRecurringSaleInformationRequest()
            {
                UserId       = this.UserId,
                Password     = this.Password,
                MerchantId   = this.MerchantId,
                CustomerCode = parameter.CustomerNumber
            };
            GetAllRecurringSaleInformationResponse reply  = (new AdministrationClient()).GetAllRecurringSaleInformation(getAllRecurringSaleInformationRequest);
            GetStoredPaymentProfileResult          result = new GetStoredPaymentProfileResult();

            if (reply.Result == 0)
            {
                RecurringAllSaleInformation paymentProfile = reply.RecurringSaleInformationList.FirstOrDefault <RecurringAllSaleInformation>((RecurringAllSaleInformation x) => x.RecurringSaleTokenId == parameter.PaymentProfileId);
                if (paymentProfile == null)
                {
                    return(result);
                }
                result.PaymentProfile = new PaymentProfileDto()
                {
                    PaymentProfileId = paymentProfile.RecurringSaleTokenId,
                    MaskedCardNumber = paymentProfile.ProtectedCardNumber,
                    Expiration       = paymentProfile.CardExpirationDate,
                    CardType         = paymentProfile.CardType
                };
                result.Success = true;
            }
            else
            {
                result.ResponseMessages.Add(string.Format("Transaction Failed: {0}", reply.Message));
            }
            return(result);
        }
Ejemplo n.º 2
0
        public AddPaymentProfileResult AddPaymentProfile(AddPaymentProfileParameter parameter)
        {
            UserProfileDto userProfileDto = SiteContext.Current.UserProfileDto;

            if (userProfileDto == null)
            {
                return(this.CreateErrorServiceResult <AddPaymentProfileResult>(SubCode.Forbidden, MessageProvider.Current.Forbidden));
            }
            UserProfile     userProfile    = this.UnitOfWork.GetRepository <UserProfile>().Get(userProfileDto.Id);
            IPaymentGateway paymentGateway = this.GetPaymentGateway();

            if (!paymentGateway.SupportsStoredPaymentProfiles)
            {
                return(this.CreateErrorServiceResult <AddPaymentProfileResult>(SubCode.NotSupported, string.Format(MessageProvider.Current.Not_Supported, "Stored Payment Profiles")));
            }
            GetBillToResult billToResult = this.GetBillTo(parameter.BillToId);

            if (billToResult.ResultCode != ResultCode.Success)
            {
                return(this.CreateErrorServiceResult <AddPaymentProfileResult>(billToResult.SubCode, billToResult.Message));
            }
            Customer billTo = billToResult.BillTo;

            StorePaymentProfileResult storePaymentProfileResult = paymentGateway.StorePaymentProfile(new StorePaymentProfileParameter()
            {
                CustomerProfileId = userProfile.GetProperty("StoredCustomerProfileId", string.Empty),
                CustomerNumber    = billTo.CustomerNumber,
                CurrencyCode      = parameter.CurrencyCode,
                BillToAddress     = CreateCreditCardAddress(billTo),
                CreditCard        = parameter.CreditCard
            });

            if (!storePaymentProfileResult.Success)
            {
                return(this.CreateErrorServiceResult <AddPaymentProfileResult>(SubCode.StorePaymentProfileFailed, string.Join(Environment.NewLine, storePaymentProfileResult.ResponseMessages)));
            }
            userProfile.SetProperty("StoredCustomerProfileId", storePaymentProfileResult.CustomerProfileId);
            GetStoredPaymentProfileResult getStoredPaymentProfileResult = paymentGateway.GetStoredPaymentProfile(new GetStoredPaymentProfileParameter()
            {
                CustomerNumber    = billTo.CustomerNumber,
                CustomerProfileId = storePaymentProfileResult.CustomerProfileId,
                PaymentProfileId  = storePaymentProfileResult.PaymentProfileId
            });

            if (getStoredPaymentProfileResult.Success)
            {
                this.AddUserPaymentProfile(userProfile, new UserPaymentProfile()
                {
                    CardIdentifier   = getStoredPaymentProfileResult.PaymentProfile.PaymentProfileId,
                    Description      = parameter.CreditCard.CardHolderName,//BUSA-462 : Ability to save Credit Cards (in CenPos) and offer it to users.
                    CardType         = parameter.CreditCard.CardType,
                    MaskedCardNumber = getStoredPaymentProfileResult.PaymentProfile.MaskedCardNumber,
                    ExpirationDate   = getStoredPaymentProfileResult.PaymentProfile.Expiration
                });
            }
            return(new AddPaymentProfileResult());
        }