/// <summary>
 /// Set Issued VNett resquest
 /// </summary>
 /// <param name="value">Issued VNett resquest</param>
 public void SetIssuedVNettRequest(IssueVNettVANRequest value)
 {
     this.issuedVNettRequest = value;
 }
Esempio n. 2
0
        // END EGE-85532



        /// <summary>
        /// Prepare new ENett Virtual Account Number (VAN)
        /// </summary>
        /// <param name="user">User</param>
        /// <param name="reader">ENettVANRequestReader</param>
        /// <returns>CompleteIssueVNettVANRequest</returns>
        /// The below method is used for RequestVAN
        public static CompleteIssueVNettVANRequest GetENettVANRequest(UserInfo user, ENettRequestVAN reader)
        {
            // Let's request a new VAN
            IssueVNettVANRequest         amdReq = new IssueVNettVANRequest();
            CompleteIssueVNettVANRequest retval = new CompleteIssueVNettVANRequest();

            // Will be returned from ECN
            // Get ECN details
            int issuedECN = Util.ConvertStringToInt(reader.ECN);

            // Generate a new reference
            string referenceId = GenerateENettTransactionID();

            retval.SetReferenceId(referenceId);

            amdReq.IntegratorReference = referenceId;
            amdReq.IntegratorCode      = GetIntegratorCode();
            amdReq.IntegratorAccessKey = GetIntegratorAccessKey();
            amdReq.RequesterECN        = GetRequestorECN();
            amdReq.IssuedToEcn         = issuedECN;

            amdReq.CountryCode  = reader.Market;
            amdReq.CurrencyCode = reader.Currency;
            amdReq.CardTypeName = CardTypeName;

            amdReq.FundingCurrencyCode        = reader.Currency;
            amdReq.MaximumAuthorisationAmount = Util.ConvertStringToLong(reader.MaxAuthAmount);
            string activationDate = Util.ConvertDateToString(Util.ConvertStringToDate(reader.ActivationDate, Const.ExpirationDateFormat), Const.DateFormat_yyyyMMdd);

            amdReq.ActivationDate = activationDate;
            amdReq.ExpiryDate     = Util.ConvertDateToString(Util.ConvertStringToDate(reader.ExpiryDate, Const.ExpirationDateFormat), Const.DateFormat_yyyyMMdd);
            amdReq.IsMultiUse     = Util.ConvertStringToBool(reader.IsMultiUse);

            long minumumAuthorisationAmount = Util.ConvertStringToLong(reader.MinAuthAmount);

            if (amdReq.IsMultiUse)
            {
                amdReq.IsMultiUseSpecified              = true;
                amdReq.MultiUseClosePercentage          = Util.ConvertStringToInt(reader.MultiUseClosePercentage);
                amdReq.MultiUseClosePercentageSpecified = true;
                minumumAuthorisationAmount              = 0L;
            }

            amdReq.MinimumAuthorisationAmount = minumumAuthorisationAmount;

            // Add user references
            amdReq.MerchantCategoryName = reader.MerchantCategory;
            amdReq.UserReference1       = referenceId;
            amdReq.UserReference2       = reader.UserName;
            amdReq.UserReference3       = reader.Product;



            string travelerName    = "Unknown";
            string travelerPercode = "Unknown";

            // We need here to return traveler code and name
            // It depends on which Enett implementation we are
            // in the phase 1, percode and traveler name are provided for one traveller
            //   <PerCode>2001</PerCode>
            //   <TravellerName>Sudhakar</TravellerName>
            // in phase 2, multiple travallers are sent
            // so we need to extract the main traveller
            // <Travellers>
            //    <Traveller>
            //      <IsMainTraveller>true</IsMainTraveller>
            //      <Name>Claire Burns</Name>
            //      ...
            //    </Traveller>
            // <//Travellers>
            //
            if (String.IsNullOrEmpty(reader.PerCode))
            {
                // We have on phase 2 with multiple travellers
                // we need to find the main traveler
                List <ENettRequestVAN.Traveller> travs = reader.Travellers;

                foreach (ENettRequestVAN.Traveller trav in travs)
                {
                    if (Util.ConvertStringToBool(trav.IsMainTraveller))
                    {
                        // This is the main traveller
                        travelerPercode = trav.Percode;
                        travelerName    = trav.Name;
                    }
                }
            }
            else
            {
                // We are in phase 1, only one traveler is provided
                travelerPercode = reader.PerCode;
                travelerName    = reader.TravellerName;
            }



            amdReq.UserReference4 = travelerName;
            amdReq.Username       = reader.UserName;


            UserReference[] str = new UserReference[5];
            str[0]       = new UserReference();
            str[0].Value = travelerPercode;
            str[1]       = new UserReference();
            str[1].Value = Util.ConvertDateToString(Util.ConvertStringToDate(reader.BookingDate, Const.ExpirationDateFormat), Const.DateFormat_yyyyMMdd);

            // Payment ID
            str[2]       = new UserReference();
            str[2].Value = reader.SupplierName;
            // Username
            str[3]       = new UserReference();
            str[3].Value = string.Empty;
            //>>EGE-6880
            // new User Refernce for Channel
            str[4]       = new UserReference();
            str[4].Value = reader.Channel;
            //<<EGE-6880

            amdReq.UserReferences = str;


            // Get message digest
            StringBuilder builder = new StringBuilder();

            builder.Append(GetClientAccessKey());
            builder.Append(referenceId);
            builder.Append(activationDate);
            builder.Append(CardTypeName);
            builder.Append(reader.Currency);
            builder.Append(issuedECN);
            builder.Append(reader.MaxAuthAmount);
            builder.Append(minumumAuthorisationAmount);
            builder.Append(reader.MerchantCategory);
            builder.Append(referenceId);
            builder.Append(reader.UserName);

            // Send message digest
            string msgDigest = builder.ToString();

            byte[] arr = Encoding.Default.GetBytes(msgDigest);
            amdReq.MessageDigest = SHA1HashEncode(arr);

            retval.SetIssuedVNettRequest(amdReq);

            return(retval);
        }