/// <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); }
/// <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 不合法"); } }
/// <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); }
/// <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); }