private string BuildRequest(string orderNo, string subject, decimal totalAmt, EnumAliPayTradeType aliPayType)
        {
            var signType = aliPayType == EnumAliPayTradeType.APP ? EnumSignType.RSA : EnumSignType.MD5;

            SortedDictionary<string, string> dicParam = CreateParam(orderNo, subject, totalAmt, aliPayType);
            string urlParam = CreateURLParamString(dicParam, aliPayType);

            string sign = BuildRequestsign(urlParam, signType);
            dicParam.Add("sign_type", signType.ToString());

            if (aliPayType == EnumAliPayTradeType.APP)
            {
                //APP支付URL字段须进行URL编码,具体出处参看官方文档
                sign=HttpUtility.UrlEncode(sign, Encoding.UTF8);
                return urlParam + "&sign=\"" + sign + "\"&sign_type=\"" + signType.ToString() + "\"";
            }
            else
            {
                dicParam.Add("sign", sign);
                return BuildForm(dicParam);
            }
        }
 public string BuildAliPay(string orderNo, string subject, decimal payAmount, EnumAliPayTradeType tradeType)
 {
     return this.BuildRequest(orderNo, subject, payAmount, tradeType);
 }
        private string CreateURLParamString(SortedDictionary<string, string> dicArray, EnumAliPayTradeType type = EnumAliPayTradeType.Website)
        {
            StringBuilder prestr = new StringBuilder();
            foreach (KeyValuePair<string, string> temp in dicArray.OrderBy(o => o.Key))
            {
                if (type == EnumAliPayTradeType.APP)
                    prestr.Append(temp.Key + "=\"" + temp.Value + "\"&");
                else
                    prestr.Append(temp.Key + "=" + temp.Value + "&");
            }

            int nLen = prestr.Length;
            prestr.Remove(nLen - 1, 1);
            return prestr.ToString();
        }
        private SortedDictionary<string, string> CreateParam(string orderNo, string subject, decimal totalAmt, EnumAliPayTradeType aliPayType)
        {
            SortedDictionary<string, string> dic = new SortedDictionary<string, string>();
            #region BASEPARAM

            string service = aliPayType == EnumAliPayTradeType.Website ? AlipayConfig.ALIPay_WEB_SERVICE
                            : aliPayType == EnumAliPayTradeType.Wap ? AlipayConfig.ALIPay_WAP_SERVICE
                            : aliPayType == EnumAliPayTradeType.APP ? AlipayConfig.ALIPay_MOBILE_SERVICE
                            : "";

            dic.Add("service", service);
            dic.Add("partner", AlipayConfig.ALI_PARTER);
            dic.Add("_input_charset", AlipayConfig.CHARTSET);
            dic.Add("notify_url", AlipayConfig.ALIPay_NotifyURL);

            //dic.Add("sign_type", SIGNTYPE); 
            #endregion

            #region BIZPARAM
            dic.Add("out_trade_no", orderNo);
            dic.Add("subject", subject);
            dic.Add("payment_type", AlipayConfig.PAYMENT_TYPE);
            dic.Add("total_fee", totalAmt.ToString("F2"));
            //dic.Add("seller_email", ALI_SELLEREMAIL);
            dic.Add("seller_id", AlipayConfig.ALI_SELLERID);
            //dic.Add("anti_phishing_key", anti_phishing_key);//防钓鱼时间戳,如果已申请开通防钓鱼证,则此字段必填。
            //dic.Add("exter_invoke_ip", exter_invoke_ip);//客户端 IP ,如果商户申请后台开通防钓鱼 IP地址检查选项,此字段必填,校验用。 
            #endregion

            if (aliPayType == EnumAliPayTradeType.APP)
                dic.Add("body", subject + "购买");

            return dic;
        }
Exemple #5
0
        private string BuildRequest(string orderNo, string subject, decimal totalAmt, EnumAliPayTradeType aliPayType)
        {
            var signType = aliPayType == EnumAliPayTradeType.APP ? EnumSignType.RSA : EnumSignType.MD5;

            SortedDictionary <string, string> dicParam = CreateParam(orderNo, subject, totalAmt, aliPayType);
            string urlParam = CreateURLParamString(dicParam, aliPayType);

            string sign = BuildRequestsign(urlParam, signType);

            dicParam.Add("sign_type", signType.ToString());

            if (aliPayType == EnumAliPayTradeType.APP)
            {
                //APP支付URL字段须进行URL编码,具体出处参看官方文档
                sign = HttpUtility.UrlEncode(sign, Encoding.UTF8);
                return(urlParam + "&sign=\"" + sign + "\"&sign_type=\"" + signType.ToString() + "\"");
            }
            else
            {
                dicParam.Add("sign", sign);
                return(BuildForm(dicParam));
            }
        }
Exemple #6
0
        private string CreateURLParamString(SortedDictionary <string, string> dicArray, EnumAliPayTradeType type = EnumAliPayTradeType.Website)
        {
            StringBuilder prestr = new StringBuilder();

            foreach (KeyValuePair <string, string> temp in dicArray.OrderBy(o => o.Key))
            {
                if (type == EnumAliPayTradeType.APP)
                {
                    prestr.Append(temp.Key + "=\"" + temp.Value + "\"&");
                }
                else
                {
                    prestr.Append(temp.Key + "=" + temp.Value + "&");
                }
            }

            int nLen = prestr.Length;

            prestr.Remove(nLen - 1, 1);
            return(prestr.ToString());
        }
Exemple #7
0
 public string BuildAliPay(string orderNo, string subject, decimal payAmount, EnumAliPayTradeType tradeType)
 {
     return(this.BuildRequest(orderNo, subject, payAmount, tradeType));
 }
Exemple #8
0
        private SortedDictionary <string, string> CreateParam(string orderNo, string subject, decimal totalAmt, EnumAliPayTradeType aliPayType)
        {
            SortedDictionary <string, string> dic = new SortedDictionary <string, string>();

            #region BASEPARAM

            string service = aliPayType == EnumAliPayTradeType.Website ? AlipayConfig.ALIPay_WEB_SERVICE
                            : aliPayType == EnumAliPayTradeType.Wap ? AlipayConfig.ALIPay_WAP_SERVICE
                            : aliPayType == EnumAliPayTradeType.APP ? AlipayConfig.ALIPay_MOBILE_SERVICE
                            : "";

            dic.Add("service", service);
            dic.Add("partner", AlipayConfig.ALI_PARTER);
            dic.Add("_input_charset", AlipayConfig.CHARTSET);
            dic.Add("notify_url", AlipayConfig.ALIPay_NotifyURL);

            //dic.Add("sign_type", SIGNTYPE);
            #endregion

            #region BIZPARAM
            dic.Add("out_trade_no", orderNo);
            dic.Add("subject", subject);
            dic.Add("payment_type", AlipayConfig.PAYMENT_TYPE);
            dic.Add("total_fee", totalAmt.ToString("F2"));
            //dic.Add("seller_email", ALI_SELLEREMAIL);
            dic.Add("seller_id", AlipayConfig.ALI_SELLERID);
            //dic.Add("anti_phishing_key", anti_phishing_key);//防钓鱼时间戳,如果已申请开通防钓鱼证,则此字段必填。
            //dic.Add("exter_invoke_ip", exter_invoke_ip);//客户端 IP ,如果商户申请后台开通防钓鱼 IP地址检查选项,此字段必填,校验用。
            #endregion

            if (aliPayType == EnumAliPayTradeType.APP)
            {
                dic.Add("body", subject + "购买");
            }

            return(dic);
        }