Exemple #1
0
        private bool Verify(HttpRequestBase request, NameValueCollection requestVal, out AliPayReturnModel model)
        {
            bool result = false;
            SortedDictionary <string, string> sortedDic = new SortedDictionary <string, string>();

            foreach (var item in requestVal.AllKeys)
            {
                if (item.ToLower() != "sign" && item.ToLower() != "sign_type" && !string.IsNullOrEmpty(item))
                {
                    sortedDic.Add(item, requestVal[item]);
                }
            }

            string requestSign     = requestVal["sign"];
            string requestSigntype = requestVal["sign_type"];
            string param           = CreateURLParamString(sortedDic);

            EnumSignType signType = requestSigntype == "MD5" ? EnumSignType.MD5
                                    : requestSigntype == "RSA" ? EnumSignType.RSA
                                    : EnumSignType.MD5;

            if (signType == EnumSignType.MD5)
            {
                string sign = BuildRequestsign(param, signType);
                if (requestSign.Equals(sign))
                {
                    result = true;
                }
            }
            else
            {
                result = RSAFromPkcs8.verify(param, requestSign, AlipayConfig.ALIPay_RSA_ALI_PUBLICKEY, "utf-8");
            }

            string responseText = GetResponseTxt(requestVal["notify_id"]);

            bool resultVal = result && responseText == "true";

            if (resultVal)
            {
                model = new AliPayReturnModel()
                {
                    OutTradeNo  = request.Form["out_trade_no"],
                    TradeNo     = request.Form["trade_no"],
                    TradeStatus = request.Form["trade_status"]
                };

                decimal total_fee;
                decimal.TryParse(request.Form["total_fee"], out total_fee);
                model.TotalFee = total_fee;
            }
            else
            {
                model = null;
            }

            return(resultVal);
        }
        private string BuildRequest(string orderNo, string subject, decimal totalAmt, EnumAliPayType aliPayType, EnumSignType signType = EnumSignType.MD5)
        {
            SortedDictionary<string, string> dicParam = CreateParam(orderNo, subject, totalAmt, aliPayType);
            string urlParam = CreateURLParamString(dicParam, aliPayType);
            string sign = HttpUtility.UrlEncode(BuildRequestsign(urlParam, signType), Encoding.UTF8);
            dicParam.Add("sign", sign);
            dicParam.Add("sign_type", signType.ToString());

            if (aliPayType == EnumAliPayType.Mobile)
            {
                return urlParam + "&sign=\"" + sign + "\"&sign_type=\"" + signType.ToString() + "\"";
            }
            else
                return BuildForm(dicParam);
        }
Exemple #3
0
        private string BuildRequestsign(string urlParam, EnumSignType signType)
        {
            string mysign = "";

            if (signType == EnumSignType.MD5)
            {
                string preString = urlParam + AlipayConfig.ALI_KEY;
                mysign = MD5Helper.Sign(preString, AlipayConfig.CHARTSET);
            }
            else if (signType == EnumSignType.RSA)
            {
                mysign = RSASign(urlParam, AlipayConfig.ALIPay_RSA_PRIVATEKEY, AlipayConfig.CHARTSET);
            }

            return(mysign);
        }
 public string BuildWebPay(string orderNo, string subject, decimal payAmount, EnumSignType signType = EnumSignType.MD5)
 {
     return this.BuildRequest(orderNo, subject, payAmount, EnumAliPayType.Website, signType);
 }
        private string BuildRequestsign(string urlParam, EnumSignType signType)
        {
            string mysign = "";

            if (signType == EnumSignType.MD5)
                mysign = MD5Sign(urlParam, Config.ALI_KEY, Config.CHARTSET);
            else if (signType == EnumSignType.RSA)
                mysign = RSASign(urlParam, Config.ALIPay_RSA_PRIVATEKEY, Config.CHARTSET);

            return mysign;
        }
 public string BuildMobilePay(string orderNo, string subject, decimal payAmount, EnumSignType signType = EnumSignType.RSA)
 {
     return this.BuildRequest(orderNo, subject, payAmount, EnumAliPayType.Mobile, signType);
 }
        private string BuildRequestsign(string urlParam, EnumSignType signType)
        {
            string mysign = "";

            if (signType == EnumSignType.MD5)
            {
                string preString = urlParam + AlipayConfig.ALI_KEY;
                mysign = MD5Helper.Sign(preString, AlipayConfig.CHARTSET);
            }
            else if (signType == EnumSignType.RSA)
                mysign = RSASign(urlParam, AlipayConfig.ALIPay_RSA_PRIVATEKEY, AlipayConfig.CHARTSET);

            return mysign;
        }