public bool CanRunExperiment(ModuleScienceExperiment baseExperiment, float currentScienceValue) { var currentExperiment = baseExperiment as DMModuleScienceAnimate; if (currentScienceValue < _AutomatedScienceSamplerInstance.craftSettings.threshold) { _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Science value is less than cutoff threshold: ", currentScienceValue, "<", _AutomatedScienceSamplerInstance.craftSettings.threshold); return(false); } if (!currentExperiment.rerunnable && !_AutomatedScienceSamplerInstance.craftSettings.oneTimeOnly) { _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Runing rerunable experiments is disabled"); return(false); } if (currentExperiment.Inoperable) { _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Experiment is inoperable"); return(false); } if (currentExperiment.Deployed) { _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Experiment is deployed"); return(false); } if (!currentExperiment.experiment.IsUnlocked()) { _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Experiment is locked"); return(false); } return(DMAPI.experimentCanConduct(currentExperiment)); }
public void deployExperiment(ModuleScienceExperiment exp) { if (DMAPI.experimentCanConduct(exp as IScienceDataContainer)) { DMAPI.deployDMExperiment(exp as IScienceDataContainer); } }
public bool checkExperiment(ModuleScienceExperiment exp, ExperimentSituations expSituation, CelestialBody lastBody, string curBiome) { ScienceExperiment sciexp = ResearchAndDevelopment.GetExperiment(exp.experimentID); ScienceSubject sub = ResearchAndDevelopment.GetExperimentSubject(sciexp, expSituation, lastBody, curBiome, curBiome); float dmscival = ResearchAndDevelopment.GetScienceValue(sciexp.dataScale * sciexp.baseValue, sub); float dmexpds = sciexp.dataScale; float dmexpbv = sciexp.baseValue; return(!exp.Inoperable && !exp.Deployed && DMAPI.experimentCanConduct(exp) && dmscival > 1f); }
public float GetScienceValue(ModuleScienceExperiment baseExperiment, Dictionary <string, int> shipCotainsExperiments, ScienceSubject currentScienceSubject) { var currentExperiment = baseExperiment as DMModuleScienceAnimate; var scienceExperiment = ResearchAndDevelopment.GetExperiment(baseExperiment.experimentID); if (DMAPI.isAsteroidGrappled(currentExperiment)) { return(Utilities.Science.GetScienceValue(shipCotainsExperiments, scienceExperiment, currentScienceSubject /*, null, GetNextScienceValue*/)); } else { return(Utilities.Science.GetScienceValue(shipCotainsExperiments, scienceExperiment, currentScienceSubject)); } }
public ScienceSubject GetScienceSubject(ModuleScienceExperiment baseExperiment) { var currentExperiment = baseExperiment as DMModuleScienceAnimate; if (DMAPI.isAsteroidGrappled(baseExperiment)) { return(DMAPI.getAsteroidSubject(currentExperiment)); } else { ExperimentSituations situation = ScienceUtil.GetExperimentSituation(FlightGlobals.ActiveVessel); var biome = DMAPI.getBiome(baseExperiment, situation); _AutomatedScienceSamplerInstance.Log(biome, "_", situation, "_", ResearchAndDevelopment.GetExperimentSubject(ResearchAndDevelopment.GetExperiment(currentExperiment.experimentID), situation, FlightGlobals.currentMainBody, biome) == null); return(ResearchAndDevelopment.GetExperimentSubject(ResearchAndDevelopment.GetExperiment(currentExperiment.experimentID), situation, FlightGlobals.currentMainBody, biome)); } }
public bool CanRunExperiment(ModuleScienceExperiment baseExperiment, float currentScienceValue) { var currentExperiment = baseExperiment as DMModuleScienceAnimate; if (currentScienceValue < _AutomatedScienceSamplerInstance.craftSettings.threshold) { Log(currentExperiment.experimentID, ": Science value is less than cutoff threshold: ", currentScienceValue, "<", _AutomatedScienceSamplerInstance.craftSettings.threshold); return(false); } if (!currentExperiment.rerunnable && !_AutomatedScienceSamplerInstance.craftSettings.oneTimeOnly) { Log(currentExperiment.experimentID, ": Runing rerunable experiments is disabled"); return(false); } if (currentExperiment.Inoperable) { Log(currentExperiment.experimentID, ": Experiment is inoperable"); return(false); } if (currentExperiment.Deployed) { Log(currentExperiment.experimentID, ": Experiment is deployed"); return(false); } if (!currentExperiment.experiment.IsUnlocked()) { Log(currentExperiment.experimentID, ": Experiment is locked"); return(false); } if (!string.IsNullOrEmpty(currentExperiment.animationName)) { var anim = currentExperiment.part.FindModelAnimators(currentExperiment.animationName)[0]; if (anim.isPlaying) { Log(currentExperiment.experimentID, ": Animation is playing"); return(false); } } return(DMAPI.experimentCanConduct(currentExperiment)); }
public ScienceSubject GetScienceSubject(ModuleScienceExperiment baseExperiment) { var currentExperiment = baseExperiment as DMModuleScienceAnimate; if (DMAPI.isAsteroidGrappled(baseExperiment)) { return(DMAPI.getAsteroidSubject(currentExperiment)); } else { ExperimentSituations situation = ScienceUtil.GetExperimentSituation(FlightGlobals.ActiveVessel); var biome = DMAPI.getBiome(baseExperiment, situation); if (biome == null) { Log("Biome is null."); return(null); } var scienceSubject = ResearchAndDevelopment.GetExperimentSubject(ResearchAndDevelopment.GetExperiment(currentExperiment.experimentID), situation, FlightGlobals.currentMainBody, biome, ScienceUtil.GetBiomedisplayName(FlightGlobals.currentMainBody, biome)); Log(biome, "_", situation, "_", scienceSubject == null); return(scienceSubject); } }
public void DeployExperiment(ModuleScienceExperiment baseExperiment) { var currentExperiment = baseExperiment as DMModuleScienceAnimate; DMAPI.deployDMExperiment(currentExperiment, _AutomatedScienceSamplerInstance.craftSettings.hideScienceDialog); }
/// <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); }