Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }