Example #1
0
        /// <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();
        }
Example #2
0
        /// <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", "确认");
        }
Example #3
0
        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);
        }
Example #4
0
        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();
        }