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; }
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)); } }
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()); }
public string BuildAliPay(string orderNo, string subject, decimal payAmount, EnumAliPayTradeType tradeType) { return(this.BuildRequest(orderNo, subject, payAmount, tradeType)); }
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); }