public void UploadMandateForm(string SubsID) { SIPRegistrationData data = db.SIPRegistrationDatas.Where(a => a.SubsID == SubsID).FirstOrDefault(); AccountDetail AccDet = db.AccountDetails.Where(a => a.ID == data.AccountDetails).FirstOrDefault(); string ServerURL = "https://securegw-stage.paytm.in/subscription/paper/mandate/uploadUrl"; string BodyJSONString = "{\"mid\":\"" + PaytmCreds.MID + "\",\"subscriptionId\":\"" + SubsID + "\"}"; string CheckSum = paytm.CheckSum.generateCheckSumByJson(PaytmCreds.MerchantKey, BodyJSONString); string RequestJSON = "{\"head\":{\"tokenType\":\"AES\",\"signature\":\"" + CheckSum + "\"},\"body\":" + BodyJSONString + "}"; string ResponseJSONStr = utils.CommunicateToServer(ServerURL, RequestJSON, "application/json"); JObject ResponseJSON = JObject.Parse(ResponseJSONStr); if (Convert.ToString(ResponseJSON["body"]["resultInfo"]["code"]) == "3006") { data.IsMandateFormUploaded = true; AccDet.MandateFormUploadURL = Convert.ToString(ResponseJSON["body"]["uploadUrl"]); AccDet.PolicyForm = Convert.ToString(ResponseJSON["body"]["policyForm"]); //MandateFormURL = Convert.ToString(Response["body"]["downloadUrl"]); } else { data.IsMandateFormDowloaded = false; } data.MandateFormUploadResultCode = Convert.ToString(ResponseJSON["body"]["resultInfo"]["code"]); data.MandateFormUploadResultStatus = Convert.ToString(ResponseJSON["body"]["resultInfo"]["status"]); db.SaveChanges(); Response.Write(ResponseJSONStr); }
protected void btnCreateSIP_Click(object sender, EventArgs e) { string OrderID = string.Empty; string ServerURL = string.Empty; string TxnAmount = string.Empty; string Mobile = string.Empty; string Email = string.Empty; string CallbackUrl = string.Empty; string SubsRequestBodyJSON = string.Empty; string checksum = string.Empty; string SubsRequestJSON = string.Empty; string SubsInitResponseJSON = string.Empty; string PaymentOptions = string.Empty; UserMaster Owner = db.UserMasters.Where(a => a.ID == 2).FirstOrDefault(); SIPData SubsData = new SIPData(); string[] SIPStartDate = txtSIPStartDate.Text.Split('/'); string[] SIPEnddate = txtSIPEndDate.Text.Split('/'); SubsData.StartDate = SIPStartDate[2] + "-" + SIPStartDate[1] + "-" + SIPStartDate[0]; SubsData.EndDate = SIPEnddate[2] + "-" + SIPEnddate[1] + "-" + SIPEnddate[0]; SubsData.Frequency = Convert.ToInt32(drpFrequency.SelectedValue); SubsData.FrequencyUnit = db.FrequencyUnitMasters.Where(a => a.FrequencyUnit == drpSIPFrequencyUnit.SelectedValue).Select(b => b.ID).SingleOrDefault(); SubsData.Amount = Convert.ToDecimal(txtAmount.Text); SubsData.CustomerID = Owner.ID; db.SIPDatas.Add(SubsData); db.SaveChanges(); OrderID = "ON" + SubsData.ID; ServerURL = "https://securegw-stage.paytm.in/subscription/create?mid=" + PaytmCreds.MID + "&orderId=" + OrderID; TxnAmount = Convert.ToDouble(txtAmount.Text).ToString("0.00"); Mobile = Owner.Mobile; Email = Owner.Email; CallbackUrl = "https://localhost:44300/CallBack.aspx"; SubsRequestBodyJSON = "{\"requestType\":\"NATIVE_SUBSCRIPTION\",\"mid\":\"" + PaytmCreds.MID + "\",\"orderId\":\"" + OrderID + "\",\"websiteName\":\"" + PaytmCreds.WEBSITE + "\",\"subscriptionAmountType\":\"VARIABLE\",\"subscriptionMaxAmount\":\"" + TxnAmount + "\",\"subscriptionEnableRetry\":\"0\",\"subscriptionRetryCount\":\"5\",\"subscriptionFrequencyUnit\":\"MONTH\",\"subscriptionFrequency\":\"" + SubsData.Frequency.ToString() + "\",\"subscriptionStartDate\":\"" + SubsData.StartDate + "\",\"subscriptionExpiryDate\":\"" + SubsData.EndDate + "\",\"subscriptionGraceDays\":\"0\",\"callbackUrl\":\"" + CallbackUrl + "\",\"txnAmount\":{\"value\":\"0\",\"currency\":\"INR\"},\"userInfo\":{\"custId\":\"" + SubsData.CustomerID.ToString() + "\"}}"; //Newtonsoft.Json.JsonConvert.SerializeObject(SubsRequestBody); checksum = paytm.CheckSum.generateCheckSumByJson(PaytmCreds.MerchantKey, SubsRequestBodyJSON); //JObject SubsRequest = new JObject(new JProperty("head", new JObject(new JProperty("clientId", PaytmCreds.MerchantKey.ToString()), new JProperty("version", "v1"), new JProperty("channelId", PaytmCreds.CHANNEL_ID), new JProperty("signature", checksum))), new JProperty("body", SubsRequestBody)); SubsRequestJSON = "{\"head\":{\"clientId\":\"" + PaytmCreds.MerchantKey + "\",\"version\":\"v1\",\"channelId\":\"" + PaytmCreds.CHANNEL_ID + "\",\"signature\":\"" + checksum + "\"},\"body\":" + SubsRequestBodyJSON + "}"; //Newtonsoft.Json.JsonConvert.SerializeObject(SubsRequest); SubsInitResponseJSON = utils.CommunicateToServer(ServerURL, SubsRequestJSON, "application/json"); if (!string.IsNullOrEmpty(SubsInitResponseJSON)) { JObject SubsInitResponse = JObject.Parse(SubsInitResponseJSON); SIPRegistrationData sIPRegData = new SIPRegistrationData(); sIPRegData.SIPID = SubsData.ID; sIPRegData.InsertDate = System.DateTime.Now; sIPRegData.InsertUserID = SubsData.CustomerID; sIPRegData.OrderID = OrderID; sIPRegData.UpdateDate = System.DateTime.Now; sIPRegData.UpdateUserID = Owner.ID; sIPRegData.TranInitResultCode = Convert.ToString(SubsInitResponse["body"]["resultInfo"]["resultCode"]); sIPRegData.TranInitResultStatus = Convert.ToString(SubsInitResponse["body"]["resultInfo"]["resultCode"]) != "0000" ? Convert.ToString(SubsInitResponse["body"]["resultInfo"]["resultStatus"]) + "(" + Convert.ToString(SubsInitResponse["body"]["resultInfo"]["resultMsg"]) + ")" : Convert.ToString(SubsInitResponse["body"]["resultInfo"]["resultStatus"]); if (Convert.ToString(SubsInitResponse["body"]["resultInfo"]["resultCode"]) == "0000" && Convert.ToString(SubsInitResponse["body"]["resultInfo"]["resultStatus"]) == "S") { ScriptManager.RegisterStartupScript(this, this.GetType(), "subsinitsuccess", "javascript: alert('Subscription initiated successfully, please enter bank details to proceed further');", true); sIPRegData.SubsID = Convert.ToString(SubsInitResponse["body"]["subscriptionId"]); sIPRegData.txnToken = Convert.ToString(SubsInitResponse["body"]["txnToken"]); sIPRegData.IsTransactionInit = true; PaymentOptions = this.GetPaymentOptions(Convert.ToString(SubsInitResponse["body"]["txnToken"]), OrderID); if (!string.IsNullOrEmpty(PaymentOptions)) { JObject Options = JObject.Parse(PaymentOptions); JArray PayModes = JArray.Parse(Options["body"]["merchantPayOption"]["paymentModes"].ToString()); JArray ChannelOptions = JArray.Parse(PayModes.AsJEnumerable().Where(a => a["displayName"].ToString() == "BANK_MANDATE").Select(b => b["payChannelOptions"]).First().ToString()); JArray MandateAuthModes = new JArray(); JObject obj; foreach (var option in ChannelOptions.AsJEnumerable().Where(a => a["mandateMode"].ToString() == "E_MANDATE" && Convert.ToBoolean(a["isDisabled"]["status"]) == false && Convert.ToBoolean(a["hasLowSuccess"]["status"]) == false)) { obj = new JObject(); obj.Add("BankCode", option["channelCode"]); obj.Add("AuthModes", option["mandateAuthMode"]); MandateAuthModes.Add(obj); } Session["MandateAuthModes"] = MandateAuthModes; JArray BanksList = new JArray(); foreach (var option in ChannelOptions.AsJEnumerable().Where(a => Convert.ToBoolean(a["isDisabled"]["status"]) == false && Convert.ToBoolean(a["hasLowSuccess"]["status"]) == false)) { obj = new JObject(); obj.Add("MandateMode", option["mandateMode"]); obj.Add("BankCode", option["channelCode"].ToString()); obj.Add("BankName", option["channelName"].ToString()); BanksList.Add(obj); } Session["BanksList"] = BanksList; db.SIPRegistrationDatas.Add(sIPRegData); db.SaveChanges(); hdfOrderID.Value = OrderID; hdfSubsID.Value = sIPRegData.SubsID; hdfTxnToken.Value = sIPRegData.txnToken; hdfRegData.Value = sIPRegData.ID.ToString(); mpeBankDetails.Show(); } else { sIPRegData.IsTransactionInit = false; ScriptManager.RegisterStartupScript(this, this.GetType(), "subsfail", "javascript: alert('Subscription registration failed due to technical reasons');", true); } } else { sIPRegData.IsTransactionInit = false; ScriptManager.RegisterStartupScript(this, this.GetType(), "subsfail", "javascript: alert('Subscription registration failed due to technical reasons');", true); } } else { db.SIPDatas.Remove(SubsData); db.SaveChanges(); ScriptManager.RegisterStartupScript(this, this.GetType(), "subsfail", "javascript: alert('Subscription registration failed due to technical reasons');", true); } }
public void AuthenticateMandateRequest(string TxnToken, string SubsID, string OrderID, long RegData) { string resp = string.Empty; AccountDetail account = new AccountDetail(); account.BankCode = BankDD.SelectedValue; account.BankName = BankDD.SelectedItem.Text; account.AccountNumber = txtAccountNo.Text; account.AccountType = drpAccType.SelectedValue; account.AuthMode = rblMandateModes.SelectedValue == "PAPER_MANDATE" ? "NET_BANKING" : rblAuthType.SelectedValue; account.AccHolderName = txtUserName.Text; account.IFSCCode = txtIFSCCode.Text; account.MandateMode = rblMandateModes.SelectedValue; string MandateAuthMode = string.Empty; if (rblMandateModes.SelectedValue == "PAPER_MANDATE") { MandateAuthMode = "NET_BANKING"; } else { MandateAuthMode = rblAuthType.SelectedValue; } db.AccountDetails.Add(account); db.SaveChanges(); SIPRegistrationData regData = db.SIPRegistrationDatas.Where(a => a.ID == (int)RegData).Select(b => b).FirstOrDefault(); regData.AccountDetails = account.ID; db.SaveChanges(); string ServerURL = "https://securegw-stage.paytm.in/order/pay?mid=" + PaytmCreds.MID + "&orderId=" + OrderID; Response.Write("<html>"); Response.Write("<head>"); Response.Write("<title>"); Response.Write("Authenticate Subscription"); Response.Write("</title>"); Response.Write("</head>"); Response.Write("<body>"); Response.Write("<center>"); Response.Write("<h1> Please do not refresh this page...</h1>"); Response.Write("</center>"); Response.Write("<form method='POST' name='paytm_form' action='" + ServerURL + "'>"); Response.Write("<input type='hidden' name='txnToken' value='" + TxnToken + "'>"); Response.Write("<input type='hidden' name='SUBSCRIPTION_ID' value='" + SubsID + "'>"); Response.Write("<input type='hidden' name='paymentMode' value='BANK_MANDATE'>"); Response.Write("<input type = 'hidden' name='AUTH_MODE' value='USRPWD'> "); Response.Write("<input type='hidden' name='account_number' value='" + txtAccountNo.Text.Trim() + "'>"); Response.Write("<input type='hidden' name='bankIfsc' value='" + txtIFSCCode.Text.Trim() + "'>"); Response.Write("<input type='hidden' name='USER_NAME' value='" + txtUserName.Text.Trim() + "'>"); Response.Write("<input type='hidden' name='ACCOUNT_TYPE' value='" + drpAccType.SelectedValue.Trim() + "'>"); Response.Write("<input type='hidden' name='channelCode' value='" + BankDD.SelectedValue + "'>"); Response.Write("<input type='hidden' name='channelId' value='" + PaytmCreds.CHANNEL_ID + "'>"); Response.Write("<input type='hidden' name='mandateAuthMode' value='" + MandateAuthMode + "'>"); Response.Write("<script type='text/javascript'>"); Response.Write("document.paytm_form.submit();"); Response.Write("</script>"); Response.Write("</body>"); Response.Write("</html>"); Response.Flush(); Response.End(); }