| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- 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 UnionPayHelper : UnionPayBase
- {
- public readonly static UnionPayHelper Instance = new UnionPayHelper();
- private UnionPayHelper()
- {
- }
- /// <summary>
- /// 上传图片
- /// </summary>
- /// <param name="uploadRequest">上传图片请求参数</param>
- /// <returns>上传结果</returns>
- public UnionPayResponse<UnionPayUploadPicResponseData> UnionPayUploadPic(UnionPayUploadPicRequest uploadRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, uploadRequest);
- // 调用新的方法
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/common/uploadPic";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/common/uploadPic", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联上传图片", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<UnionPayUploadPicResponseData>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联上传图片异常", true);
- return new UnionPayResponse<UnionPayUploadPicResponseData>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 获取行业编码
- /// </summary>
- /// <param name="mccRequest">获取行业编码请求参数</param>
- /// <returns>行业编码列表</returns>
- public UnionPayResponse<List<UnionPayMccInfo>> GetMccList(UnionPayMccListRequest mccRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, mccRequest);
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/mcc/mccList";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/mcc/mccList", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联获取行业编码", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayMccInfo>>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联获取行业编码异常", true);
- return new UnionPayResponse<List<UnionPayMccInfo>>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 获取地区编码
- /// </summary>
- /// <param name="areaCodeRequest">获取地区编码请求参数</param>
- /// <returns>地区编码列表</returns>
- public UnionPayResponse<List<UnionPayAreaCodeInfo>> GetAreaCode(UnionPayAreaCodeRequest areaCodeRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, areaCodeRequest);
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/base/areaCode";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/base/areaCode", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联获取地区编码", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayAreaCodeInfo>>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联获取地区编码异常", true);
- return new UnionPayResponse<List<UnionPayAreaCodeInfo>>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 获取银行列表
- /// </summary>
- /// <param name="bankListRequest">获取银行列表请求参数</param>
- /// <returns>银行列表</returns>
- public UnionPayResponse<List<UnionPayBankInfo>> GetBankList(UnionPayBankListRequest bankListRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, bankListRequest);
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/base/bankList";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/base/bankList", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联获取银行列表", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayBankInfo>>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联获取银行列表异常", true);
- return new UnionPayResponse<List<UnionPayBankInfo>>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- /// <summary>
- /// 获取银行网点列表
- /// </summary>
- /// <param name="branchListRequest">获取银行网点列表请求参数</param>
- /// <returns>银行网点列表</returns>
- public UnionPayResponse<List<UnionPayBranchInfo>> GetBranchList(UnionPayBranchListRequest branchListRequest)
- {
- // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
- var request = CreateRequest(UnionPayAppId, UnionPayAppId, branchListRequest);
- string logString = "";
- logString += "\n" + DateTime.Now.ToString();
- try
- {
- // 序列化请求参数
- string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
- // 记录请求日志
- logString += "\n" + "请求参数\n" + req;
- logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/base/branchList";
- // 发送请求
- string result = PostWebRequest(UnionPayRequestUrl + "/open-api/base/branchList", req, new Dictionary<string, string>());
- // 记录响应日志
- logString += "\n" + "返回\n" + result + "\n\n";
- LogHelper.Instance.WriteLog(logString, "银联获取银行网点列表", true);
- // 反序列化为UnionPayResponse
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayBranchInfo>>>(result);
- }
- catch (Exception ex)
- {
- logString += "\n" + "异常:" + ex.ToString();
- LogHelper.Instance.WriteLog(logString, "银联获取银行网点列表异常", true);
- return new UnionPayResponse<List<UnionPayBranchInfo>>
- {
- error_code = "9999",
- error_msg = "系统异常"
- };
- }
- }
- }
- }
|