private string GenerateMessage(PayUOrder OrderPayU) { StringBuilder sb = new StringBuilder(); string itemsName = string.Empty; string itemsCode = string.Empty; string itemsGroup = string.Empty; string itemsInfo = string.Empty; string itemsPrice = string.Empty; string itemsQty = string.Empty; string itemsVat = string.Empty; string itemsVer = string.Empty; sb.Append(OrderPayU.Merchant.Length.ToString()); sb.Append(OrderPayU.Merchant); sb.Append(OrderPayU.Order_ref.Length.ToString()); sb.Append(OrderPayU.Order_ref); sb.Append(OrderPayU.Order_date.ToString("yyyy-MM-dd HH:mm:ss").Length.ToString()); sb.Append(OrderPayU.Order_date.ToString("yyyy-MM-dd HH:mm:ss")); foreach (PayUItem item in OrderPayU.Order_items) { itemsName = itemsName + item.Order_pname.Length.ToString(); itemsName = itemsName + item.Order_pname; itemsCode = itemsCode + item.Order_pcode.Length.ToString(); itemsCode = itemsCode + item.Order_pcode; itemsGroup = itemsGroup + item.Order_pgroup.Length.ToString(); itemsGroup = itemsGroup + item.Order_pgroup; itemsInfo = itemsInfo + item.Order_pinfo.Length.ToString(); itemsInfo = itemsInfo + item.Order_pinfo; itemsPrice = itemsPrice + item.Order_price.Length.ToString(); itemsPrice = itemsPrice + item.Order_price; itemsQty = itemsQty + item.Order_qty.Length.ToString(); itemsQty = itemsQty + item.Order_qty; itemsVat = itemsVat + item.Order_vat.Length.ToString(); itemsVat = itemsVat + item.Order_vat; itemsVer = itemsVer + item.Order_ver.Length.ToString(); itemsVer = itemsVer + item.Order_ver; } sb.Append(itemsName); sb.Append(itemsCode); sb.Append(itemsInfo); sb.Append(itemsPrice); sb.Append(itemsQty); sb.Append(itemsVat); sb.Append(itemsVer); sb.Append(OrderPayU.Order_shipping.Length.ToString()); sb.Append(OrderPayU.Order_shipping); sb.Append(OrderPayU.Prices_currency.Length.ToString()); sb.Append(OrderPayU.Prices_currency); sb.Append(OrderPayU.Discount.Length.ToString()); sb.Append(OrderPayU.Discount); sb.Append(OrderPayU.Pay_method.Length.ToString()); sb.Append(OrderPayU.Pay_method); sb.Append(itemsGroup); return(sb.ToString()); }
private void GenerateRequest(PayUOrder OrderPayU, string merchant, string key, string url) { double gmtHungary = 9; var OrderItemList = new List <PayUItem>(); OrderPayU.Merchant = merchant; OrderPayU.Order_ref = this.OrderNumber; OrderPayU.Order_date = System.DateTime.Now.AddHours(gmtHungary); OrderPayU.Order_shipping = "0"; OrderPayU.Prices_currency = "HUF"; OrderPayU.Discount = "0"; OrderPayU.Pay_method = "CCVISAMC"; OrderPayU.Language = "HU"; OrderPayU.Automode = "0"; OrderPayU.Testorder = "FALSE";//Change to FALSE once we are in prod by webconfig OrderPayU.Debug = "0"; OrderPayU.Order_timeout = "1200"; OrderPayU.Timeout_url = string.Concat(url, "&Timeout=TimeoutPayU");; OrderPayU.Back_ref = url; OrderItemList.Add(new PayUItem("001", this.OrderNumber, "001", "001", Convert.ToInt32(this._orderAmount).ToString(), "1", "0", "1")); OrderPayU.Order_items = OrderItemList; }
public override void Submit() { string redirectUrl = _configHelper.GetConfigEntry("paymentGatewayUrl"); string returnUrl = string.Concat(RootUrl, _config.PaymentGatewayReturnUrlApproved); string returnUrlApproved = (string.Format("{0}?Agency=PayU&OrderNumber={1}&Redirect=Yes", returnUrl, this.OrderNumber)); string merchantId = _configHelper.GetConfigEntry("paymentGatewayMerchantdId"); string key = _configHelper.GetConfigEntry("paymentGatewayKey"); key = Prehash(key); string PayUMessage; PayUOrder Order = new PayUOrder(); List <PayUItem> OrderItemList = new List <PayUItem>(); GenerateRequest(Order, merchantId, key, returnUrlApproved); PayUMessage = GenerateMessage(Order); string hash = string.Empty; hash = checkHMAC(key, PayUMessage); // Post and redirect to Produbanco website HttpContext.Current.Response.Clear(); var sb = new StringBuilder(); sb.Append("<html>"); sb.AppendFormat(@"<body onload='document.forms[""frmSolicitudPago""].submit()'>"); sb.AppendFormat("<form name='frmSolicitudPago' action='{0}' method='post'>", redirectUrl); sb.AppendFormat("<input type='hidden' id='MERCHANT' name='MERCHANT' value='{0}'>", Order.Merchant); sb.AppendFormat("<input type='hidden' id='ORDER_REF' name='ORDER_REF' value='{0}'>", Order.Order_ref); sb.AppendFormat("<input type='hidden' id='ORDER_DATE' name='ORDER_DATE' value='{0}'>", Order.Order_date.ToString("yyyy-MM-dd HH:mm:ss")); sb.AppendFormat("<input type='hidden' id='ORDER_PNAME' name='ORDER_PNAME[]' value='{0}'>", Order.Order_items[0].Order_pname); sb.AppendFormat("<input type='hidden' id='ORDER_PCODE' name='ORDER_PCODE[]' value='{0}'>", Order.Order_items[0].Order_pcode); sb.AppendFormat("<input type='hidden' id='ORDER_PINFO' name='ORDER_PINFO[]' value='{0}'>", Order.Order_items[0].Order_pinfo); sb.AppendFormat("<input type='hidden' id='ORDER_PRICE' name='ORDER_PRICE[]' value='{0}'>", Order.Order_items[0].Order_price); sb.AppendFormat("<input type='hidden' id='ORDER_QTY' name='ORDER_QTY[]' value='{0}'>", Order.Order_items[0].Order_qty); sb.AppendFormat("<input type='hidden' id='ORDER_VAT' name='ORDER_VAT[]' value='{0}'>", Order.Order_items[0].Order_vat); sb.AppendFormat("<input type='hidden' id='ORDER_VER' name='ORDER_VER[]' value='{0}'>", Order.Order_items[0].Order_ver); sb.AppendFormat("<input type='hidden' id='ORDER_SHIPPING' name='ORDER_SHIPPING' value='{0}'>", Order.Order_shipping); sb.AppendFormat("<input type='hidden' id='PRICES_CURRENCY' name='PRICES_CURRENCY' value='{0}'>", Order.Prices_currency); sb.AppendFormat("<input type='hidden' id='DISCOUNT' name='DISCOUNT' value='{0}'>", Order.Discount); sb.AppendFormat("<input type='hidden' id='PAY_METHOD' name='PAY_METHOD' value='{0}'>", Order.Pay_method); sb.AppendFormat("<input type='hidden' id='ORDER_PGROUP' name='ORDER_PGROUP[]' value='{0}'>", Order.Order_items[0].Order_pgroup); sb.AppendFormat("<input type='hidden' id='LANGUAGE' name='LANGUAGE' value='{0}'>", Order.Language); sb.AppendFormat("<input type='hidden' id='AUTOMODE' name='AUTOMODE' value='{0}'>", Order.Automode); sb.AppendFormat("<input type='hidden' id='TESTORDER' name='TESTORDER' value='{0}'>", Order.Testorder); sb.AppendFormat("<input type='hidden' id='DEBUG' name='DEBUG' value='{0}'>", Order.Debug); sb.AppendFormat("<input type='hidden' id='ORDER_TIMEOUT' name='ORDER_TIMEOUT' value='{0}'>", Order.Order_timeout); sb.AppendFormat("<input type='hidden' id='TIMEOUT_URL' name='TIMEOUT_URL' value='{0}'>", Order.Timeout_url); sb.AppendFormat("<input type='hidden' id='BACK_REF' name='BACK_REF' value='{0}'>", Order.Back_ref); sb.AppendFormat("<input type='hidden' id='ORDER_HASH' name='ORDER_HASH' value='{0}'>", hash); sb.Append("</form>"); sb.Append("</body>"); sb.Append("</html>"); string response = sb.ToString(); LogMessage(PaymentGatewayLogEntryType.Request, this.OrderNumber, this._distributorId, this._gatewayName, PaymentGatewayRecordStatusType.Unknown, response); HttpContext.Current.Response.Write(response); HttpContext.Current.Response.End(); }