Commit 4f11ca23 authored by liudong1993's avatar liudong1993

1

parent 5aa994d1
......@@ -187,5 +187,20 @@ namespace Mall.Model.Entity.Product
get;
set;
}
/// <summary>
/// 汇付天下支付ID 退费要使用
/// </summary>
public string Adapay_Id { get; set; }
/// <summary>
/// 汇付天下 应用AppID
/// </summary>
public string App_Id { get; set; }
/// <summary>
/// 手续费金额
/// </summary>
public decimal Fee_Amt { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Mall.Model.Extend.Education
{
/// <summary>
/// 汇付天下配置扩展类
/// </summary>
public class RB_Trade_Config
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 类型 1汇付天下
/// </summary>
public int Type { get; set; }
/// <summary>
/// 商户名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 平台appid
/// </summary>
public string AppId { get; set; }
/// <summary>
/// 平台Apikey
/// </summary>
public string ApiKey { get; set; }
/// <summary>
/// 平台ApiMockKey
/// </summary>
public string ApiMockKey { get; set; }
/// <summary>
/// 平台私钥
/// </summary>
public string PrivateKey { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团ID
/// </summary>
public int GroupId { get; set; }
/// <summary>
/// 使用的校区
/// </summary>
public int SchoolId { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
......@@ -21,6 +21,8 @@ using Mall.Repository.BaseSetUp;
using Mall.Repository.Coffee;
using Mall.Common.Enum.User;
using Mall.Repository.Education;
using Mall.ThirdCore.Adapay.Model;
using Newtonsoft.Json.Linq;
namespace Mall.Module.User
{
......@@ -2498,5 +2500,147 @@ namespace Mall.Module.User
}
}
#endregion
#region 汇付天下支付
/// <summary>
/// 获取订单信息
/// </summary>
/// <param name="orderId"></param>
/// <param name="mallBaseId"></param>
/// <returns></returns>
public RB_Goods_Order_Extend GetAdapayOrderInfo(int orderId, int mallBaseId) {
var orderModel = goods_OrderRepository.GetEntity<RB_Goods_Order_Extend>(orderId);
if (orderModel != null)
{
orderModel.DetailList = goodsOrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { MallBaseId = mallBaseId, OrderId = orderModel.OrderId });
}
return orderModel;
}
/// <summary>
/// 回调更新支付
/// </summary>
/// <param name="payModel"></param>
public bool InsertAdapayOrderTrade(AdaPayResultModel payModel)
{
int MallbaseId = 0, OrderId = 0;
if (string.IsNullOrEmpty(payModel.description))
{
LogHelper.WriteInfo("InsertOrderTrade回调空值:" + JsonHelper.Serialize(payModel));
}
else
{
//拆分重要信息
string[] parms = payModel.description.Split('|');
MallbaseId = Convert.ToInt32(parms[0]);//集团Id
OrderId = Convert.ToInt32(parms[1]);//报价单ID
}
if (OrderId <= 0) { return false; }
string OpenId = "";
if (payModel.expend != null && !string.IsNullOrEmpty(payModel.expend.ToString()))
{
if (payModel.pay_channel.Contains("alipay"))
{
OpenId = JObject.Parse(payModel.expend.ToString()).GetStringValue("sub_open_id");
}
else if (payModel.pay_channel.Contains("wx"))
{
OpenId = JObject.Parse(payModel.expend.ToString()).GetStringValue("open_id");
}
}
//判断订单状态是否是待支付 2020-06-16 Add By:W
var oldOrder = goods_OrderRepository.GetEntity(OrderId);
if (oldOrder == null)
{
return false;
}
if (oldOrder.MallBaseId != MallbaseId) { return false; }
if (oldOrder.OrderStatus != Common.Enum.Goods.OrderStatusEnum.NonPayment)
{
return false;
}
//if (oldOrder.Income != payModel.pay_amt)
//{
// return false;
//}
var umodel = member_UserRepository.GetEntity(oldOrder.UserId);
if (umodel == null)
{
return false;
}
//获取订单商品
var orderGoodsList = goodsOrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend { TenantId = oldOrder.TenantId, MallBaseId = oldOrder.MallBaseId, OrderId = oldOrder.OrderId });
bool flag = goods_Online_TradeRepository.Insert(new Model.Entity.Product.RB_Goods_Online_Trade()
{
Id = 0,
User_Id = oldOrder.UserId,
FinanceId = 0,
CreateDate = DateTime.Now,
IsRefund = 2,
MallBaseId = oldOrder.MallBaseId,
Money = payModel.pay_amt,
OrderId = OrderId,
Out_Trade_No = payModel.order_no,
PayType = payModel.pay_channel,//存支付渠道
PayWay = payModel.pay_channel.Contains("alipay") ? Common.Enum.Goods.OrderPayTypeEnum.Alipay : Common.Enum.Goods.OrderPayTypeEnum.WeChatPay,
Pay_Date = DateTime.Now,
Pay_Result = 0,
RefundMoney = 0,
RefundStatus = 0,
RefundTrade_Order = OpenId,//这个存openId
Remarks = (payModel.expend != null ? payModel.expend.ToString() : "") + " and " + payModel.description, //这个存扩展参数
TenantId = oldOrder.TenantId,
Transaction_Id = payModel.out_trans_id,
Type = 1,
Adapay_Id = payModel.id,
App_Id = payModel.app_id,
Fee_Amt = payModel.fee_amt
}) > 0;
if (flag) {
//更新订单信息
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Goods_Order_Extend.MerchantsNo),payModel.out_trans_id},
{ nameof(RB_Goods_Order_Extend.PaymentTime),DateTime.Now},
{ nameof(RB_Goods_Order_Extend.PaymentWay),Common.Enum.Goods.OrderPaymentTypeEnum.OnlinePayment},
{ nameof(RB_Goods_Order_Extend.OrderStatus), Common.Enum.Goods.OrderStatusEnum.Completed}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Goods_Order_Extend.OrderId),
FiledValue=OrderId,
OperatorEnum=OperatorEnum.Equal
}
};
goods_OrderRepository.Update(keyValues, wheres);
//发送订阅消息
string goodsName = orderGoodsList.FirstOrDefault().GoodsName;
if (orderGoodsList.Count > 1)
{
if (goodsName.Length > 6)
{
goodsName = goodsName.Substring(0, 6);
}
goodsName += "等" + orderGoodsList.Count + "件";
}
else
{
if (goodsName.Length > 10)
{
goodsName = goodsName.Substring(0, 10);
}
}
appletWeChatModule.SendOrderSucceedMsg(oldOrder.TenantId, oldOrder.MallBaseId, umodel.OpenId, oldOrder.OrderNo, oldOrder.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"), (oldOrder.Income ?? 0).ToString(), goodsName);
}
return flag;
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mall.Model.Entity.Education;
using Mall.Model.Extend.Education;
using VT.FW.DB.Dapper;
namespace Mall.Repository.Education
{
/// <summary>
/// 汇付天下配置仓储层
/// </summary>
public class RB_Trade_ConfigRepository : BaseRepository<Model.Entity.User.RB_Member_User>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Trade_Config> GetList(RB_Trade_Config query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT *
FROM RB_Trade_Config
WHERE 1=1
");
if (query != null)
{
if (query.GroupId > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Trade_Config.GroupId), query.GroupId);
}
if (query.Type > 0)
{
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Trade_Config.Type), query.Type);
}
}
return Get<RB_Trade_Config>(builder.ToString()).ToList();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace AdapayCore
{
public class CoreUtils
{
public static bool debug = false;
public static string sdk_version = "C#v1.2.0";
public static string BASE_URL = "https://api.adapay.tech";
public static string RSA_PUB_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB";
public static string GetMD5Hash(string str)
{
//就是比string往后一直加要好的优化容器
StringBuilder sb = new StringBuilder();
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
//将输入字符串转换为字节数组并计算哈希。
byte[] data = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
int length = data.Length;
for (int i = 0; i < length; i++)
sb.Append(data[i].ToString("X2"));
}
return sb.ToString();
}
public static byte[] File2Bytes(string FilePath)
{
if (!System.IO.File.Exists(FilePath))
{
return new byte[0];
}
FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
byte[] buff = new byte[fs.Length];
fs.Read(buff, 0, Convert.ToInt32(fs.Length));
fs.Close();
return buff;
}
public static string getOrignalString(Dictionary<string, object> dict) {
Dictionary<string, object> params_SortedByKey = dict.OrderBy(p => p.Key).ToDictionary(p => p.Key, o => o.Value);
StringBuilder orinalStr = new StringBuilder("");
foreach (KeyValuePair<string, object> item in params_SortedByKey)
{
orinalStr.Append(item.Key)
.Append("=")
.Append(item.Value)
.Append("&");
}
if (orinalStr.Equals(""))
{
return "";
}
else {
orinalStr.Remove(orinalStr.Length - 1, 1);
}
return orinalStr.ToString();
}
public static void Log(string message)
{
if (CoreUtils.debug) {
Console.WriteLine(message);
}
}
}
}
using System;
namespace AdapayCore
{
public class MerConfig
{
public MerConfig()
{
}
//商户rsa 私钥
public string privateKey;
public string apiKey;
public string apiMockKey;
}
}
This diff is collapsed.
using System;
using System.Collections.Generic;
namespace AdapaySDK
{
public class StringUtils
{
public static string tryGetNotNullValue(Dictionary<string, object> dict, string key) {
object value = null;
dict.TryGetValue(key, out value);
if (String.IsNullOrWhiteSpace((string)value))
{
throw new Exception(value + " cannot be empty");
}
return (string)value;
}
/// <summary>
/// 获取时间
/// </summary>
/// <returns></returns>
public static string timeStamp()
{
DateTime startTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime localNow = DateTime.Now;
long timeStamp = (long)((localNow - startTime).TotalMilliseconds);
return "" + timeStamp;
}
/// <summary>
/// 时间戳反转为时间,有很多中翻转方法,但是,请不要使用过字符串(string)进行操作,大家都知道字符串会很慢!
/// </summary>
/// <param name="TimeStamp">时间戳</param>
/// <param name="AccurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回一个日期时间</returns>
public static DateTime GetTime(long TimeStamp, bool AccurateToMilliseconds = false)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
if (AccurateToMilliseconds)
{
return startTime.AddTicks(TimeStamp * 10000);
}
else
{
return startTime.AddTicks(TimeStamp * 10000000);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
/**
* 账户对象
*/
public class Account
{
/**
* 账户对象支付
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> payment(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.CREATE_ACCOUNT_PAYMENT, null);
}
/**
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
*/
public static Dictionary<string, Object> payment(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.CREATE_ACCOUNT_PAYMENT, merchantKey);
}
}
}
using System;
using System.Collections.Generic;
using AdapayCore;
namespace AdapaySDK
{
public class Adapay
{
private const string sdk_version = "C#v1.4.1";
public static string deviceId="";
public static Dictionary<string, MerConfig> merchantConfigs;
public static bool isMock = false;
private static bool _debug = false;
public static bool debug {
set {
_debug = value;
CoreUtils.debug = value;
}
get {
if (!_debug) {
return false;
}
return _debug;
}
}
public static void initWithMerConfig(MerConfig config) {
initAdapayCore();
if (null != config)
{
merchantConfigs = new Dictionary<string, MerConfig>();
merchantConfigs.Add("default", config);
}
else {
throw new Exception("configs cannot be null");
}
}
public static void initWithMerConfigs(Dictionary<string, MerConfig> configs)
{
initAdapayCore();
if (null != configs)
{
merchantConfigs = configs;
}
else
{
throw new Exception("configs cannot be null");
}
}
private static void initAdapayCore (){
CoreUtils.BASE_URL = ConfigConstant.BASE_URL;
CoreUtils.RSA_PUB_KEY = ConfigConstant.RSA_PUB_KEY;
CoreUtils.sdk_version = sdk_version;
/**
MQTT_Config.MQTT_ACCESS_KEY = MQTT_Constant.MQTT_ACCESS_KEY;
MQTT_Config.MQTT_CLIENT_ID_PREFIX = MQTT_Constant.MQTT_CLIENT_ID_PREFIX;
MQTT_Config.MQTT_END_POINT = MQTT_Constant.MQTT_END_POINT;
MQTT_Config.MQTT_INSTANCE_ID = MQTT_Constant.MQTT_INSTANCE_ID;
MQTT_Config.MQTT_TOPIC_PREFIX = MQTT_Constant.MQTT_TOPIC_PREFIX;
**/
}
}
class AdapayRequest {
public static MerConfig fetchConfig(string merchantKey)
{
if (null == merchantKey)
{
merchantKey = "default";
}
if (null == Adapay.merchantConfigs)
{
throw new Exception("Please config merchant config info at first");
}
MerConfig config = null;
Adapay.merchantConfigs.TryGetValue(merchantKey, out config);
if (null == config)
{
throw new Exception("configInfo for merchantkey-" + merchantKey + "is not configed");
}
return config;
}
public static Dictionary<string, Object> requestAdapay(Dictionary<string, object> requestParams, string uri, string merchantKey) {
MerConfig config = fetchConfig(merchantKey);
string apikey = config.apiKey;
if (Adapay.isMock)
{
apikey = config.apiMockKey;
}
return NetUtils.requestAdapay(requestParams, null, null, uri, NetUtils.POST, apikey, config.privateKey);
}
public static Dictionary<string, Object> getRequestAdapay(Dictionary<string, object> requestParams, string uri, string merchantKey)
{
MerConfig config = fetchConfig(merchantKey);
string apikey = config.apiKey;
if (Adapay.isMock)
{
apikey = config.apiMockKey;
}
return NetUtils.requestAdapay(requestParams, null, null, uri, NetUtils.GET, apikey, config.privateKey);
}
public static Dictionary<string, Object> requestAdapay(Dictionary<string, object> requestParams, string filePath, string fileParam, string uri, string merchantKey)
{
MerConfig config = fetchConfig(merchantKey);
string apikey = config.apiKey;
if (Adapay.isMock)
{
apikey = config.apiMockKey;
}
return NetUtils.requestAdapay(requestParams, filePath, fileParam, uri, NetUtils.POST, apikey, config.privateKey);
}
public static Dictionary<string, Object> requestAdapayPageServer(Dictionary<string, object> requestParams, string uri, string merchantKey)
{
MerConfig config = fetchConfig(merchantKey);
string apikey = config.apiKey;
if (Adapay.isMock)
{
apikey = config.apiMockKey;
}
return NetUtils.requestAdapayWithURL(requestParams, null, null, ConfigConstant.PAGE_SERVER_BASE_URL + uri, NetUtils.POST, apikey, config.privateKey);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AdapayCore;
namespace AdapaySDK
{
public class AdapayTools
{
/**
* 获取银联云闪付用户标识
*/
public static Dictionary<string, Object> unionUserId(Dictionary<string, Object> requestParams, string
merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.UNION_USER_ID_V1, merchantKey);
}
/**
* 获取银联云闪付用户标识
*/
public static Dictionary<string, Object> unionUserId(Dictionary<string, Object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.UNION_USER_ID_V1, null);
}
/**
* download bill file
*/
public static Dictionary<string, Object> downloadBill(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.BILL_DOWNLOAD_V1, null);
}
/**
* download bill file
*/
public static Dictionary<string, Object> downloadBill(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.BILL_DOWNLOAD_V1, merchantKey);
}
/**
* 校验返回签名
*
* @param signature 签名
* @param content 报文内容
* @return 校验结果
*/
public static bool verifySign(string signature, string content)
{
return NetUtils.verfySign(signature, content);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class Checkout
{
/**
* 创建收银台对象
*
* @param requestParams 创建收银台对象 AdaPay api
* @return 收银台对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.CREATE_CHECK_OUT, null);
}
/**
* 创建收银台对象
*
* @param requestParams 创建收银台对象 AdaPay api
* @param merchantKey merchantKey
* @return 收银台对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.CREATE_CHECK_OUT, merchantKey);
}
/**
* 查询收银台对象列表
*
* @param requestParams 查询收银台对象列表 AdaPay api
* @param merchantKey merchantKey
* @return 收银台对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.LIST_CHECK_OUT, merchantKey);
}
/**
* 查询收银台对象列表
*
* @param requestParams 查询收银台对象列表 AdaPay api
* @return 收银台对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.LIST_CHECK_OUT, null);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AdapaySDK
{
class ConfigConstant
{
public const string BASE_URL = "https://api.adapay.tech";
public const string PAGE_SERVER_BASE_URL = "https://page.adapay.tech";
public const string RSA_PUB_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB";
}
class APIUrlEnum
{
// 支付对象(Payment)
/**
* 支付
*/
public const string PAYMENT_V1 = "/v1/payments";
/**
* 支付查询
*/
public const string QUERY_PAYMENT_V1 = "/v1/payments/";
/**
* 支付对象列表查询
*/
public const string LIST_PAYMENT_V1 = "/v1/payments/list";
/**
* 关单
*/
public const string CLOSE_PAYMENT_V1 = "/v1/payments/";
/**
* 快捷支付支付确认
*/
public const string FAST_PAY_CONFIRM = "/v1/fast_pay/confirm";
/**
* 快捷支付短信重发
*/
public const string FAST_PAY_SMS_CODE = "/v1/fast_pay/sms_code";
// 退款对象(Refund)
/**
* 退款
*/
public const string REFUND_V1 = "/v1/payments/";
/**
* 退款查询
*/
public const string QUERY_REFUND_V1 = "/v1/payments/refunds";
// 支付确认对象(PaymentConfirm)
/**
* 支付确认
*/
public const string CONFIRM_PAYMENT_V1 = "/v1/payments/confirm";
/**
* 支付确认查询
*/
public const string QUERY_CONFIRM_PAYMENT_V1 = "/v1/payments/confirm/";
/**
* 支付确认列表查询
*/
public const string CONFIRM_PAYMENT_LIST_V1 = "/v1/payments/confirm/list";
// 支付撤销对象(PaymentConfirm)
/**
* 支付撤销
*/
public const string REVERSE_PAYMENT_V1 = "/v1/payments/reverse";
/**
* 查询支付撤销
*/
public const string QUERY_REVERSE_PAYMENT_V1 = "/v1/payments/reverse/";
/**
* 支付撤销列表查询
*/
public const string REVERSE_PAYMENT_LIST_V1 = "/v1/payments/reverse/list";
// 个人用户(Member)
/**
* 创建用户
*/
public const string MEMBER_V1 = "/v1/members";
/**
* 查询用户对象
*/
public const string QUERY_MEMBER_V1 = "/v1/members/";
/**
* 查询用户列表
*/
public const string QUERY_MEMBER_LIST_V1 = "/v1/members/list";
/**
* 更新用户
*/
public const string UPDATE_MEMBER_V1 = "/v1/members/update";
// 企业用户(CorpMember)
/**
* 创建企业用户对象
*/
public const string CORP_MEMBER_V1 = "/v1/corp_members";
/**
* 查询企业用户对象
*/
public const string QUERY_CORP_MEMBER_V1 = "/v1/corp_members/";
// 结算账户(SettleAccount)
/**
* 创建结算账户
*/
public const string SETTLE_ACCOUNT_V1 = "/v1/settle_accounts";
/**
* 查询结算账户
*/
public const string QUERY_SETTLE_ACCOUNT_V1 = "/v1/settle_accounts/";
/**
* 删除结算账户
*/
public const string DELETE_SETTLE_ACCOUNT_V1 = "/v1/settle_accounts/delete";
/**
* 修改结算账户
*/
public const string MODIFY_SETTLE_ACCOUNT_V1 = "/v1/settle_accounts/modify";
/**
* 查询结算明细列表
*/
public const string QUERY_SETTLE_DETAILS_V1 = "/v1/settle_accounts/settle_details";
// 支付转账对象
/**
* 创建转账对象
*/
public const string CREATE_TRANSFER= "/v1/settle_accounts/transfer";
/**
* 查询转账对象列表
*/
public const string TRANSFER_LIST = "/v1/settle_accounts/transfer/list";
// 账户冻结对象
/**
* 创建账户冻结对象
*/
public const string FREEZE_ACCOUNT_CREATE = "/v1/settle_accounts/freeze";
/**
* 查询账户冻结对象列表
*/
public const string FREEZE_ACCOUNT_LIST = "/v1/settle_accounts/freeze/list";
// 账户解冻对象
/**
* 创建账户解冻对象
*/
public const string UN_FREEZE_ACCOUNT_CREATE = "/v1/settle_accounts/un_freeze";
/**
* 查询账户解冻对象列表
*/
public const string UN_FREEZE_ACCOUNT_LIST = "/v1/settle_accounts/unfreeze/list";
// 银行卡对象
/**
* 快捷支付绑卡创建
*/
public const string FAST_PAY_CARD_BIND = "/v1/fast_card/apply";
/**
* 快捷支付绑卡确认
*/
public const string FAST_PAY_CARD_BIND_CONFIRM = "/v1/fast_card/confirm";
/**
* 快捷支付绑卡列表查询
*/
public const string FAST_PAY_CARD_BIND_LIST = "/v1/fast_card/list";
// 钱包
/**
* 帐户取现创建
*/
public const string DRAW_CASH = "/v1/cashs";
/**
* 查询取现状态
*/
public const string QUERY_CASHS_STAT_V1 = "/v1/cashs/stat";
/**
* 查询帐户余额
*/
public const string QUERY_BALANCE = "/v1/settle_accounts/balance";
/**
* 钱包用户登录
*/
public const string WALLET_LOGIN = "/v1/walletLogin";
/**
* 钱包账户支付
*/
public const string CREATE_ACCOUNT_PAYMENT = "/v1/account/payment";
/**
* 创建收银台对象
*/
public const string CREATE_CHECK_OUT = "/v1/checkout";
/**
* 查询收银台对象列表
*/
public const string LIST_CHECK_OUT = "/v1/checkout/list";
/**
* DOWNLOAD BILL
*/
public const string BILL_DOWNLOAD_V1 = "/v1/bill/download";
/**
* 获取银联云闪付用户标识
*/
public const string UNION_USER_ID_V1 = "/v1/union/user_identity";
/**
* 创建服务商分账对象
*/
public const string COMMISSIONS_SETTLE = "/v1/settle_accounts/commissions";
/**
* 服务商分账对象列表
*/
public const string LIST_COMMISSIONS_SETTLE = "/v1/settle_accounts/commissions/list";
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class CorpMember
{
/**
* 创建企业用户对象
*
* @param params 创建企业用户对象的请求参数,参见 AdaPay api
* @param params 创建企业用户对象的附件文件参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 创建用户对象
* @ 异常
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string filePath, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, filePath, "attach_file", APIUrlEnum.CORP_MEMBER_V1, merchantKey);
}
/**
* 查询企业用户对象
*
* @param params 查询企业用户对象的请求参数,参见 AdaPay api
* @return 查询的企业用户对象
* @ 异常
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
string memberId = StringUtils.tryGetNotNullValue(requestParams, "member_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_CORP_MEMBER_V1).Append(memberId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, merchantKey);
}
/**
* 创建企业用户对象
*
* @param params 创建企业用户对象的请求参数,参见 AdaPay api
* @param params 创建企业用户对象的附件文件参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 创建用户对象
* @ 异常
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string filePath)
{
return AdapayRequest.requestAdapay(requestParams, filePath, "attach_file", APIUrlEnum.CORP_MEMBER_V1, null);
}
/**
* 查询企业用户对象
*
* @param params 查询企业用户对象的请求参数,参见 AdaPay api
* @return 查询的企业用户对象
* @ 异常
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams)
{
string memberId = StringUtils.tryGetNotNullValue(requestParams, "member_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_CORP_MEMBER_V1).Append(memberId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, null);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class Drawcash
{
/**
* 创建取现对象
*
* @param params 创建取现对象的请求参数,参见 AdaPay api
* @return 取现对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.DRAW_CASH, null);
}
/**
* 创建取现对象
*
* @param params 创建取现对象的请求参数,参见 AdaPay api
* @return 取现对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.DRAW_CASH, merchantKey);
}
/**
* 查询取现状态
*
* @param params 查询取现状态,参见 AdaPay api
* @return 取现状态
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_CASHS_STAT_V1, null);
}
/**
* 查询取现状态
*
* @param params 查询取现状态,参见 AdaPay api
* @return 取现状态
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_CASHS_STAT_V1, merchantKey);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class FastPay
{
/**
* 创建快捷支付绑卡对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付绑卡
*/
public static Dictionary<string, Object> cardBind(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_CARD_BIND, null);
}
/**
* 创建快捷支付绑卡确认
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付绑卡确认
*/
public static Dictionary<string, Object> cardBindConfirm(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_CARD_BIND_CONFIRM, null);
}
/**
* 查询快捷支付绑卡对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付绑卡
*/
public static Dictionary<string, Object> cardBindList(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.FAST_PAY_CARD_BIND_LIST, null);
}
/**
* 创建快捷支付确认
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付确认
*/
public static Dictionary<string, Object> confirm(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_CONFIRM, null);
}
/**
* 快捷支付短信重发
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付短信重发
*/
public static Dictionary<string, Object> smsCode(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_SMS_CODE, null);
}
/**
* 创建快捷支付绑卡对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付绑卡
*/
public static Dictionary<string, Object> cardBind(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_CARD_BIND, merchantKey);
}
/**
* 创建快捷支付绑卡确认
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付绑卡确认
*/
public static Dictionary<string, Object> cardBindConfirm(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_CARD_BIND_CONFIRM, merchantKey);
}
/**
* 查询快捷支付绑卡对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付绑卡
*/
public static Dictionary<string, Object> cardBindList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.FAST_PAY_CARD_BIND_LIST, merchantKey);
}
/**
* 创建快捷支付确认
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付确认
*/
public static Dictionary<string, Object> confirm(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_CONFIRM, merchantKey);
}
/**
* 快捷支付短信重发
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 快捷支付短信重发
*/
public static Dictionary<string, Object> smsCode(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FAST_PAY_SMS_CODE, merchantKey);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class FreezeAccount
{
/**
* 创建账户冻结对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 账户冻结对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FREEZE_ACCOUNT_CREATE, null);
}
/**
* 创建账户冻结对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 账户冻结对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.FREEZE_ACCOUNT_CREATE, merchantKey);
}
/**
* 查询账户冻结对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 账户冻结对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.FREEZE_ACCOUNT_LIST, null);
}
/**
* 查询账户冻结对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 账户冻结对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.FREEZE_ACCOUNT_LIST, merchantKey);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AdapaySDK
{
public class Member
{
/**
* 创建用户对象
*
* @param requestParams 创建用户对象的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 创建用户对象
* @ 异常
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.MEMBER_V1, merchantKey);
}
/**
* 查询用户对象
*
* @param requestParams 查询用户对象的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 查询的用户对象
* @ 异常
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
string memberId = StringUtils.tryGetNotNullValue(requestParams,"member_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_MEMBER_V1).Append(memberId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, merchantKey);
}
/**
* 查询用户列表
*
* @param requestParams 查询用户列表的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 查询的用户列表
* @ 异常
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_MEMBER_LIST_V1, merchantKey);
}
/**
* 更新用户对象
*
* @param requestParams 更新用户对象的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 更新后的用户对象
* @ 异常
*/
public static Dictionary<string, Object> update(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.UPDATE_MEMBER_V1, merchantKey);
}
/**
* 创建用户对象
*
* @param requestParams 创建用户对象的请求参数,参见 AdaPay api
* @return 创建用户对象
* @ 异常
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.MEMBER_V1, null);
}
/**
* 查询用户对象
*
* @param requestParams 查询用户对象的请求参数,参见 AdaPay api
* @return 查询的用户对象
* @ 异常
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams)
{
string memberId = StringUtils.tryGetNotNullValue(requestParams, "member_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_MEMBER_V1).Append(memberId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, null);
}
/**
* 查询用户列表
*
* @param requestParams 查询用户列表的请求参数,参见 AdaPay api
* @return 查询的用户列表
* @ 异常
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.QUERY_MEMBER_LIST_V1, null);
}
/**
* 更新用户对象
*
* @param requestParams 更新用户对象的请求参数,参见 AdaPay api
* @return 更新后的用户对象
* @ 异常
*/
public static Dictionary<string, Object> update(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.UPDATE_MEMBER_V1, null);
}
}
}
using System;
using System.Collections.Generic;
using AdapayCore;
using System.Text;
namespace AdapaySDK
{
public class Payment
{
/**
* 创建一个支付交易
*
* @param requestParams 创建支付的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 创建的支付对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
object currency = null;
requestParams.TryGetValue("currency", out currency);
if (currency == null) {
requestParams.Add("currency", "cny");
}
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.PAYMENT_V1, merchantKey);
}
/**
* create Payment
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
object currency = null;
requestParams.TryGetValue("currency", out currency);
if (currency == null)
{
requestParams.Add("currency", "cny");
}
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.PAYMENT_V1, null);
}
/**
* 关闭一个支付
*
* @param requestParams 要关闭的支付id
* @param merchantKey merchantKey
* @return 关闭的支付对象
*/
public static Dictionary<string, Object> close(Dictionary<string, object> requestParams, string merchantKey)
{
string paymentId = StringUtils.tryGetNotNullValue(requestParams, "payment_id");
string uri = new StringBuilder(APIUrlEnum.CLOSE_PAYMENT_V1).Append(paymentId).Append("/close").ToString();
//requestParams.Remove("payment_id");
return AdapayRequest.requestAdapay(requestParams, uri, merchantKey);
}
/**
* 关闭一个支付
*
* @param requestParams 要关闭的支付id
* @param merchantKey merchantKey
* @return 关闭的支付对象
*/
public static Dictionary<string, Object> close(Dictionary<string, object> requestParams)
{
string paymentId = StringUtils.tryGetNotNullValue(requestParams, "payment_id");
string uri = new StringBuilder(APIUrlEnum.CLOSE_PAYMENT_V1).Append(paymentId).Append("/close").ToString();
//requestParams.Remove("payment_id");
return AdapayRequest.requestAdapay(requestParams, uri, null);
}
/**
* 查询已有的支付信息
* @param requestParams 要查询的支付参数
* @param merchantKey merchantKey
* @return 查询的支付对象
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
string paymentId = StringUtils.tryGetNotNullValue(requestParams, "payment_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_PAYMENT_V1).Append(paymentId).ToString();
//requestParams.Remove("payment_id");
return AdapayRequest.getRequestAdapay(requestParams, uri, merchantKey);
}
/**
* 查询已有的支付信息
*
* @param requestParams 要查询的支付id
* @return 查询的支付对象
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams)
{
string paymentId = StringUtils.tryGetNotNullValue(requestParams, "payment_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_PAYMENT_V1).Append(paymentId).ToString();
//requestParams.Remove("payment_id");
return AdapayRequest.getRequestAdapay(requestParams, uri, null);
}
/**
* 查询已有的支付信息列表
* @param requestParams
* @param merchantKey merchantKey
* @return 查询的支付对象列表
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.LIST_PAYMENT_V1, merchantKey);
}
/**
* 查询已有的支付信息列表
*
* @param requestParams
* @return 查询的支付对象列表
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.LIST_PAYMENT_V1, null);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class PaymentConfirm
{
/**
* 创建支付确认对象
*
* @param requestParams 创建支付确认对象参数
* @param merchantKey merchantKey
* @return 查询的支付对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.CONFIRM_PAYMENT_V1, merchantKey);
}
/**
* 创建支付确认对象
*
* @param requestParams 创建支付确认对象参数
* @return 查询的支付对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.CONFIRM_PAYMENT_V1, null);
}
/**
* 查询已有的支付确认对象列表
*
* @param requestParams 要查询的支付撤销对象参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.CONFIRM_PAYMENT_LIST_V1, merchantKey);
}
/**
* 查询已有的支付确认对象列表
*
* @param requestParams 要查询的支付撤销对象参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.CONFIRM_PAYMENT_LIST_V1, null);
}
/**
* 查询已有的支付确认对象
*
* @param requestParams 要查询的支付确认对象参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
string paymentConfirmId = StringUtils.tryGetNotNullValue(requestParams, "payment_confirm_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_CONFIRM_PAYMENT_V1).Append(paymentConfirmId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, merchantKey);
}
/**
* 查询已有的支付确认对象
*
* @param requestParams 要查询的支付确认对象参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams)
{
string paymentConfirmId = StringUtils.tryGetNotNullValue(requestParams, "payment_confirm_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_CONFIRM_PAYMENT_V1).Append(paymentConfirmId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, null);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class PaymentReverse
{
/**
* 创建撤销对象
*
* @param requestParams 创建支付撤销对象参数
* @param merchantKey merchantKey
* @return 查询的支付对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.REVERSE_PAYMENT_V1, merchantKey);
}
/**
* 创建撤销对象
*
* @param requestParams 创建支付撤销对象参数
* @return 查询的支付对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.REVERSE_PAYMENT_V1, null);
}
/**
* 查询已有的支付撤销对象列表
*
* @param requestParams 要查询的支付撤销对象参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.REVERSE_PAYMENT_LIST_V1, merchantKey);
}
/**
* 查询已有的支付撤销对象列表
*
* @param requestParams 要查询的支付撤销对象参数
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.REVERSE_PAYMENT_LIST_V1, null);
}
/**
* 查询已有的支付撤销对象
*
* @param requestParams 要查询的支付撤销对象参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
string reverseId = StringUtils.tryGetNotNullValue(requestParams, "reverse_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_REVERSE_PAYMENT_V1).Append(reverseId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, merchantKey);
}
/**
* 查询已有的支付撤销对象
*
* @param requestParams 要查询的支付撤销对象参数
* @param merchantKey merchantKey
* @return 查询的支付撤销对象
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams)
{
string reverseId = StringUtils.tryGetNotNullValue(requestParams, "reverse_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_REVERSE_PAYMENT_V1).Append(reverseId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, null);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace AdapaySDK
{
public class Refund
{
/**
* create refund for multi merchant
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
string id = StringUtils.tryGetNotNullValue(requestParams, "id");
string uri = new StringBuilder(APIUrlEnum.REFUND_V1).Append(id).Append("/refunds").ToString();
return AdapayRequest.requestAdapay(requestParams, uri, merchantKey);
}
/**
* create refund for multi merchant
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
string id = StringUtils.tryGetNotNullValue(requestParams, "id");
string uri = new StringBuilder(APIUrlEnum.REFUND_V1).Append(id).Append("/refunds").ToString();
return AdapayRequest.requestAdapay(requestParams, uri, null);
}
/**
* query refund for multi merchant
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams,APIUrlEnum.QUERY_REFUND_V1,merchantKey);
}
/**
* query refund
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams )
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_REFUND_V1, null);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class SettleAccount
{
/**
* 创建结算账户对象
*
* @param params 创建结算账户对象的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 创建结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.SETTLE_ACCOUNT_V1, merchantKey);
}
/**
* 查询结算账户对象
*
* @param params 查询结算账户对象的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 查询的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams, string merchantKey)
{
string settleAccountId = StringUtils.tryGetNotNullValue(requestParams, "settle_account_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_SETTLE_ACCOUNT_V1).Append(settleAccountId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, merchantKey);
}
/**
* 删除结算账户对象
*
* @param params 删除结算账户对象的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 删除的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> delete(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.DELETE_SETTLE_ACCOUNT_V1, merchantKey);
}
/**
* 查询结算明细列表
*
* @param params 查询结算明细列表的请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 查询的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> details(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_SETTLE_DETAILS_V1, merchantKey);
}
/**
* 创建结算账户对象
*
* @param params 创建结算账户对象的请求参数,参见 AdaPay api
* @return 创建结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.SETTLE_ACCOUNT_V1, null);
}
/**
* 查询结算账户对象
*
* @param params 查询结算账户对象的请求参数,参见 AdaPay api
* @return 查询的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> query(Dictionary<string, object> requestParams)
{
string settleAccountId = StringUtils.tryGetNotNullValue(requestParams, "settle_account_id");
string uri = new StringBuilder(APIUrlEnum.QUERY_SETTLE_ACCOUNT_V1).Append(settleAccountId).ToString();
return AdapayRequest.getRequestAdapay(requestParams, uri, null);
}
/**
* 删除结算账户对象
*
* @param params 删除结算账户对象的请求参数,参见 AdaPay api
* @return 删除的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> delete(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.DELETE_SETTLE_ACCOUNT_V1, null);
}
/**
* 查询结算明细列表
*
* @param params 查询结算明细列表的请求参数,参见 AdaPay api
* @return 查询的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> details(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_SETTLE_DETAILS_V1, null);
}
/**
* 修改结算账户配置
*
* @param params 修改结算账户配置的请求参数,参见 AdaPay api
* @return 修改的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> update(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.MODIFY_SETTLE_ACCOUNT_V1, null);
}
/**
* 修改结算账户配置
*
* @param params 修改结算账户配置的请求参数,参见 AdaPay api
* @return 修改的结算账户对象
* @ 异常
*/
public static Dictionary<string, Object> update(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.MODIFY_SETTLE_ACCOUNT_V1, merchantKey);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class Transfer
{
/**
* 创建转账对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 创建转账对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.CREATE_TRANSFER, null);
}
/**
* 创建转账对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 创建转账对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.CREATE_TRANSFER,merchantKey);
}
/**
* 查询账户转账对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 账户转账对象列表
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.TRANSFER_LIST, null);
}
/**
* 查询账户转账对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 账户转账对象列表
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.TRANSFER_LIST, merchantKey);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AdapaySDK
{
public class UnFreezeAccount
{
/**
* 创建账户解冻对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 创建账户解冻对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.UN_FREEZE_ACCOUNT_CREATE, null);
}
/**
* 创建账户解冻对象
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 创建账户解冻对象
*/
public static Dictionary<string, Object> create(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapay(requestParams, APIUrlEnum.UN_FREEZE_ACCOUNT_CREATE, merchantKey);
}
/**
* 查询账户解冻对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 查询账户解冻对象列表
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.UN_FREEZE_ACCOUNT_LIST, null);
}
/**
* 查询账户解冻对象列表
*
* @param requestParams 请求参数
* @param merchantKey merchantKey
* @return 查询账户解冻对象列表
*/
public static Dictionary<string, Object> queryList(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.UN_FREEZE_ACCOUNT_LIST, APIUrlEnum.UN_FREEZE_ACCOUNT_CREATE);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AdapaySDK
{
public class Wallet
{
/**
* 获取登录信息
*
* @param requestParams 登录请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 跳转页面信息
*/
public static Dictionary<string, Object> login(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.WALLET_LOGIN, merchantKey);
}
/**
* 获取登录信息
*
* @param requestParams 登录请求参数,参见 AdaPay api
* @param merchantKey merchantKey
* @return 跳转页面信息
*/
public static Dictionary<string, Object> login(Dictionary<string, object> requestParams)
{
return AdapayRequest.requestAdapayPageServer(requestParams, APIUrlEnum.WALLET_LOGIN, null);
}
/**
* 查询帐户余额
*
* @param params 查询帐户余额的请求参数,参见 AdaPay api
* @return 帐户余额
*/
public static Dictionary<string, Object> balance(Dictionary<string, object> requestParams)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_BALANCE, null);
}
/**
* 查询帐户余额
*
* @param params 查询帐户余额的请求参数,参见 AdaPay api
* @return 帐户余额
*/
public static Dictionary<string, Object> balance(Dictionary<string, object> requestParams, string merchantKey)
{
return AdapayRequest.getRequestAdapay(requestParams, APIUrlEnum.QUERY_BALANCE, merchantKey);
}
}
}

using System.Collections.Generic;
namespace Mall.ThirdCore.Adapay.Model
{
/// <summary>
/// 汇付天下 支付回调
/// </summary>
public class AdaPayResultModel
{
/// <summary>
/// 由 Adapay 生成的支付对象 id, 该 id 在 Adapay 系统内唯一
/// </summary>
public string id { get; set; }
/// <summary>
/// 支付创建时的 10 位时间戳
/// </summary>
public string created_time { get; set; }
/// <summary>
/// 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
/// </summary>
public string order_no { get; set; }
/// <summary>
/// 是否 prod模式,true 是 prod模式,false 是 mock模式
/// </summary>
public string prod_mode { get; set; }
/// <summary>
/// 控制台 主页面应用的app_id
/// </summary>
public string app_id { get; set; }
/// <summary>
/// 支付渠道,参见 支付渠道 说明
/// </summary>
public string pay_channel { get; set; }
/// <summary>
/// 交易金额(必须大于 0),保留两位小数点,如0.10、100.05等
/// </summary>
public decimal pay_amt { get; set; }
/// <summary>
/// 详见 货币代码
/// </summary>
public string currency { get; set; }
/// <summary>
/// 可临时用来查询支付订单状态的链接,此链接的有效期只有30分钟
/// </summary>
public string query_url { get; set; }
/// <summary>
/// 订单附加说明
/// </summary>
public string description { get; set; }
/// <summary>
/// 支付渠道请求成功返回的额外参数。详见 支付渠道 expend参数 说明
/// </summary>
public object expend { get; set; }
/// <summary>
/// 用户账单上的商户订单号
/// </summary>
public string party_order_id { get; set; }
/// <summary>
/// 用户账单上的交易订单号
/// </summary>
public string out_trans_id { get; set; }
/// <summary>
/// 用户支付完成时间
/// </summary>
public string end_time { get; set; }
/// <summary>
/// 当前交易状态,参见 状态 说明
/// </summary>
public string status { get; set; }
/// <summary>
/// 错误码,详见 错误
/// </summary>
public string error_code { get; set; }
/// <summary>
/// 错误描述,详见 错误
/// </summary>
public string error_msg { get; set; }
/// <summary>
/// 错误类型,详见 错误
/// </summary>
public string error_type { get; set; }
/// <summary>
/// 当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误
/// </summary>
public string invalid_param { get; set; }
//以下退款
/// <summary>
/// 退款单号
/// </summary>
public string refund_order_no { get; set; }
/// <summary>
/// 退费描述
/// </summary>
public string reason { get; set; }
/// <summary>
/// 退款目标 =>支付对象 id
/// </summary>
public string payment_id { get; set; }
/// <summary>
/// 退款目标 =>支付对象订单号
/// </summary>
public string payment_order_no { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal refund_amt { get; set; }
/// <summary>
/// 退款手续费
/// </summary>
public decimal fee_amt { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using AdapayCore;
using Mall.Common.Plugin;
using Mall.Module.User;
using Mall.Repository.Education;
using Mall.ThirdCore.Adapay.Model;
using Mall.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Mall.WebApi.Controllers.Adapay
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class AdapayCallBackController : ControllerBase
{
private readonly UserCommonModule userCommonModule = new UserCommonModule();
#region 汇付天下接收事件
/// <summary>
/// 汇付天下支付回调
/// </summary>
[HttpPost]
public string AdapayCallBackEvent()
{
LogHelper.WriteInfo("汇付天下 支付回调进来了");
#region Post请求的密文数据
Request.EnableBuffering();
string responseData = "";
using (var reader = new StreamReader(Request.Body, encoding: System.Text.Encoding.UTF8))
{
var body = reader.ReadToEndAsync();
responseData = body.Result;
Request.Body.Position = 0;
}
#endregion
LogHelper.WriteInfo("回调参数:" + responseData);
#region 解码参数
try
{
responseData = System.Web.HttpUtility.UrlDecode(responseData);
List<string> rlist = responseData.Split('&').ToList();
Dictionary<string, string> expendDict = new Dictionary<string, string>();
foreach (var item in rlist)
{
string[] values = item.Split('=');
expendDict.Add(values[0], values[1]);
}
//验签请参data
expendDict.TryGetValue("data", out string data);
//验签请参sign
expendDict.TryGetValue("sign", out string sign);
//事件类型
expendDict.TryGetValue("type", out string type);
//验签
bool checkSign = NetUtils.verfySign(sign, data);
if (checkSign)
{
//验签成功逻辑
LogHelper.WriteInfo("成功返回数据data:" + data);
//退款返回
//data = '{"object":"refund","status":"succeeded","prod_mode":"true","id":"0021120220718133304980394978062292664320","refund_order_no":"R202207181658151172712","payment_id":"002112022071419472310393622712813637632","payment_order_no":"202207141657828044797","refund_amt":"0.01","fee_amt":"0.00","channel_no":"2022071821R5j30g","created_time":"1658122384000","succeed_time":"1658122386000","app_id":"app_c474eae3-28a4-487b-9d07-c92c228c9a0b"}';
AdaPayResultModel payMdoel = JsonHelper.DeserializeObject<AdaPayResultModel>(data);
switch (type)
{
case "payment.succeeded"://支付成功
//异步操作订单实收 新增财务单据
System.Threading.Tasks.Task.Run(() => userCommonModule.InsertAdapayOrderTrade(payMdoel));
break;
case "payment.failed"://支付失败
LogHelper.WriteInfo("订单支付失败:" + data);
break;
case "refund.succeeded"://退款成功
break;
case "refund.failed"://退款失败
break;
case "fastpay.succeeded":// 快捷支付确认成功
break;
case "fastpay.failed":// 快捷支付确认失败
break;
}
}
else
{
//验签失败逻辑
LogHelper.WriteInfo("签名效验失败");
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "AdapayCallBackEvent");
}
#endregion
return "";
}
#endregion
}
}
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment