/// <summary> /// <see cref="IPayment.BuildRequest"/> /// </summary> /// <returns></returns> public string BuildRequest(PayRequestCriteria criteria) { if (!isInitialized) { throw new ArgumentException("The Chinabank payment configuration has not been initialized yet."); } if (criteria == null) { throw new System.ArgumentException("The criteria is null."); } CheckNullOrEmpty(criteria.OrderId); CheckNullOrEmpty(criteria.Subject); //CheckNullOrEmpty(criteria.Body); CheckAmount(criteria.Amount); StringBuilder sbHtml = new StringBuilder(); sbHtml.Append("<form id='chinabankpaymentsubmit' name='chinabankpaymentsubmit' action='" + ChinabankConfig.Gateway.Trim() + "?encoding=" + _inputCharset.Trim().ToUpper() + "' method='post'>"); // Append sign string prestr = criteria.Amount + v_moneytype + criteria.OrderId + v_mid + ChinabankConfig.ReturnUrl.Trim(); string v_md5info = ChinabankPaymentMD5.Sign(prestr, v_key, _inputCharset.Trim()).ToUpper(); sbHtml.Append(BuildHtml("v_md5info", v_md5info)); sbHtml.Append(BuildHtml("v_mid", v_mid)); sbHtml.Append(BuildHtml("v_oid", criteria.OrderId)); sbHtml.Append(BuildHtml("v_amount", criteria.Amount)); sbHtml.Append(BuildHtml("v_moneytype", v_moneytype)); sbHtml.Append(BuildHtml("v_url", ChinabankConfig.ReturnUrl.Trim())); sbHtml.Append(BuildHtml("remark1", "[subject=" + criteria.Subject + "][body=" + criteria.Body + "]")); sbHtml.Append(BuildHtml("remark2", ChinabankConfig.NotifyUrl.Trim())); if (criteria.CustormParameters != null && criteria.CustormParameters.Count > 0) { foreach (var item in criteria.CustormParameters) { if (!string.IsNullOrEmpty(item.Key) && !string.IsNullOrEmpty(item.Value)) { sbHtml.Append(BuildHtml(item.Key.Trim(), item.Value.Trim())); } } } //submit按钮控件请不要含有name属性 sbHtml.Append("<input type='submit' value='确认付款' style='display:none;'></form>"); sbHtml.Append("<script>document.forms['chinabankpaymentsubmit'].submit();</script>"); return sbHtml.ToString(); }
/// <summary> /// <see cref="IPayment.BuildRequest"/> /// </summary> /// <param name="orderId"></param> /// <param name="amount"></param> /// <param name="returnUrl"></param> /// <param name="notifyUrl"></param> /// <param name="inputCharset"></param> /// <param name="otherParameters"></param> /// <returns></returns> public string BuildRequest(PayRequestCriteria criteria) { if (!isInitialized) { throw new System.ArgumentException("The Alipay payment configuration has not been initialized yet."); } if (criteria == null) { throw new System.ArgumentException("The criteria is null."); } CheckNullOrEmpty(criteria.OrderId); CheckNullOrEmpty(criteria.Subject); //CheckNullOrEmpty(criteria.Body); CheckAmount(criteria.Amount); SortedDictionary<string, string> parameters = new SortedDictionary<string, string>(); parameters.Add("partner", Config.Partner.Trim()); parameters.Add("_input_charset", Config.Input_charset.Trim().ToLower()); parameters.Add("service", Config.Service); parameters.Add("payment_type", Config.Payment_type); parameters.Add("notify_url", Config.NotifyUrl.Trim()); parameters.Add("return_url", Config.ReturnUrl.Trim()); parameters.Add("seller_email", Config.Seller_email); parameters.Add("seller_id", Config.Partner.Trim()); parameters.Add("out_trade_no", criteria.OrderId); parameters.Add("total_fee", criteria.Amount); parameters.Add("subject", criteria.Subject); parameters.Add("body", criteria.Body); //parameters.Add("show_url", show_url); //parameters.Add("anti_phishing_key", Submit.Query_timestamp()); parameters.Add("exter_invoke_ip", criteria.ClientIP); if (criteria.CustormParameters != null && criteria.CustormParameters.Count > 0) { foreach (var item in criteria.CustormParameters) { if (!string.IsNullOrEmpty(item.Key) && !string.IsNullOrEmpty(item.Value)) { parameters.Add(item.Key.Trim(), item.Value.Trim()); } } } return Com.Pay.Alipay.Submit.BuildRequest(parameters, "get", "确认"); }
public ActionResult PayOnline(string orderId, string payment) { string responseHtml = ""; try { // 取消其他在线支付方式,只支持支付宝,强制设置 payment = PaymentService.ALIPAYSERVICE; //客户端IP地址 string clientIPAddr = GetUserIp(); payService = BuildPayService(payment); if (payService != null) { TradeOrder order = orderService.GetOrderByOrderId(orderId); if (order != null && !string.IsNullOrEmpty(order.OrderId)) { PayRequestCriteria criteria = new PayRequestCriteria(); criteria.OrderId = order.OrderId; criteria.Amount = order.Amount.ToString(); criteria.Subject = order.Subject; criteria.Body = order.Body; criteria.ClientIP = clientIPAddr; //criteria.AddCustomParameter("", ""); responseHtml = payService.BuildRequest(criteria); } else { responseHtml = "订单:" + orderId + "不存在"; } } else { responseHtml = "The pay service " + payment + " does not support."; } } catch (Exception e) { LogService.Log("PayOnline Failed", e.ToString()); } return Content(responseHtml); }
public string BuildRequest(PayRequestCriteria criteria) { if (!isInitialized) { throw new ArgumentException("The Tenpay payment configuration has not been initialized yet."); } if (criteria == null) { throw new System.ArgumentException("The criteria is null."); } CheckNullOrEmpty("OrderId", criteria.OrderId); CheckNullOrEmpty("Subject", criteria.Subject); //CheckNullOrEmpty("Body", criteria.Body); string amount = criteria.Amount; ParseAmountFromYuanToFen(ref amount); //创建RequestHandler实例 RequestHandler reqHandler = new RequestHandler(); //----------------------------- //设置支付参数 //----------------------------- reqHandler.setParameter("partner", TenpayConfig.PartnerId.Trim()); //商户号 reqHandler.setParameter("out_trade_no", criteria.OrderId); //商家订单号 reqHandler.setParameter("total_fee", amount); //商品金额,以分为单位 reqHandler.setParameter("return_url", TenpayConfig.ReturnUrl.Trim()); //交易完成后跳转的URL reqHandler.setParameter("notify_url", TenpayConfig.NotifyUrl.Trim()); //接收财付通通知的URL reqHandler.setParameter("bank_type", TenpayConfig.BankType.Trim()); //银行类型(中介担保时此参数无效) reqHandler.setParameter("body", criteria.Body); reqHandler.setParameter("subject", criteria.Subject); reqHandler.setParameter("spbill_create_ip", criteria.ClientIP); reqHandler.setParameter("fee_type", TenpayConfig.FeeType); //系统可选参数 reqHandler.setParameter("sign_type", TenpayConfig.SignType); reqHandler.setParameter("service_version", TenpayConfig.ServiceVersion); reqHandler.setParameter("input_charset", TenpayConfig.InputCharset.Trim().ToUpper()); reqHandler.setParameter("sign_key_index", TenpayConfig.SignKeyIndex); //string attach = "[subject=" + criteria.Subject + "][body=" + criteria.Body; //if (attach.Length >= 127) //{ // attach = attach.Substring(0, 125); //} //attach += "]"; //reqHandler.setParameter("attach", attach); // Other parameters if (criteria.CustormParameters != null && criteria.CustormParameters.Count > 0) { foreach (var item in criteria.CustormParameters) { reqHandler.setParameter(item.Key, item.Value); } } // create sign here reqHandler.createSign(); //post实现方式 StringBuilder sbHtml = new StringBuilder(); sbHtml.Append("<form id='chinabankpaymentsubmit' name='tenpaysubmit' action='" + TenpayConfig.Gateway.Trim() + "' method='post'>"); Hashtable ht = reqHandler.getAllParameters(); foreach (DictionaryEntry de in ht) { sbHtml.Append(BuildHtml(de.Key.ToString(), de.Value.ToString())); } //submit按钮控件请不要含有name属性 sbHtml.Append("<input type='submit' value='确认付款' style='display:none;'></form>"); sbHtml.Append("<script>document.forms['tenpaysubmit'].submit();</script>"); return sbHtml.ToString(); }