Пример #1
0
        public ResultGetOperations GetOperation(string merchantTransactionId)
        {
            //Consulta del balance en la cuenta del usuario.
            string Hash        = "";
            string UniqueID    = Guid.NewGuid().ToString();
            string OperationId = merchantTransactionId;
            string StartDate   = null;
            string EndDate     = null;

            //Creamos una instancia del objeto APICredential
            APICredential Credential = new APICredential();

            Credential.APIPassword = ConfigurationManager.AppSettings["APIPassword"];
            Credential.APIUserName = "******";

            //preparamos la cadena de texto a utilizar en el hash
            Hash = merchantTransactionId + UniqueID + OperationId + StartDate + EndDate + Credential.APIPassword.ToString();

            DMCrypt CryptObject = new DMCrypt();

            Hash = CryptObject.GetHashMD5(Hash);
            DMAPISoapClient Client = new DMAPISoapClient();

            //consulta el servicio web
            return(Client.GetOperations(Credential, false, merchantTransactionId, OperationId, StartDate, EndDate, UniqueID, Hash));
        }
        /// <summary>
        ///     GetBalance: Consulta del balance en la cuenta del usuario.
        /// </summary>
        /// <param name="APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="Hash">Cadena a encriptar</param>
        /// <returns>
        ///     GetBalanceResult: (Status, Message, Currency, Amount)
        /// </returns>
        public string GetBalance()
        {
            String APIPassword           = "******";
            String APIUserName           = "******";
            bool   Crypt                 = false;
            String MerchantTransactionId = "1";
            String UniqueMessageId       = "18";
            String Hash = "";

            DMCrypt Crypto = new DMCrypt();

            ws.dineromail.api.DMAPI ClientApi = new ASP.NET.ws.dineromail.api.DMAPI();

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            ws.dineromail.api.APICredential Credential = new ASP.NET.ws.dineromail.api.APICredential();
            Credential.APIUserName = APIUserName;
            Credential.APIPassword = APIPassword;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            Hash = MerchantTransactionId + UniqueMessageId + Credential.APIPassword;
            Hash = Crypto.GetHashMD5(Hash);


            //si se desea enviar encriptado
            if (Crypt)
            {
                // Los datos de la API viajarán con una encriptación del tipo TripleDES
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
            }

            // Consultamos el servicio web
            // Llamamos al Metodo GetBalance de la API de DineroMail
            ws.dineromail.api.ResultGetBalance BalanceResult = ClientApi.GetBalance(Credential
                                                                                    , Crypt
                                                                                    , MerchantTransactionId
                                                                                    , UniqueMessageId
                                                                                    , Hash);

            //mostramos la respuesta de la operación en pantalla.
            String sResult = "Status: " + BalanceResult.Status.ToString() + "<br>";

            sResult += "Message: " + BalanceResult.Message.ToString() + "<br>";
            sResult += "MerchantTransactionId: " + BalanceResult.MerchantTransactionId.ToString() + "<br>";
            sResult += "UniqueMessageId: " + BalanceResult.UniqueMessageId.ToString() + "<br>";

            if (BalanceResult.Status.ToString() == "OK")
            {
                sResult = sResult + "TransactionId: " + BalanceResult.TransactionId.ToString() + "<br>";
                sResult = sResult + "Amount: " + BalanceResult.Balance[0].Amount.ToString() + "<br>";
                sResult = sResult + "Currency: " + BalanceResult.Balance[0].Currency.ToString();
            }

            return(sResult);
        }
Пример #3
0
        /// <summary>
        ///     DoWithDraw: Realizar "Retiro de fondos" de la cuenta de DineroMail
        /// </summary>
        /// <param name="APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="Currency">Moneda del importe a retirar</param>
        /// <param name="Amount">Importe a retirar</param>
        /// <param name="Method">Identificador del método a utilizar para el retiro defondos</param>
        /// <param name="AddressDetail">
        ///     => Street: Calle donde recibirá el cheque
        ///     => Number: Altura de la calle donde recibirá el cheque
        ///     => Floor: Piso en caso de vivir en edificio.
        ///     => Appartment: Departamento.
        ///     => Zip: Código postal.
        ///     => City: Identificador de Ciudad
        ///     => State: Identificador de Estado o provincia
        /// </param>
        /// <param name="BankAccountDetail">
        ///     => Bank: Identificador del banco
        ///     => BankNumber: Número de la cuenta bancaria
        ///     => Branch: Solamente necesario en Brasil. Por defecto enviar 0 cero.
        ///     => DocumentNumber: Número de documento del titular
        ///     => DocumentType: Tipo de documento del titular
        ///     => LastName: Apellido del titular de la cuenta bancaria
        ///     => Name: Nombre del titular de la cuenta bancaria
        ///     => Type: Identifica el tipo de cuenta bancaria
        ///  </param>
        /// <param name="Hash">Cadena a encriptar</param>
        /// <returns>
        ///     Estado de la operación
        /// </returns>
        public string DoWithDraw()
        {
            //Consulta del balance en la cuenta del usuario.
            string APIPassword           = "******";
            string APIUserName           = "******";
            bool   Crypt                 = true;
            string MerchantTransactionId = "1";
            string UniqueMessageId       = "1";
            string Currency              = "BRL";
            string Amount                = "20,52";
            string sMethod               = "BANK";
            string Hash = "";

            // Detalla la dirección de entrega
            ws.dineromail.api.AddressDetail oAddress = new ws.dineromail.api.AddressDetail()
            {
                Street     = "CALLE1",
                Number     = "123",
                Floor      = "1",
                State      = "BRASILIA",
                City       = "CIUDAD",
                Appartment = "A",
                Zip        = "123"
            };

            // Detalla la cuenta bancaria
            ws.dineromail.api.BankAccountDetail oBankDetail = new ws.dineromail.api.BankAccountDetail()
            {
                Bank           = "BANCO",
                BankNumber     = "12341234",
                Branch         = "1",
                DocumentNumber = "29000000",
                DocumentType   = "1",
                LastName       = "APELLIDO",
                Name           = "NOMBRE",
                Type           = "CA"
            };

            DMCrypt Crypto = new DMCrypt();

            ws.dineromail.api.DMAPI Client = new ws.dineromail.api.DMAPI();

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            ws.dineromail.api.APICredential Credential = new ws.dineromail.api.APICredential();
            Credential.APIPassword = APIPassword;
            Credential.APIUserName = APIUserName;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            string sFullAddressDetail     = oAddress.Street + oAddress.Number + oAddress.Floor + oAddress.Appartment + oAddress.Zip + oAddress.City + oAddress.State;
            string sFullBankAccountDetail = oBankDetail.Bank + oBankDetail.BankNumber + oBankDetail.Type + oBankDetail.Name + oBankDetail.LastName + oBankDetail.DocumentType + oBankDetail.DocumentNumber + oBankDetail.Branch;

            Hash = MerchantTransactionId + UniqueMessageId + sMethod + Currency + Amount + sFullAddressDetail + sFullBankAccountDetail + Credential.APIPassword.ToString();
            Hash = Crypto.GetHashMD5(Hash);

            //si se desea enviar encriptado
            if (Crypt)
            {
                // Los datos de la API viajarán con una encriptación del tipo TripleDES
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                Currency = Crypto.Encrypt(Currency);
                Amount   = Crypto.Encrypt(Amount);
                sMethod  = Crypto.Encrypt(sMethod);

                oAddress.Number     = Crypto.Encrypt(oAddress.Number);
                oAddress.State      = Crypto.Encrypt(oAddress.State);
                oAddress.Street     = Crypto.Encrypt(oAddress.Street);
                oAddress.Zip        = Crypto.Encrypt(oAddress.Zip);
                oAddress.Floor      = Crypto.Encrypt(oAddress.Floor);
                oAddress.City       = Crypto.Encrypt(oAddress.City);
                oAddress.Appartment = Crypto.Encrypt(oAddress.Appartment);

                oBankDetail.Bank           = Crypto.Encrypt(oBankDetail.Bank);
                oBankDetail.BankNumber     = Crypto.Encrypt(oBankDetail.BankNumber);
                oBankDetail.Branch         = Crypto.Encrypt(oBankDetail.Branch);
                oBankDetail.DocumentNumber = Crypto.Encrypt(oBankDetail.DocumentNumber);
                oBankDetail.DocumentType   = Crypto.Encrypt(oBankDetail.DocumentType);
                oBankDetail.LastName       = Crypto.Encrypt(oBankDetail.LastName);
                oBankDetail.Name           = Crypto.Encrypt(oBankDetail.Name);
                oBankDetail.Type           = Crypto.Encrypt(oBankDetail.Type);
            }

            // Consultamos el servicio web
            // Llamamos al Metodo DoWithDraw de la API de DineroMail
            ws.dineromail.api.ResultDoWithDraw WithDrawResult = Client.DoWithDraw(Credential
                                                                                  , Crypt
                                                                                  , MerchantTransactionId
                                                                                  , sMethod
                                                                                  , Currency
                                                                                  , Amount
                                                                                  , oAddress
                                                                                  , oBankDetail
                                                                                  , UniqueMessageId
                                                                                  , Hash);

            // mostramos la respuesta de la operación en pantalla.
            string sResult = "Status: " + WithDrawResult.Status.ToString() + "<br>";

            sResult = sResult + "Message: " + WithDrawResult.Message.ToString() + "<br>";
            sResult = sResult + "MerchantTransactionId: " + WithDrawResult.MerchantTransactionId.ToString() + "<br>";
            sResult = sResult + "UniqueMessageId: " + WithDrawResult.UniqueMessageId.ToString() + "<br>";

            if (WithDrawResult.Status.ToString() == "PENDING")
            {
                sResult = sResult + "TransactionId: " + WithDrawResult.TransactionId.ToString() + "<br>";
            }

            return(sResult);
        }
        public string DoPaymentWithReference()
        {
            string APIPassword           = "******";
            string APIUserName           = "******";
            bool   Crypt                 = false;
            string MerchantTransactionId = "1";
            string UniqueMessageId       = "18";
            string Hash     = "";
            string Subject  = "Subject Test";
            string Message  = "Message Test";
            string Provider = "pagofacil";

            DMCrypt Crypto = new DMCrypt();

            ws.dineromail.api.DMAPI ClientApi = new ASP.NET.ws.dineromail.api.DMAPI();
            ws.dineromail.api.Item  oItem     = new ASP.NET.ws.dineromail.api.Item();
            //Creamos una instancia del objeto APICredential
            ws.dineromail.api.APICredential Credential = new ws.dineromail.api.APICredential();

            oItem.Amount      = "25.52";
            oItem.Code        = "A001";
            oItem.Currency    = "USD";
            oItem.Description = "Producto A001";
            oItem.Name        = "LCD Monitor";
            oItem.Quantity    = "2";

            ws.dineromail.api.Item[] oItems = { oItem };

            ws.dineromail.api.Buyer oBuyer = new ws.dineromail.api.Buyer();
            oBuyer.Address  = "Charcas 2034";
            oBuyer.City     = "Buenos Aires";
            oBuyer.Country  = "Argentina";
            oBuyer.Email    = "*****@*****.**";
            oBuyer.LastName = "Lopez";
            oBuyer.Name     = "Carlos Ruben";
            oBuyer.Phone    = "45556565";

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            Credential.APIUserName = APIUserName;
            Credential.APIPassword = APIPassword;

            //preparamos la cadena de texto a utilizar en el hash
            string sConcatItem = oItem.Amount + oItem.Code + oItem.Currency + oItem.Description + oItem.Name + oItem.Quantity;

            string sConcatBuyer = oBuyer.Name + oBuyer.LastName + oBuyer.Email + oBuyer.Address + oBuyer.Phone + oBuyer.Country + oBuyer.City;

            Hash = MerchantTransactionId + UniqueID + sConcatItem + sConcatBuyer + Provider + Subject + Message + Credential.APIPassword.ToString();

            //si se desea enviar encriptado
            if (Crypt)
            {
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                Provider = Crypto.Encrypt(Provider);
                Subject  = Crypto.Encrypt(Subject);
                Message  = Crypto.Encrypt(Message);

                foreach (ws.dineromail.api.Item Item in oItems)
                {
                    oItem.Amount      = Crypto.Encrypt(oItem.Amount);
                    oItem.Code        = Crypto.Encrypt(oItem.Code);
                    oItem.Currency    = Crypto.Encrypt(oItem.Currency);
                    oItem.Description = Crypto.Encrypt(oItem.Description);
                    oItem.Name        = Crypto.Encrypt(oItem.Name);
                    oItem.Quantity    = Crypto.Encrypt(oItem.Quantity);
                }
                oBuyer.Name     = Crypto.Encrypt(oBuyer.Name);
                oBuyer.LastName = Crypto.Encrypt(oBuyer.LastName);
                oBuyer.Email    = Crypto.Encrypt(oBuyer.Email);
                oBuyer.Address  = Crypto.Encrypt(oBuyer.Address);
                oBuyer.Phone    = Crypto.Encrypt(oBuyer.Phone);
                oBuyer.Country  = Crypto.Encrypt(oBuyer.Country);
                oBuyer.City     = Crypto.Encrypt(oBuyer.City);
            }

            Hash = Crypto.GetHashMD5(Hash);

            //consultamos el servicio web
            ws.dineromail.api.ResultDoPaymentWithReference PaymentWithReferenceResult = ClientApi.DoPaymentWithReference(Credential, Crypt, MerchantTransactionId, oItems, oBuyer, Provider, Subject, Message, UniqueMessageId, Hash);

            //mostramos la respuesta de la operación en pantalla.
            string sResult = "Status: " + PaymentWithReferenceResult.Status.ToString() + "<br>";

            sResult = sResult + "Message: " + PaymentWithReferenceResult.Message.ToString() + "<br>";
            sResult = sResult + "MerchantTransactionId: " + PaymentWithReferenceResult.MerchantTransactionId.ToString() + "<br>";
            sResult = sResult + "UniqueMessageId: " + PaymentWithReferenceResult.UniqueMessageId.ToString() + "<br>";
            if (PaymentWithReferenceResult.Status.ToString() == "COMPLETED")
            {
                sResult = sResult + "TransactionId: " + PaymentWithReferenceResult.TransactionId.ToString() + "<br>";
                sResult = sResult + "BarcodeDigits: " + PaymentWithReferenceResult.BarcodeDigits + "<br>";
                sResult = sResult + "UrlImage: " + PaymentWithReferenceResult.BarcodeImageUrl.ToString() + "<br>";
                sResult = sResult + "Voucher: " + PaymentWithReferenceResult.VoucherUrl.ToString();
            }

            return(sResult);
        }
        /// <summary>
        ///     Refund: Realizar Reembolsos
        /// </summary>
        /// <param name="$APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="$APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="$Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="$MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="$UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="$RefundedMerchantTransactionId">Identificador transacción correspondiente a la reembolso</param>
        /// <param name="$Hash">Cadena a encriptar</param>
        /// <returns>
        ///     Estado de la Operación
        /// </returns>
        public string Refund()
        {
            String APIPassword           = "******";
            String APIUserName           = "******";
            bool   Crypt                 = false;
            String MerchantTransactionId = "14324234";
            String UniqueMessageId       = "7398234234997";
            String Currency              = "ARG";
            String Amount                = "10.40";
            String Subject               = "Subject";
            String Message               = "Message";
            String Hash = "";

            DMCrypt Crypto = new DMCrypt();

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            APICredential Credential = new APICredential();

            Credential.APIUserName = APIUserName;
            Credential.APIPassword = APIPassword;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            Hash = MerchantTransactionId + UniqueMessageId + Currency + Amount + Subject + Message + APIPassword;
            Hash = Crypto.GetHashMD5(Hash);

            //si se desea enviar encriptado
            if (Crypt)
            {
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                Currency        = Crypto.Encrypt(Currency);
                Amount          = Crypto.Encrypt(Amount);
                Subject         = Crypto.Encrypt(Subject);
                Message         = Crypto.Encrypt(Message);
                UniqueMessageId = Crypto.Encrypt(UniqueMessageId);
            }

            DMAPI ClientApi = new DMAPI();

            // Consultamos el servicio web
            // Llamamos al Metodo GetBalance de la API de DineroMail
            ResultRefund RefundResult = ClientApi.Refund(Credential,
                                                         Crypt,
                                                         MerchantTransactionId,
                                                         Currency,
                                                         Amount,
                                                         Subject,
                                                         Message,
                                                         UniqueMessageId,
                                                         Hash);

            //mostramos la respuesta de la operación en pantalla.
            String sResult = "Status: " + RefundResult.Status.ToString() + "<br>";

            sResult += "Message: " + RefundResult.Message.ToString() + "<br>";
            sResult += "MerchantTransactionId: " + RefundResult.MerchantTransactionId.ToString() + "<br>";
            sResult += "TransactionId: " + RefundResult.TransactionId.ToString() + "<br>";

            return(sResult);
        }
        // <summary>
        //      DoPaymentWithReference: "Realizar pago" de Botón o Carrito de compras, con códigos de barra.
        // </summary>
        // <param name="apiPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        // <param name="apiUserName">Usuario para la identificacion en la API de DineroMail</param>
        // <param name="crypt">Indica si se envian los datos encriptados</param>
        // <param name="merchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        // <param name="uniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>

        // <param name="provider">Identifica el proveedor con el cual se desea realizar el pago</param>
        // <param name="subject">Concepto o asunto del comprador hacia el vendedor</param>
        // <param name="message">Mensaje del comprador hacia el vendedor</param>

        // <param name="currency">Identificador de la moneda para el ítem</param>
        // <param name="amount">Importe del ítem</param>
        // <param name="code">Identificador generado por el comercio</param>
        // <param name="description">Descripción del ítem</param>
        // <param name="itemName">Nombre o titulo del ítem</param>
        // <param name="quantity">Cantidad de ítems a pagar</param>

        // <param name="address">Dirección del comprador</param>
        // <param name="city">Ciudad o provincia del comprador</param>
        // <param name="country">País del comprador</param>
        // <param name="email">Email del comprador</param>
        // <param name="name">Nombre del comprador</param>
        // <param name="lastName">Apellido del comprador</param>
        // <param name="phone">Teléfono del comprador</param>

        // <param name="ccAddress">Dirección del comprador</param>
        // <param name="ccAddressComplement">Dirección del comprador</param>
        // <param name="ccAddressNumber">Dirección del comprador</param>
        // <param name="ccCity">Ciudad o provincia del comprador</param>
        // <param name="ccCountry">País del comprador</param>
        // <param name="ccNeighborhood">Email del comprador</param>
        // <param name="ccState">Nombre del comprador</param>
        // <param name="ccZipCode">Apellido del comprador</param>
        // <param name="ccBankId">Teléfono del comprador</param>

        // <param name="ccCreditCardNumber">Dirección del comprador</param>
        // <param name="ccDocumentNumber">Dirección del comprador</param>
        // <param name="ccExpirationDate">Dirección del comprador</param>
        // <param name="ccHolder">Ciudad o provincia del comprador</param>
        // <param name="ccInstallment">País del comprador</param>
        // <param name="ccSecurityCode">Email del comprador</param>

        // <param name="hash">Cadena a encriptar</param>
        // <returns>
        //      BarcodeDigits, BarcodeImageUrl, VoucherUrl
        // </returns>
        private string _DoPaymentWithCreditCard()
        {
            String  apiPassword           = "******";
            String  apiUserName           = "******";
            Boolean crypt                 = true;
            String  merchantTransactionId = "1";
            String  uniqueMessageId       = "1";

            String provider = "AR_MASTER";
            String subject  = "Subject";
            String message  = "Message";

            String currency    = "BRL";
            String amount      = "10.40";
            String code        = "A001";
            String description = "Product A001";
            String itemName    = "LCD Monitor";
            String quantity    = "1";

            String address  = "123";
            String city     = "Brasilia";
            String country  = "Brasilia";
            String email    = "*****@*****.**";
            String name     = "Carlos";
            String lastName = "Lopez";
            String phone    = "12341234";

            String ccAddress           = "Street";
            String ccAddressComplement = "";
            String ccAddressNumber     = "123";
            String ccCity         = "";
            String ccCountry      = "";
            String ccNeighborhood = "";
            String ccState        = "";
            String ccZipCode      = "";
            Int32  ccBankId       = 0;

            String ccCreditCardNumber = "5114920090135851";
            String ccDocumentNumber   = "27000000";
            String ccExpirationDate   = "11/14";
            String ccHolder           = "test";
            String ccInstallment      = "1";
            String ccSecurityCode     = "111";

            String hash = "";

            ResultDoPaymentWithCreditCard result = new ResultDoPaymentWithCreditCard();
            DMCrypt Crypto    = new DMCrypt();
            DMAPI   ClientApi = new DMAPI();

            try {
                // Creamos una instancia del objeto APICredential
                // La Credential es la tarjeta de acceso a la API de DineroMail
                APICredential Credential = new APICredential();
                Credential.APIUserName = apiPassword;
                Credential.APIPassword = apiPassword;

                // El Hash es el cálculo MD5 de los valores
                // de los siguientes parámetros en orden especificado.
                String items      = amount + code + currency + description + itemName + quantity;
                String buyer      = name + lastName + email + address + phone + country + city;
                String creditCard = ccInstallment + ccCreditCardNumber + ccHolder + ccExpirationDate +
                                    ccSecurityCode + ccDocumentNumber + ccAddress + ccAddressNumber +
                                    ccAddressComplement + ccZipCode + ccNeighborhood + ccCity +
                                    ccState + ccCountry;

                hash = merchantTransactionId + uniqueMessageId + items + buyer + creditCard +
                       provider + subject + message + apiPassword;

                hash = Crypto.GetHashMD5(hash);

                if (crypt)
                {
                    // Los datos de la API viajarán con una encriptación del tipo TripleDES
                    Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                    merchantTransactionId = Crypto.Encrypt(merchantTransactionId);
                    uniqueMessageId       = Crypto.Encrypt(uniqueMessageId);
                    currency = Crypto.Encrypt(currency);
                    amount   = Crypto.Encrypt(amount);
                    provider = Crypto.Encrypt(provider);
                    subject  = Crypto.Encrypt(subject);
                    message  = Crypto.Encrypt(message);
                    currency = Crypto.Encrypt(currency);
                    amount   = Crypto.Encrypt(amount);
                    code     = Crypto.Encrypt(code);
                    itemName = Crypto.Encrypt(itemName);
                    quantity = Crypto.Encrypt(quantity);
                    address  = Crypto.Encrypt(address);
                    city     = Crypto.Encrypt(city);
                    country  = Crypto.Encrypt(country);
                    email    = Crypto.Encrypt(email);
                    name     = Crypto.Encrypt(name);
                    lastName = Crypto.Encrypt(lastName);
                    phone    = Crypto.Encrypt(phone);
                }

                Item oItem = new Item();
                oItem.Amount      = amount;
                oItem.Code        = code;
                oItem.Currency    = currency;
                oItem.Description = description;
                oItem.Name        = itemName;
                oItem.Quantity    = quantity;

                Item[] oItemList = { oItem };

                Buyer oBuyer = new Buyer();
                oBuyer.Address  = address;
                oBuyer.City     = city;
                oBuyer.Country  = country;
                oBuyer.Email    = email;
                oBuyer.LastName = lastName;
                oBuyer.Name     = name;
                oBuyer.Phone    = phone;

                CreditCard oCard = new CreditCard();
                oCard.Installment       = ccInstallment;
                oCard.CreditCardNumber  = ccCreditCardNumber;
                oCard.DocumentNumber    = ccDocumentNumber;
                oCard.Holder            = ccHolder;
                oCard.ExpirationDate    = ccExpirationDate;
                oCard.SecurityCode      = ccSecurityCode;
                oCard.Address           = ccAddress;
                oCard.AddressNumber     = ccAddressNumber;
                oCard.AddressComplement = ccAddressComplement;
                oCard.ZipCode           = ccZipCode;
                oCard.Neighborhood      = ccNeighborhood;
                oCard.City    = ccCity;
                oCard.State   = ccState;
                oCard.Country = ccCountry;
                oCard.BankId  = ccBankId;

                // La Credential es la tarjeta de acceso a la API de DineroMail
                APICredential credential = new APICredential();
                credential.APIUserName = apiUserName;
                credential.APIPassword = apiPassword;

                // Llamamos al Metodo doPaymentWithCreditCard de la API de DineroMail
                result = ClientApi.DoPaymentWithCreditCard(credential
                                                           , crypt
                                                           , merchantTransactionId
                                                           , oItemList
                                                           , oBuyer
                                                           , provider
                                                           , oCard
                                                           , subject
                                                           , message
                                                           , uniqueMessageId
                                                           , hash);

                // Mostramos en pantalla el resultado de la operación.
                string sResult = "MerchantTransactionId: " + result.MerchantTransactionId + "<br/>";
                sResult += "TransactionId: " + result.TransactionId + "<br/>";
                sResult += "Status: " + result.Status.ToString() + "<br/>";
                sResult += "Message: " + result.Message + "<br/>";
                sResult += "UniqueMessageId: " + result.UniqueMessageId + "<br/>";
                sResult += "VoucherUrl: " + result.VoucherUrl + "<br/>";

                return(sResult);
            } catch (Exception ex) {
                return(ex.Message);
            }
        }
        /// <summary>
        ///         GetPaymentTicket: Permite obtener un cupón de pago de cualquier proveedor de código de barras y lo asigna al comercio.
        /// </summary>
        /// <param name="$APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="$APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="$Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="$MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="$UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="$Provider">Identifica el proveedor con el cual se desea realizar el pago</param>
        /// <param name="$Currency">Identificador de la moneda para el importe a enviar</param>
        /// <param name="$Amount">Importe a enviar</param>
        /// <param name="$Hash">Cadena a encriptar</param>
        /// <returns>
        ///		Estado de la operación
        /// </returns>
        public string GetPaymentTicket()
        {
            DMCrypt Crypto = new DMCrypt();

            String APIPassword           = "******";
            String APIUserName           = "******";
            bool   Crypt                 = true;
            String MerchantTransactionId = "1";
            String UniqueMessageId       = "1";
            String Currency              = "USD";
            String Amount                = "10.55";
            String Provider              = "servipag";
            String Hash = "";

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            APICredential Credential = new APICredential();

            Credential.APIPassword = APIPassword;
            Credential.APIUserName = APIUserName;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            Hash = MerchantTransactionId + UniqueMessageId + Currency + Amount + Provider + Credential.APIPassword;
            Hash = Crypto.GetHashMD5(Hash);

            //si se desea enviar encriptado
            if (Crypt)
            {
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                Currency = Crypto.Encrypt(Currency);
                Amount   = Crypto.Encrypt(Amount);
                Provider = Crypto.Encrypt(Provider);
            }

            // Consultamos el servicio web
            // Llamamos al Metodo GetPaymentTicket de la API de DineroMail
            DMAPI Client = new DMAPI();
            ResultGetPaymentTicket PaymentTicketResult = Client.GetPaymentTicket(Credential
                                                                                 , Crypt
                                                                                 , Currency
                                                                                 , Amount
                                                                                 , Provider
                                                                                 , MerchantTransactionId
                                                                                 , UniqueMessageId
                                                                                 , Hash);

            //mostramos la respuesta de la operación en pantalla.
            string sResult = "Status: " + PaymentTicketResult.Status.ToString() + "<br>";

            sResult = sResult + "Message: " + PaymentTicketResult.Message.ToString() + "<br>";
            sResult = sResult + "MerchantTransactionId: " + PaymentTicketResult.MerchantTransactionId.ToString() + "<br>";
            sResult = sResult + "UniqueMessageId: " + PaymentTicketResult.UniqueMessageId.ToString() + "<br>";
            if (PaymentTicketResult.Status.ToString() == "COMPLETED")
            {
                sResult = sResult + "MerchantTransactionId: " + PaymentTicketResult.MerchantTransactionId.ToString() + "<br>";
                sResult = sResult + "TransactionId: " + PaymentTicketResult.TransactionId.ToString() + "<br>";
                sResult = sResult + "BarcodeDigits: " + PaymentTicketResult.BarcodeDigits + "<br>";
                sResult = sResult + "UrlImage: " + PaymentTicketResult.BarcodeImageUrl.ToString() + "<br>";
                sResult = sResult + "Voucher: " + PaymentTicketResult.VoucherUrl.ToString();
            }

            return(sResult);
        }
        /// <summary>
        ///     GetOperations: Obtener lista operaciones de DineroMail por parte de los vendedores
        /// </summary>
        /// <param name="APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="StartDate">Fecha inicial, en un rango de fecha</param>
        /// <param name="EndDate">Fecha final, en un rango de fecha</param>
        /// <param name="OperationId">Identificador de la operación en DineroMail</param>
        /// <param name="Hash">Cadena a encriptar</param>
        /// <returns>
        ///     Lista de Operaciones
        /// </returns>
        public string GetOperations()
        {
            String APIPassword           = "******";
            String APIUserName           = "******";
            bool   Crypt                 = false;
            String MerchantTransactionId = "1";
            String UniqueMessageId       = "30";
            String OperationId           = "";
            String StartDate             = "2012-09-01";
            String EndDate               = "2012-10-01";
            String Hash = "";

            DMCrypt Crypto = new DMCrypt();

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            ws.dineromail.api.APICredential Credential = new ws.dineromail.api.APICredential();
            Credential.APIPassword = APIPassword;
            Credential.APIUserName = APIUserName;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            Hash = MerchantTransactionId + UniqueMessageId + OperationId + StartDate + EndDate + Credential.APIPassword;
            Hash = Crypto.GetHashMD5(Hash);

            //si se desea enviar encriptado
            if (Crypt)
            {
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                OperationId           = Crypto.Encrypt(OperationId);
                StartDate             = Crypto.Encrypt(StartDate);
                EndDate = Crypto.Encrypt(EndDate);
            }

            ws.dineromail.api.DMAPI Client = new ws.dineromail.api.DMAPI();

            // Consultamos el servicio web
            // Llamamos al Metodo GetOperations de la API de DineroMail
            ws.dineromail.api.ResultGetOperations OperationsResult = Client.GetOperations(Credential
                                                                                          , Crypt
                                                                                          , MerchantTransactionId
                                                                                          , OperationId
                                                                                          , StartDate
                                                                                          , EndDate
                                                                                          , UniqueMessageId
                                                                                          , Hash);

            //mostramos la respuesta de la operación en pantalla.
            string sResult = "Status: " + OperationsResult.Status.ToString() + "<br>";

            sResult = sResult + "Message: " + OperationsResult.Message.ToString() + "<br>";
            sResult = sResult + "MerchantTransactionId: " + OperationsResult.MerchantTransactionId.ToString() + "<br>";
            sResult = sResult + "UniqueMessageId: " + OperationsResult.UniqueMessageId.ToString() + "<br>";

            if (OperationsResult.Status.ToString() == "OK")
            {
                sResult = sResult + "MerchantTransactionId: " + OperationsResult.MerchantTransactionId.ToString() + "<br>";

                foreach (ws.dineromail.api.OperationDetail Operation in OperationsResult.Operations)
                {
                    sResult = sResult + "<h2>Operation</h2><br>";
                    sResult = sResult + "Id: " + Operation.Id.ToString() + "<br>";
                    sResult = sResult + "Amount: " + Operation.Amount.ToString() + "<br>";
                    sResult = sResult + "Date: " + Operation.Date.ToString() + "<br>";
                    sResult = sResult + "NetAmount: " + Operation.NetAmount.ToString() + "<br>";
                    sResult = sResult + "PaymentMethod: " + Operation.PaymentMethod.ToString() + "<br>";
                    sResult = sResult + "Shares: " + Operation.Shares.ToString() + "<br>";
                    sResult = sResult + "State: " + Operation.State.ToString() + "<br>";
                    sResult = sResult + "<h3>Buyer</h3><br>";
                    sResult = sResult + "Address: " + Operation.Buyer.Address.ToString() + "<br>";
                    sResult = sResult + "Comments: " + Operation.Buyer.Comments.ToString() + "<br>";
                    sResult = sResult + "DocumentNumber: " + Operation.Buyer.DocumentNumber.ToString() + "<br>";
                    sResult = sResult + "DocumentType: " + Operation.Buyer.DocumentType.ToString() + "<br>";
                    sResult = sResult + "Email: " + Operation.Buyer.Email.ToString() + "<br>";
                    sResult = sResult + "LastName: " + Operation.Buyer.LastName.ToString() + "<br>";
                    sResult = sResult + "Name: " + Operation.Buyer.Name.ToString() + "<br>";
                    sResult = sResult + "Phone: " + Operation.Buyer.Phone.ToString() + "<br>";
                    sResult = sResult + "<h3>Seller</h3><br>";
                    sResult = sResult + "LastName: " + Operation.Seller.LastName.ToString() + "<br>";
                    sResult = sResult + "Name: " + Operation.Seller.Name.ToString() + "<br>";
                    sResult = sResult + "Phone: " + Operation.Seller.Phone.ToString() + "<br>";
                    sResult = sResult + "Email: " + Operation.Seller.Email.ToString() + "<br>";
                    sResult = sResult + "DocumentType: " + Operation.Seller.DocumentType.ToString() + "<br>";
                    sResult = sResult + "DocumentNumber: " + Operation.Seller.DocumentNumber.ToString() + "<br>";
                }
            }

            return(sResult);
        }
Пример #9
0
        /// <summary>
        ///     SendMoney: Realizar "Envío de dinero".
        /// </summary>
        /// <param name="APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="_Currency">Moneda del importe a enviar</param>
        /// <param name="Amount">Importe a enviar</param>
        /// <param name="MailTo">Email del usuario que recibe el dinero</param>
        /// <param name="Subject">Concepto del envío de dinero</param>
        /// <param name="Message">Mensaje al usuario destinatario del dinero</param>
        /// <param name="PayOff">Identifica el origen del envío de dinero</param>
        /// <param name="Hash">Cadena a encriptar</param>
        /// <returns>
        ///     Estado de la operación
        /// </returns>
        public string SendMoney()
        {
            String APIPassword           = "******";
            String APIUserName           = "******";
            bool   Crypt                 = false;
            String MerchantTransactionId = "1";
            String UniqueMessageId       = "11";
            string Currency              = "BRL";
            string Amount                = "10,00";
            string Mail    = "*****@*****.**";
            string Subject = "subject sendmoney";
            string Message = "Message sendmoney";
            string PayOff  = "product";
            string Hash    = "";

            DMCrypt Crypto = new DMCrypt();

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            ws.dineromail.api.APICredential Credential = new ws.dineromail.api.APICredential();
            Credential.APIPassword = APIPassword;
            Credential.APIUserName = APIUserName;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            Hash = MerchantTransactionId + UniqueMessageId + Currency + Amount + Mail + PayOff + Subject + Message + Credential.APIPassword;
            Hash = Crypto.GetHashMD5(Hash);


            //si se desea enviar encriptado
            if (Crypt)
            {
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                Currency = Crypto.Encrypt(Currency);
                Amount   = Crypto.Encrypt(Amount);
                Mail     = Crypto.Encrypt(Mail);
                Subject  = Crypto.Encrypt(Subject);
                Message  = Crypto.Encrypt(Message);
                PayOff   = Crypto.Encrypt(PayOff);
            }

            ws.dineromail.api.DMAPI Client = new ws.dineromail.api.DMAPI();

            // Consultamos el servicio web
            // Llamamos al Metodo SendMoney de la API de DineroMail
            ws.dineromail.api.ResultSendMoney SendMoneyResult = Client.SendMoney(Credential
                                                                                 , Crypt
                                                                                 , Currency
                                                                                 , Amount
                                                                                 , Mail
                                                                                 , PayOff
                                                                                 , Subject
                                                                                 , Message
                                                                                 , MerchantTransactionId
                                                                                 , UniqueMessageId
                                                                                 , Hash);

            // Mostramos en pantalla el resultado de la operación.
            string sResult = "Status: " + SendMoneyResult.Status.ToString() + "<br>";

            sResult = sResult + "Message: " + SendMoneyResult.Message.ToString() + "<br>";
            sResult = sResult + "MerchantTransactionId: " + SendMoneyResult.MerchantTransactionId.ToString() + "<br>";
            sResult = sResult + "UniqueMessageId: " + SendMoneyResult.UniqueMessageId.ToString() + "<br>";
            if (SendMoneyResult.Status.ToString() == "COMPLETED" || SendMoneyResult.Status.ToString() == "PENDING")
            {
                sResult = sResult + "TransactionId: " + SendMoneyResult.TransactionId.ToString() + "<br>";
            }

            return(sResult);
        }