| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Net;
- using System.Text;
- using Library;
- using LitJson;
- using MySystem.Entity.UnionPay;
- using Org.BouncyCastle.Crypto.Digests;
- using Org.BouncyCastle.Crypto.Macs;
- using Org.BouncyCastle.Crypto.Parameters;
- namespace MySystem.Util.UnionPay
- {
- /// <summary>
- /// 银联商户交易帮助类
- /// </summary>
- public class UnionPayMerchantTradeHelper : UnionPayBase
- {
- public readonly static UnionPayMerchantTradeHelper Instance = new UnionPayMerchantTradeHelper();
- private UnionPayMerchantTradeHelper()
- {
- }
- /// <summary>
- /// 商户注册
- /// </summary>
- /// <param name="merchantInfo">商户信息</param>
- /// <returns>注册结果</returns>
- public UnionPayResponse<UnionPayMerchantRegisterResponse> MerchantRegister(UnionPayMerchantRegisterRequest merchantInfo)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, merchantInfo);
- // 调用新的方法
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/merchant/register";
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/merchant/register", req, new Dictionary<string, string>());
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "联合收单商户注册", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<UnionPayMerchantRegisterResponse>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "联合收单商户注册异常", true);
- return new UnionPayResponse<UnionPayMerchantRegisterResponse>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 获取证件类型列表
- /// </summary>
- /// <param name="idCardTypesRequest">获取证件类型列表请求参数</param>
- /// <returns>证件类型列表</returns>
- public UnionPayResponse<List<UnionPayIdCardTypeInfo>> GetIdCardTypes(UnionPayIdCardTypesRequest idCardTypesRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, idCardTypesRequest);
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/agentManager/getIdCardTypes";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/agentManager/getIdCardTypes", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联获取证件类型列表", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayIdCardTypeInfo>>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联获取证件类型列表异常", true);
- return new UnionPayResponse<List<UnionPayIdCardTypeInfo>>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 获取商户详情
- /// </summary>
- /// <param name="merchantDetailRequest">获取商户详情请求参数</param>
- /// <returns>商户详情</returns>
- public UnionPayResponse<UnionPayMerchantDetailResponseData> GetMerchantDetail(UnionPayMerchantDetailRequest merchantDetailRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, merchantDetailRequest);
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/merchant/getMerchantDetail";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/merchant/getMerchantDetail", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联获取商户详情", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<UnionPayMerchantDetailResponseData>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联获取商户详情异常", true);
- return new UnionPayResponse<UnionPayMerchantDetailResponseData>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 更新商户信息
- /// </summary>
- /// <param name="updateRequest">更新商户信息请求参数</param>
- /// <returns>更新结果</returns>
- public UnionPayResponse UpdateMerchantInfo(UnionPayUpdateMerchantInfoRequest updateRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, updateRequest);
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/merchant/updateMerchantInfo";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/merchant/updateMerchantInfo", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联更新商户信息", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联更新商户信息异常", true);
- return new UnionPayResponse
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 处理商户审核信息回调
- /// </summary>
- /// <param name="callbackRequest">商户审核回调请求参数</param>
- /// <returns>回调处理结果</returns>
- public UnionPayResponse ProcessMerchantReviewCallback(UnionPayMerchantReviewCallbackRequest callbackRequest)
- {
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数记录日志
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(callbackRequest);
- logString += "\n" + "商户审核回调请求参数\n" + req;
- // TODO: 实现具体的回调处理逻辑
- // 1. 验证商户信息
- // 2. 更新商户状态
- // 3. 记录审核日志
- // 4. 触发后续业务流程(如通知商户等)
- logString += "\n" + "商户审核回调处理成功";
- LogHelper.Instance.WriteLog(logString, "银联商户审核回调处理", true);
- // 返回成功响应
- return new UnionPayResponse
- {
- error_code = "0",
- error_msg = "success",
- count = 0,
- data = null
- };
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联商户审核回调处理异常", true);
- return new UnionPayResponse
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- }
- }
|