public static PaymentRequest CreatePaymentRequest(PaymentParms param) { PaymentRequest payRequest = null; switch (param.name) { case "hishop.plugins.payment.alipaydirect.directrequest": payRequest = new Alipay.AlipayRequest(param); break; case "tenpay": payRequest = new TenPay.TenPayRequest(param); break; case "yeepay": payRequest = new YeePay.YeePayRequest(param); break; } return(payRequest); }
public override bool Verify(Hashtable parms) { NameValueCollection parameters = new NameValueCollection(); foreach (DictionaryEntry item in parms) { parameters.Add(item.Key.ToString(), item.Value.ToString()); } var sign = parms["sign"].ToString(); var notify_id = parms["notify_id"].ToString(); //验证签名 bool isSign = false; string[] requestarr = parameters.AllKeys; // 参数排序 string[] sortedstr = AlipayRequest.BubbleSort(requestarr); // 构造待md5摘要字符串 string prestr = ""; for (int i = 0; i < sortedstr.Length; i++) { if ( !string.IsNullOrEmpty(parameters[sortedstr[i]]) && (sortedstr[i] != "sign") && (sortedstr[i] != "sign_type") ) { if (i == sortedstr.Length - 1) { prestr = prestr + sortedstr[i] + "=" + parameters[sortedstr[i]]; } else { prestr = prestr + sortedstr[i] + "=" + parameters[sortedstr[i]] + "&"; } } } prestr = prestr + _key; if (sign.Equals(AlipayRequest.GetMD5(prestr.ToString(), _charset))) { isSign = true; } //获取是否是支付宝服务器发来的请求的验证结果 string responseTxt = "true"; if (notify_id != null && notify_id != "") { responseTxt = GetResponseTxt(notify_id); } if (responseTxt == "true" && isSign)//验证成功 { return(true); } else//验证失败 { return(false); } }