Example #1
0
        public static void CheckResponseSign(string sign, string signSourceDate, AlipayFormSetting setting)
        {
            if (string.IsNullOrEmpty(setting.PublicKey) || string.IsNullOrEmpty(setting.Charset))
            {
                throw new AliPayException("public key or charset is Empty!");
            }

            if (signSourceDate == null)
            {
                throw new AliPayException("sign check fail: sign is Empty!");
            }

            var rsaCheckContent = AlipaySignature.RSACheckContent(signSourceDate, sign, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlLPFduIFgSUbSLCyHTnvdQvLfU8kR8i/6OSMjnfcoIl0ROMAAdcv7JWD1BzqMTXfvZrmFWj4yuznSqNpdqoL11lQ35EGMZSHntsu5tpCg+9iguhBnTgHn+wr7pYxF9SfJU/6MxYdfArtcyx5FzKLrtpuVkDQZRavIrfoB49NJRXzV4bMPAvhnB3k/O9xwkT1UAh5gbqbaKKYdymInKmstrhQ5kqKCSQey4js/zM14y9SXXyxIHO6BGEGWepmym/2C2BDhMqANnujHZq4bEtsV+aTob5BDA6FcPijMUrlUcFCqParu4c4X0FlhoHsG0vm5owfjpjMsetggmPKR1nzQwIDAQAB",
                                                                  setting.Charset, setting.SignType, false);

            if (!rsaCheckContent)
            {
                throw new AliPayException("sign check fail: check Sign and Data Fail!");
            }
        }
Example #2
0
        public static void CheckResponseSign(string sign, string signSourceDate, AlipayFormSetting setting)
        {
            if (string.IsNullOrEmpty(setting.PublicKey) || string.IsNullOrEmpty(setting.Charset))
            {
                throw new AliPayException("public key or charset is Empty!");
            }

            if (signSourceDate == null)
            {
                throw new AliPayException("sign check fail: sign is Empty!");
            }

            var rsaCheckContent = AlipaySignature.RSACheckContent(signSourceDate, sign, setting.PublicKey,
                                                                  setting.Charset, setting.SignType);

            if (!rsaCheckContent)
            {
                throw new AliPayException("sign check fail: check Sign and Data Fail!");
            }
        }
Example #3
0
        public static string Query(AopDictionary bizContent, AlipayFormSetting setting)
        {
            try
            {
                QueryValidation(bizContent);
                var data    = new AlipayData();
                var request = RequestBase(setting, ALIPAY_QUERY);
                request.Add("biz_content", data.ToJson(bizContent));

                request.Add("sign", data.RSASign(request, setting.PrivateKey, setting.Charset, setting.SignType));

                var body = HttpService.DoPost(setting.ServerUrl + "?" + CHARSET + "=" + setting.Charset, request, setting.Charset);

                return(body);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(null);
            }
        }
Example #4
0
        /**
         * 跳转支付宝页面直接进行支付
         */
        public static string Pay(AopDictionary bizContent, AlipayFormSetting setting, string returnUrl, string noticeUrl)
        {
            try
            {
                PayValidation(bizContent);
                var data    = new AlipayData();
                var request = RequestBase(setting, PayMethod);
                request.Add("biz_content", data.ToJson(bizContent));
                request.Add("notify_url", noticeUrl);
                request.Add("return_url", returnUrl);
                request.Add("sign", data.RSASign(request, setting.PrivateKey, setting.Charset, setting.SignType));

                var body = BuildHtmlRequest(request, "POST", setting);

                return(body);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(null);
            }
        }
Example #5
0
        private static AopDictionary RequestBase(AlipayFormSetting setting, string method)
        {
            if (string.IsNullOrEmpty(setting.APPId))
            {
                throw new AliPayException("您的支付宝配置未能通过检查,详细信息:商户ID未指定!");
            }

            //SignType私钥检查
            if (string.IsNullOrEmpty(setting.SignType))
            {
                throw new AliPayException("您的支付宝配置未能通过检查,详细信息:签名类型未指定!");
            }

            //RSA私钥检查
            if (string.IsNullOrEmpty(setting.PrivateKey))
            {
                throw new AliPayException("您的支付宝配置未能通过检查,详细信息:未能获取到商户私钥!");
            }

            //RSA私钥格式检查
            RSA rsaCsp = AlipaySignature.LoadCertificateString(setting.PrivateKey, setting.SignType);

            if (rsaCsp == null)
            {
                throw new AliPayException("您的支付宝配置未能通过检查,详细信息:商户私钥格式错误,未能导入!");
            }

            var dic = new AopDictionary();

            dic.Add("app_id", setting.APPId);
            dic.Add("method", method);
            dic.Add("format", setting.Format);
            dic.Add("charset", setting.Charset);
            dic.Add("sign_type", setting.SignType);
            dic.Add("timestamp", DateTime.Now);
            dic.Add("version", setting.Version);

            return(dic);
        }
Example #6
0
        public IDictionary <string, object> FromJson(string body, AlipayFormSetting setting)
        {
            var json = JsonConvert.DeserializeObject <IDictionary <string, object> >(body);

            try
            {
                string sign           = json["sign"].ToString();
                var    signSourceDate = GetSignSourceData(body);

                json = JsonConvert.DeserializeObject <IDictionary <string, object> >(signSourceDate);
                if (signSourceDate.Contains("sub_code"))
                {
                    throw new AliPayException(json["sub_code"].ToString());
                }

                if (!string.IsNullOrEmpty(sign) && !string.IsNullOrEmpty(signSourceDate))
                {
                    CheckResponseSign(sign, signSourceDate, setting);

                    if (json["code"].ToString() != "10000")
                    {
                        throw new AliPayException(json["msg"].ToString());
                    }
                }
                else
                {
                    throw new AliPayException("sign check fail: body or reponse content is Empty!");
                }
            }
            catch (AliPayException ex)
            {
                throw new AliPayException(ex.Message);
            }

            return(json);
        }
Example #7
0
        private static string BuildHtmlRequest(IDictionary <string, string> dicPara, string strMethod, AlipayFormSetting setting)
        {
            //待请求参数数组
            var sbHtml = new StringBuilder();

            //sbHtml.Append("<head><meta http-equiv=\"Content-Type\" content=\"text/html\" charset= \"" + charset + "\" /></head>");

            sbHtml.Append("<form id='alipaysubmit' name='alipaysubmit' action='" + setting.ServerUrl + "?charset=" + setting.Charset +
                          "' method='" + strMethod + "'>");
            ;
            foreach (var temp in dicPara)
            {
                sbHtml.Append("<input  name='" + temp.Key + "' value='" + temp.Value + "'/>");
            }

            //submit按钮控件请不要含有name属性
            sbHtml.Append("<input type='submit' value='" + strMethod + "' style='display:none;'></form>");
            // sbHtml.Append("<input type='submit' value='" + strButtonValue + "'></form></div>");

            //表单实现自动提交
            sbHtml.Append("<script>document.forms['alipaysubmit'].submit();</script>");

            return(sbHtml.ToString());
        }