Files
g.hnyhua.cn/Mtxfw.VipSite/pay/pay.aspx.cs
2026-02-07 15:48:27 +08:00

211 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;
using System.Text;
using System.Globalization;
namespace Mtxfw.VipSite
{
public partial class pay : System.Web.UI.Page
{
public Mtxfw.Utility.Config config = new Mtxfw.Utility.Config("");
Mtxfw.DAL.user_Results daoResults = new Mtxfw.DAL.user_Results();
public string IFApp = "0", responseBody = "", signature = "", noncestr = "", timestamp = "", openid = "";
public string timeStamp = "", nonceStr = "", paySign = "", signType = "", reResult = "",rurl="";
protected void Page_Load(object sender, EventArgs e)
{
string str_u = Request.ServerVariables["HTTP_USER_AGENT"].Trim().ToLower();
if (str_u.IndexOf("micromessenger") != -1)
{
IFApp = "1";
}
if (!IsPostBack)
{
try
{
////////////////////////////////////////////请求参数////////////////////////////////////////////
if (!String.IsNullOrEmpty(Request.QueryString["ResultId"]))
{
Int64 ResultId = Convert.ToInt64(Request.QueryString["ResultId"].ToString());
if (IFApp == "1")
{
if (Session["payopenid"] != null)
{
openid = Session["payopenid"].ToString();
}
if (openid == "")
{
if (!String.IsNullOrEmpty(Request.QueryString["code"]))
{
string paycode = Request.QueryString["code"].ToString();
string weixinresult = Mtxfw.Utility.Common.getPage2("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + config.webappKey + "&secret=" + config.webappSecret + "&code=" + paycode + "&grant_type=authorization_code", "", "utf-8", false, false, "");
Mtxfw.Utility.Common.WriteHtml("/weixin/weixinresult.txt", weixinresult);
if (weixinresult.IndexOf("openid") != -1)
{
Mtxfw.shop.WXaccess_token ac = null;
ac = (Mtxfw.shop.WXaccess_token)FromJson2(weixinresult);
openid = ac.openid;
Session["payopenid"] = openid;
}
}
else
{
rurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + config.webappKey + "&redirect_uri=" + UrlEncode(config.webUrl + "/pay/pay.aspx?t=1&ResultId=" + ResultId) + "&response_type=code&scope=snsapi_base&#wechat_redirect";
}
}
noncestr = Mtxfw.Utility.Common.CreatenNonce_str();
timestamp = Mtxfw.Utility.Common.timeStamp();
string jsapi_ticket = Mtxfw.Utility.Common.getjsapi_ticket(Context, config.webappKey, config.webappSecret, config);
string string1 = "";
string tmpStr = Mtxfw.Utility.Common.GetSignature(jsapi_ticket, nonceStr, timestamp, config.webUrl + "/mobile/smpay", out string1);
signature = tmpStr;
}
Mtxfw.Model.user_Results ReModel = daoResults.GetModel(ResultId);
if (ReModel != null)
{
if (ReModel.utype == "2" && ReModel.Seef == 0)
{
if (IFApp == "1")
{
DateTime dt = DateTime.Now;
string sys_id = config.hfpaysys_id;
string product_id = config.hfpayproduct_id;
string req_date = dt.ToString("yyyyMMdd");
string req_seq_id = ReModel.ListNumber;
string huifu_id = config.hfpayMerchantID;
string goods_desc = ReModel.conent;
string trade_type = "T_JSAPI";//T_JSAPI: 微信公众号 T_MINIAPP: 微信小程序 A_JSAPI: 支付宝 A_NATIVE: 支付宝正扫 U_NATIVE: 银联正扫 U_JSAPI: 银联JS D_NATIVE: 数字人民币正扫 T_H5微信直连H5支付 T_APP微信APP支付 T_NATIVE微信正扫
string wx_data = "";
wx_data = "{\\\"sub_appid\\\":\\\"" + config.webappKey + "\\\",\\\"sub_openid\\\":\\\"" + openid + "\\\"}";
string trans_amt = ReModel.b0.ToString("f2");
string time_expire = dt.AddMinutes(10).ToString("yyyyMMddHHmmss");
string notify_url = config.webUrl + "/pay/hfpay_notify_url.aspx";
SortedDictionary<string, string> pay_dic = new SortedDictionary<string, string>();
pay_dic.Add("req_date", req_date);
pay_dic.Add("req_seq_id", req_seq_id);
pay_dic.Add("huifu_id", huifu_id);
pay_dic.Add("goods_desc", goods_desc);
pay_dic.Add("trade_type", trade_type);
if (wx_data != "")
{
pay_dic.Add("wx_data", wx_data);
}
pay_dic.Add("trans_amt", trans_amt);
pay_dic.Add("time_expire", time_expire);
pay_dic.Add("notify_url", notify_url);
string get_PaySign = Mtxfw.Utility.Interface_WxPay.BuildRequest0(pay_dic, config.hfpayPrivateKey);
string strq0 = "{";
strq0 += "\"sys_id\":\"" + sys_id + "\",";
strq0 += "\"product_id\":\"" + product_id + "\",";
strq0 += "\"data\":{";
strq0 += "\"req_date\":\"" + req_date + "\",";
strq0 += "\"req_seq_id\":\"" + req_seq_id + "\",";
strq0 += "\"huifu_id\":\"" + huifu_id + "\",";
strq0 += "\"goods_desc\":\"" + goods_desc + "\",";
strq0 += "\"trade_type\":\"" + trade_type + "\",";
if (wx_data != "")
{
strq0 += "\"wx_data\":\"" + wx_data + "\",";
}
strq0 += "\"trans_amt\":\"" + trans_amt + "\",";
strq0 += "\"time_expire\":\"" + time_expire + "\",";
strq0 += "\"notify_url\":\"" + notify_url + "\"";
strq0 += "}";
strq0 += ",\"sign\":\"" + get_PaySign + "\"";
strq0 += "}";
string strResult = Mtxfw.Utility.Common.getPage2("https://api.huifu.com/v2/trade/payment/jspay", "", "utf-8", true, true, strq0);
Mtxfw.Utility.Common.WriteHtml("/weixin/apiajaxstrResult.txt", strResult);
huifuresult hr = (huifuresult)FromhuifuresultJson(strResult);
if (hr.data.resp_code == "00000100")
{
huifuresult2 hr0 = (huifuresult2)Fromhuifuresult2Json(strResult);
string pay_info = hr0.data.pay_info;
hjpay_rc_Result hjrc_Result = (hjpay_rc_Result)Fromhjpay_rc_Result(pay_info);
reResult = hjrc_Result.package;
timeStamp = hjrc_Result.timeStamp;
nonceStr = hjrc_Result.nonceStr;
paySign = hjrc_Result.paySign;
signType = hjrc_Result.signType;
}
else
{
responseBody = hr.data.resp_desc;
Mtxfw.Utility.Common.WriteHtml("/weixin/apiajaxstrResulterr.txt", strResult + "|" + strq0);
}
}
}
}
}
}
catch (Exception err)
{
Mtxfw.Utility.Common.WriteHtml("/weixin/weixin1.txt", err.ToString());
}
}
}
public object Fromhuifupayresult1Json(string json)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<huifupayresult1>(json);
}
public object FromhuifuresultJson(string json)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<huifuresult>(json);
}
public object Fromhuifuresult1Json(string json)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<huifuresult1>(json);
}
public object Fromhuifuresult2Json(string json)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<huifuresult2>(json);
}
public object FromJson2(string json)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<Mtxfw.shop.WXaccess_token>(json);
}
public object Fromhjpay_rc_Result(string json)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<hjpay_rc_Result>(json);
}
/// <summary>
/// url编码
/// </summary>
/// <param name="value">The value to Url encode</param>
/// <returns>Returns a Url encoded string</returns>
private string UrlEncode(string value)
{
string unreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
StringBuilder result = new StringBuilder();
foreach (char symbol in value)
{
if (unreservedChars.IndexOf(symbol) != -1)
{
result.Append(symbol);
}
else
{
result.Append('%' + String.Format("{0:X2}", (int)symbol));
}
}
return result.ToString();
}
}
}