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

176 lines
9.5 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.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
namespace Mtxfw.shop
{
public partial class kqpay : System.Web.UI.Page
{
#region
//人民币网关账号该账号为11位人民币网关商户账号+01,该参数必填。
public string merchantAcctId = "1002221632301";
//编码方式1代表 UTF-8; 2 代表 GBK; 3代表 GB2312 默认为1,该参数必填。
public string inputCharset = "3";
//接收支付结果的页面地址,该参数一般置为空即可。
public string pageUrl = "";
//服务器接收支付结果的后台地址,该参数务必填写,不能为空。
public string bgUrl = "http://www.hzmfgw.com/pay/kq_receive.aspx";
//网关版本固定值v2.0,该参数必填。
public string version = "v2.0";
//语言种类1代表中文显示2代表英文显示。默认为1,该参数必填。
public string language = "1";
//签名类型,该值为4代表PKI加密方式,该参数必填。
public string signType = "4";
//支付人姓名,可以为空。
public string payerName = "";
//支付人联系类型1 代表电子邮件方式2 代表手机联系方式。可以为空。
public string payerContactType = "";
//支付人联系方式与payerContactType设置对应payerContactType为1则填写邮箱地址payerContactType为2则填写手机号码。可以为空。
public string payerContact = "";
//商户订单号,以下采用时间来定义订单号,商户可以根据自己订单号的定义规则来定义该值,不能为空。
public string orderId = DateTime.Now.ToString("yyyyMMddHHmmss");
//订单金额金额以“分”为单位商户测试以1分测试即可切勿以大金额测试。该参数必填。
public string orderAmount = "1";
//订单提交时间格式yyyyMMddHHmmss20071117020101不能为空。
public string orderTime = DateTime.Now.ToString("yyyyMMddHHmmss");
//商品名称,可以为空。
public string productName = "付款";
//商品数量,可以为空。
public string productNum = "1";
//商品代码,可以为空。
public string productId = "55558888";
//商品描述,可以为空。
public string productDesc = "";
//扩展字段1商户可以传递自己需要的参数支付完快钱会原值返回可以为空。
public string ext1 = "";
//扩展自段2商户可以传递自己需要的参数支付完快钱会原值返回可以为空。
public string ext2 = "";
//支付方式一般为00代表所有的支付方式。如果是银行直连商户该值为10必填。
public string payType = "00";
//银行代码如果payType为00该值可以为空如果payType为10该值必须填写具体请参考银行列表。
public string bankId = "";
//同一订单禁止重复提交标志实物购物车填1虚拟产品用0。1代表只能提交一次0代表在支付不成功情况下可以再提交。可为空。
public string redoFlag = "";
//快钱合作伙伴的帐户号,即商户账号,可为空。
public string pid = "";
// signMsg 签名字符串 不可空,生成加密签名串
public string signMsg = "";
#endregion
Mtxfw.Utility.Config config = new Mtxfw.Utility.Config();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
try
{
////////////////////////////////////////////请求参数////////////////////////////////////////////
Double Addmoney = Convert.ToDouble(config.webMoney1) * 100;
orderAmount = (Convert.ToDouble(config.webMoney1)*100).ToString();
//商户订单号
orderId = DateTime.Now.ToString("yyyyMMddHHmmss");
Model.user_Results_jl2 mjl2 = new Model.user_Results_jl2();
mjl2.MemberId = 0;
mjl2.MemberId2 = 0;
mjl2.Addmoney = Addmoney;
mjl2.Cutmoney =0;
mjl2.Totalmoney = Addmoney;
mjl2.addtime = DateTime.Now;
mjl2.BZContent = "付款测试通道";
mjl2.PayID = orderId;
mjl2.OrdersIDs = "";
mjl2.OrdersID = 0;
mjl2.utype = 2;
mjl2.utype2 = 1;
mjl2.Seef = 0;
mjl2.seeftime = DateTime.Now;
new DAL.user_Results_jl2().Add(mjl2);
//订单名称
///productDesc = (t == "1" ? "购买商品付款" : "账户充值");
if (Request.QueryString["pay_bank"] != null)
{
if (Request.QueryString["pay_bank"].Trim() != "")
{
payType = Request.QueryString["pay_bank"];
}
}
//拼接字符串
string signMsgVal = "";
signMsgVal = appendParam(signMsgVal, "inputCharset", inputCharset);
signMsgVal = appendParam(signMsgVal, "pageUrl", pageUrl);
signMsgVal = appendParam(signMsgVal, "bgUrl", bgUrl);
signMsgVal = appendParam(signMsgVal, "version", version);
signMsgVal = appendParam(signMsgVal, "language", language);
signMsgVal = appendParam(signMsgVal, "signType", signType);
signMsgVal = appendParam(signMsgVal, "merchantAcctId", merchantAcctId);
signMsgVal = appendParam(signMsgVal, "payerName", payerName);
signMsgVal = appendParam(signMsgVal, "payerContactType", payerContactType);
signMsgVal = appendParam(signMsgVal, "payerContact", payerContact);
signMsgVal = appendParam(signMsgVal, "orderId", orderId);
signMsgVal = appendParam(signMsgVal, "orderAmount", orderAmount);
signMsgVal = appendParam(signMsgVal, "orderTime", orderTime);
signMsgVal = appendParam(signMsgVal, "productName", productName);
signMsgVal = appendParam(signMsgVal, "productNum", productNum);
signMsgVal = appendParam(signMsgVal, "productId", productId);
signMsgVal = appendParam(signMsgVal, "productDesc", productDesc);
signMsgVal = appendParam(signMsgVal, "ext1", ext1);
signMsgVal = appendParam(signMsgVal, "ext2", ext2);
signMsgVal = appendParam(signMsgVal, "payType", payType);
signMsgVal = appendParam(signMsgVal, "redoFlag", redoFlag);
signMsgVal = appendParam(signMsgVal, "pid", pid);
///PKI加密
///编码方式UTF-8 GB2312 用户可以根据自己系统的编码选择对应的加密方式
byte[] bytes = System.Text.Encoding.GetEncoding("GB2312").GetBytes(signMsgVal);
//byte[] bytes = System.Text.Encoding.UTF8.GetBytes(signMsgVal);
X509Certificate2 cert = new X509Certificate2(HttpContext.Current.Server.MapPath("/App_Data/99bill-rsa.pfx"), "123456", X509KeyStorageFlags.MachineKeySet);
RSACryptoServiceProvider rsapri = (RSACryptoServiceProvider)cert.PrivateKey;
RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsapri);
byte[] result;
f.SetHashAlgorithm("SHA1");
SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
result = sha.ComputeHash(bytes);
signMsg = System.Convert.ToBase64String(f.CreateSignature(result)).ToString();
label_msg.Text = "<script> $(document).ready(function () {document.forms['kqPay'].submit();});</script>";
}
catch (Exception err)
{
Mtxfw.Utility.Common.WriteHtml("/weixin/weixin1.txt", err.ToString());
}
}
}
//功能函数。将变量值不为空的参数组成字符串
#region
public string appendParam(string returnStr, string paramId, string paramValue)
{
if (returnStr != "")
{
if (paramValue != "")
{
returnStr += "&" + paramId + "=" + paramValue;
}
}
else
{
if (paramValue != "")
{
returnStr = paramId + "=" + paramValue;
}
}
return returnStr;
}
#endregion
}
}