コード例 #1
0
ファイル: TianTaApi.cs プロジェクト: nobug9527/shikongdb_new
        /// <summary>
        /// 支付状态查询接口
        /// </summary>
        /// <param name="tianTaData">提交的参数</param>
        /// <param name="timeOut">超时时间</param>
        /// <returns></returns>
        public static TianTaData Query(TianTaData tianTaData, int timeOut = 6)
        {
            string url = "http://pay.tiantapay.com/scanpay.php/Gateway/query";

            //检测必填参数
            if (!tianTaData.IsSet("pay_no") && !tianTaData.IsSet("trade_no"))
            {
                throw new TianTaException("订单查询接口中,商户订单号【pay_no】、第三方订单号【trade_no】至少填一个!");
            }
            else if (!tianTaData.IsSet("type"))//支付渠道
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数支付渠道【type】!");
            }

            if (!tianTaData.IsSet("user_token"))//商户号
            {
                tianTaData.SetValue("user_token", TianTaConfig.GetConfig().GetMchID());
            }
            if (!tianTaData.IsSet("version"))//版本号
            {
                tianTaData.SetValue("version", TianTaConfig.GetConfig().GetVersion());
            }
            //LogQueue.Write(LogType.Debug, "参数:", $"第三方订单号:{tianTaData.GetValue("trade_no")},商户订单号:{tianTaData.GetValue("pay_no")}");
            tianTaData.SetValue("sign", tianTaData.MakeSign());//签名
            //LogQueue.Write(LogType.Debug, "签名:", tianTaData.GetValue("sign").ToString());
            string param = tianTaData.ToArray();
            //LogQueue.Write(LogType.Debug, "Post:", param);
            string     response = Post(param, url, timeOut);//调用HTTP通信接口以提交数据到API
            TianTaData taData   = new TianTaData();

            taData.FromJson(response);

            return(taData);
        }
コード例 #2
0
        /// <summary>
        /// 签名生成算法
        /// </summary>
        /// <param name="key">支付密钥</param>
        /// <param name="signType">签名方式</param>
        /// <returns></returns>
        public string MakeSing(string key, string signType)
        {
            //转url格式
            string str = ToUrl();

            //LogQueue.Write(LogType.Debug, "url:", str);
            //在string后加入API KEY
            str += "&key=" + key;
            //LogQueue.Write(LogType.Debug, "urlkey:", str);
            if (signType == SIGN_TYPE_MD5)
            {
                var md5 = MD5.Create();
                var bs  = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
                var sb  = new StringBuilder();
                foreach (byte b in bs)
                {
                    sb.Append(b.ToString("x2"));
                }
                //所有字符转为大写
                return(sb.ToString().ToUpper());
            }
            else if (signType == SIGN_TYPE_HMAC_SHA256)
            {
                return(CalcHMACSHA256Hash(str, TianTaConfig.GetConfig().GetKey()));
            }
            else
            {
                throw new TianTaException("sign_type 不合法");
            }
        }
コード例 #3
0
ファイル: TianTaApi.cs プロジェクト: nobug9527/shikongdb_new
        /// <summary>
        /// App支付
        /// </summary>
        /// <param name="tianTaData">提交的参数</param>
        /// <param name="timeOut">超时时间</param>
        /// <returns></returns>
        public static TianTaData AppPay(TianTaData tianTaData, int timeOut = 6)
        {
            string url = "http://pay.tiantapay.com/scanpay.php/Gateway/apppay";

            //检测必填参数
            if (!tianTaData.IsSet("money"))//订单金额
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数订单金额【money】!");
            }
            else if (!tianTaData.IsSet("body")) //商品名称
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数商品名称【body】!");
            }
            else if (!tianTaData.IsSet("orderNo")) //订单号
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数订单号【orderNo】!");
            }
            else if (!tianTaData.IsSet("type"))//支付渠道
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数支付渠道【type】!");
            }

            if (!tianTaData.IsSet("appid"))//AppId
            {
                tianTaData.SetValue("appid", TianTaConfig.GetConfig().GetAppId());
            }
            if (!tianTaData.IsSet("user_token"))//商户号
            {
                tianTaData.SetValue("user_token", TianTaConfig.GetConfig().GetMchID());
            }
            if (!tianTaData.IsSet("notifyUrl"))//异步通知url
            {
                if (tianTaData.GetValue("type").ToString() == "WECHAT")
                {
                    tianTaData.SetValue("notifyUrl", TianTaConfig.GetConfig().GetNotifyUrlWeChat());
                }
                else
                {
                    tianTaData.SetValue("notifyUrl", TianTaConfig.GetConfig().GetNotifyUrlAlipay());
                }
            }
            if (!tianTaData.IsSet("operatorId"))//店铺编号
            {
                tianTaData.SetValue("operatorId", TianTaConfig.GetConfig().GetOperatorId());
            }
            if (!tianTaData.IsSet("version"))//版本号
            {
                tianTaData.SetValue("version", TianTaConfig.GetConfig().GetVersion());
            }
            tianTaData.SetValue("sign", tianTaData.MakeSign());//签名
            string param = tianTaData.ToArray();
            //LogQueue.Write(LogType.Debug, "甜塔扫码支付String", param);
            string     response = Post(param, url, timeOut);//调用HTTP通信接口以提交数据到API
            TianTaData taData   = new TianTaData();

            taData.FromJson(response);
            return(taData);
        }
コード例 #4
0
ファイル: TianTaApi.cs プロジェクト: nobug9527/shikongdb_new
        /// <summary>
        /// 退款接口
        /// </summary>
        /// <param name="tianTaData">提交的参数</param>
        /// <param name="timeOut">超时时间</param>
        /// <returns></returns>
        public static TianTaData Refund(TianTaData tianTaData, int timeOut = 6)
        {
            string url = "http://pay.tiantapay.com/scanpay.php/Gateway/refund";

            //检测必填参数
            if (!tianTaData.IsSet("pay_no") && !tianTaData.IsSet("trade_no"))
            {
                throw new TianTaException("订单查询接口中,商户订单号【pay_no】、第三方订单号【trade_no】至少填一个!");
            }
            else if (!tianTaData.IsSet("type"))//支付渠道
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数支付渠道【type】!");
            }
            else if (!tianTaData.IsSet("money"))//退款金额
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数退款金额【money】!");
            }
            else if (!tianTaData.IsSet("refund_no"))//商户退款单号
            {
                throw new TianTaException("提交扫码支付API接口中,缺少必填参数退款单号【refund_no】!");
            }

            if (!tianTaData.IsSet("user_token"))//商户号
            {
                tianTaData.SetValue("user_token", TianTaConfig.GetConfig().GetMchID());
            }
            if (!tianTaData.IsSet("version"))//版本号
            {
                tianTaData.SetValue("version", TianTaConfig.GetConfig().GetVersion());
            }

            tianTaData.SetValue("sign", tianTaData.MakeSign()); //签名
            string     param    = tianTaData.ToArray();
            string     response = Post(param, url, timeOut);    //调用HTTP通信接口以提交数据到API
            TianTaData taData   = new TianTaData();

            taData.FromJson(response);

            return(taData);
        }