C# SDK 使用文档

简介

目前 Adapay 的 C# SDK 支持的交易模块包括 支付(Payment)、退款(Refund)、查询、关单功能,用户对象,结算账户,企业用户等功能,具体可参考 API文档

下载地址

SDK下载

SDK 版本记录

版本

日期

说明

v1.4.1

2022-01-10

优化代码

v1.3.2

2021-03-15

新增服务商分账功能

v1.3.0.1

2020-12-04

新增快捷支付相关功能

v1.2.0

2020-10-30

优化调用

v1.1.3

2020-07-21

增加取现结果查询功能

v1.1.1

2020-05-22

修改消息接收 bug

版本要求

.Net Framework 4.0

接入方法

  • 添加 SDK 引用

AdapaySDK.dll

AdapayCore.dll

  • 导入第三方依赖库

接入本 SDK 需依赖以下第三方库,参考 libs 文件夹下提供的 dll 文件

Newtonsoft.Json
BouncyCastle.NetCore

注意 如使用.Net core 框架开发的商户,可使用SDK 包内提供的源文件在core 框架下重新编译生成DLL。对于引用的包可替换成对应的core 框架下对应的库即可

使用方法

  • 系统初始化

在使用 Adapay 前,请先添加商户配置文件,并完成系统初始化设置,否则可能导致交易异常。

如贵司为普通商户,正常情况下只有一个商户配置文件

如贵司为 SASS 商户,请传入多个商户配置文件,并做好配置文件命名管理,所有文件名必须唯一

  • 调用示例

/**
 * debug 模式,开启后有详细的日志,默认 false
 */
AdaPay.debug = true;

/**
 * isMock 模式,默认为生产模式 true,false可以使用 mock模式
 */
Adapay.isMock = false;

MerConfig config = new MerConfig();
config.apiKey = "api_live_9c14f264-e390-41df-984d-df15a6952031";
config.privateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0=";
config.apiMockKey = "api_test_d1a6d63d-3dbf-49ec-ae42-611f80d342db";
Adapay.initWithMerConfig(config);
  • 调用示例(多商户模式)

/**
 * debug 模式,开启后有详细的日志,默认 false
 */
 AdaPay.debug = true;

 /**
  * isMock 模式,默认为生产模式 true,false可以使用 mock模式
  */
 Adapay.isMock = false;

 MerConfig config = new MerConfig();
 config.apiKey = "api_live_9c14f264-e390-41df-984d-df15a6952031";
 config.privateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0=";
 config.apiMockKey = "api_test_d1a6d63d-3dbf-49ec-ae42-611f80d342db";

 Dictionary<string, MerConfig> dict = new Dictionary<string, MerConfig>();
 dict.Add("yifuyun", config);

 AdaPay.initWithMerConfigs(dict);

注意: 多商户的情况调用以下接口时,需传入对应商户配置的 key,商户需维护好多个配置 与 key 值映射

支付对象

发起支付

当您想发起一次支付请求时需要通过 Adapay 提供的创建方法获取一个新的 Payment对象,您可使用此 Payment对象 发起支付。对于支付结果,Adapay 会发送 异步消息 告知。

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("pay_amt", "0.01");
dict.Add("app_id", appId);
dict.Add("order_no", "csdk_payment_1" + Program.timeStamp());
dict.Add("pay_channel", "alipay");

dict.Add("goods_title", "your goods title");
dict.Add("goods_desc", "your goods desc");
dict.Add("currency", "cny");

Dictionary<string, object> result = Payment.create(dict, merchantKey);
  • 参数说明

调用参数详见 创建支付

支付订单查询

查询已存在的 Payment对象

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("payment_id", paymentId);
Dictionary<string, object> result= Payment.query(dict, merchantKey);
  • 参数说明

调用参数详见 支付查询

查询支付对象列表

通过该接口,实现对已发起的支付对象查询功能,支持使用请求订单号、支付对象id、以及按时间范围分页查询。

  • 调用示例

Dictionary<string, object> queryparams = new Dictionary<string, object>();
queryparams.Add("order_no", order_no);
queryparams.Add("payment_id", paymentId);
queryparams.Add("app_id", appId);
queryparams.Add("page_index", "1");
queryparams.Add("page_size", "20");
queryparams.Add("created_gte", "1571913923");
queryparams.Add("created_lte", "1571913924");
Dictionary<string, object> result = Payment.queryList(queryparams, merchantKey);
  • 参数说明

调用参数详见 支付对象列表查询

关闭订单

针对已经创建的 Payment对象,您可以调用关单接口进行交易的关闭。

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("payment_id", paymentId);
dict.Add("reason", "reason");
dict.Add("expend", "expend");
dict.Add("notify_url", "notify_url");
Dictionary<string, object> result = Payment.close(dict, merchantKey);
  • 参数说明

调用参数详见 关单

退款对象

发起退款

当您的业务需要发起退款时,可通过 Adapay 系统提供的创建 Refund对象 方法创建一个退款对象,发起退款请求。

  • 调用示例

Dictionary<string, object> refundParams = new Dictionary<string, object>();
refundParams.Add("refund_amt", "0.01");
refundParams.Add("payment_id", "");// payment_id 或 payment_confirm_id
refundParams.Add("app_id", "your appid");
refundParams.Add("refund_order_no", "jsdk_refund_" + Program.timeStamp());

Dictionary<string, object> result = Refund.create(refundParams, merchantKey);
  • 参数说明

调用参数详见 创建退款

退款查询

通过 Refund对象 的 id 查询一个已创建的退款记录。

  • 调用示例

Dictionary<string, object> refundParams = new Dictionary<string, object>();
refundParams.Add("payment_id", paymentId);
Dictionary<string, object> result = Refund.query(refundParams, merchantKey);
  • 参数说明

调用参数详见 退款查询

支付确认对象

创建支付确认对象

创建支付确认对象适用于延时分账的场景。只有已支付完成且延时分账的 Payment对象,才支持调用创建支付确认对象。支持一次全额或多次部分确认,多次部分确认时,当前确认金额 + 已确认金额 + 已撤销金额不能大于原支付金额。

  • 调用示例

Dictionary<string, object> confirm = new Dictionary<string, object>();

confirm.Add("payment_id", paymentId);
confirm.Add("order_no", "csdk_confirm_" + Program.timeStamp());
confirm.Add("confirm_amt", "0.01");
confirm.Add("description", "description");
confirm.Add("div_members", "");
Dictionary<string, object> result = PaymentConfirm.create(confirm, merchantKey);
  • 参数说明

调用参数详见 创建支付确认对象

查询支付确认对象

查询已经创建的支付确认对象

  • 调用示例

Dictionary<string, object> confirm = new Dictionary<string, object>();

confirm.Add("payment_confirm_id", paymentConfirmId);

Dictionary<string, Object> result = PaymentConfirm.query(confirm, merchantKey);
  • 参数说明

调用参数详见 查询支付确认对象

查询支付确认对象列表

查询已经创建的支付确认对象列表

  • 调用示例

Dictionary<string, object> confirm = new Dictionary<string, object>();
confirm.Add("payment_id", paymentId);
confirm.Add("app_id", appId);
confirm.Add("page_index", "1");
confirm.Add("page_size", "20");
confirm.Add("created_gte", "1571913867");
confirm.Add("created_lte", "1571913923");
Dictionary<string, object> result = PaymentConfirm.queryList(confirm, merchantKey);
  • 参数说明

调用参数详见 查询支付确认对象列表

支付撤销对象

创建支付撤销对象

创建支付确认对象适用于延时分账的场景。只有已支付完成且延时分账的 Payment对象,才支持调用创建支付确认对象。支持一次全额或多次部分确认,多次部分确认时,当前确认金额 + 已确认金额 + 已撤销金额不能大于原支付金额。

  • 调用示例

Dictionary<string, object> reverse = new Dictionary<string, object>();

reverse.Add("payment_id", paymentId);
reverse.Add("app_id", appId);
reverse.Add("order_no", "csdk_reverse_" + Program.timeStamp());
reverse.Add("notify_url", "");
reverse.Add("reverse_amt", "0.01");
reverse.Add("reason", "reason");
reverse.Add("expand", "expend");
reverse.Add("device_info", "device_info");
Dictionary<string, Object> result = PaymentReverse.create(reverse, merchantKey);
  • 参数说明

调用参数详见 创建支付撤销对象

查询支付撤销对象

查询已经创建的支付撤销对象

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("reverse_id", paymentId);

Dictionary<string, object> result = PaymentReverse.query(dict, merchantKey);
  • 参数说明

调用参数详见 查询支付撤销对象

查询支付撤销对象列表

查询已经创建的支付撤销对象列表

  • 调用示例

Dictionary<string, object> reverse = new Dictionary<string, object>();
reverse.Add("payment_id", paymentId);
reverse.Add("app_id", appId);
reverse.Add("page_index", "1");
reverse.Add("page_size", "20");
reverse.Add("created_gte", "1571913923");
reverse.Add("created_lte", "1571913924");
Dictionary<string, object> result = PaymentReverse.queryList(reverse, merchantKey);
  • 参数说明

调用参数详见 查询支付撤销对象列表

个人用户对象

创建用户对象

创建用户对象用于将商户 member_id 与 Adapay 系统做关联,商户需要保证 member_id 在应用 app_id 下唯一。关联完成后,可以创建结算账户用于用户分账功能,也可以更新用户对象禁用用户状态,禁用用户所有交易功能。

  • 调用示例

Dictionary<string, object> memberParams = new Dictionary<string, object>();
memberParams.Add("member_id", "csdk\_member\_" + Program.timeStamp());
memberParams.Add("app_id", app_id);
memberParams.Add("location", "上海市徐汇区宜山路");
memberParams.Add("email", "123@163.com");
memberParams.Add("gender", "MALE");
memberParams.Add("tel_no", "13153333333");
memberParams.Add("nickname", "nick_name");

Dictionary<string, Object> result = Member.create(memberParams, merchantKey);
  • 参数说明

调用参数详见 创建用户对象

查询用户对象

查询已创建的单个用户对象

  • 调用示例

Dictionary<string, object> memberParams = new Dictionary<string, object>();
memberParams.Add("member_id", member_id);
memberParams.Add("app_id", app_id);

Dictionary<string, Object> result = Member.query(memberParams, merchantKey);
  • 参数说明

调用参数详见 查询用户对象

更新用户对象

对创建完成用户对象更新用户基本信息,可对用户状态禁用,禁用后用户不能做其它交易。

  • 调用示例

Dictionary<string, object> memberParams = new Dictionary<string, object>();
memberParams.Add("member_id", member_id);
memberParams.Add("app_id", app_id);
memberParams.Add("location", "上海市徐汇区宜山路1");
memberParams.Add("email", "1234@163.com");
memberParams.Add("gender", "MALE");
memberParams.Add("tel_no", "13153333333");
memberParams.Add("nickname", "nick_name2");
Dictionary<string, Object> result = Member.update(memberParams, merchantKey);
  • 参数说明

调用参数详见 更新用户对象

查询用户对象列表

对创建完成用户对象更新用户基本信息,可对用户状态禁用,禁用后用户不能做其它交易。

  • 调用示例

Dictionary<string, object> memberParams = new Dictionary<string, object>();
memberParams.Add("page_index", "1");
memberParams.Add("app_id", app_id);
memberParams.Add("page_size", "20");

memberParams.Add("created_gte", "1571913867");
memberParams.Add("created_lte", "1571913923");

Dictionary<string, Object> result = Member.queryList(memberParams, merchantKey);
  • 参数说明

调用参数详见 用户对象列表

企业用户对象

创建企业用户对象

通过本接口您可以创建企业用户,企业用户需要人工审核,审核完成后会发送异步消息通知,若审核成功,则商户用户 member_id 与 Adapay 系统关联成功,若审核失败,则可再次调用本接口提交正确的资料信息。

  • 调用示例

Dictionary<string, object> memberParams = new Dictionary<string, object>();
memberParams.Add("member_id", "jsdk_order_1575092356780");
memberParams.Add("app_id", appId);
memberParams.Add("order_no", "csdk_order_" + Program.timeStamp());
memberParams.Add("social_credit_code_expires", "20301020");
memberParams.Add("business_scope", "123");

memberParams.Add("name", "中国测试有限公司");
memberParams.Add("prov_code", "0011");
memberParams.Add("area_code", "1100");
memberParams.Add("social_credit_code", "201932658452655");
memberParams.Add("legal_person", "张测试");
memberParams.Add("legal_cert_id", "321485199014234852");
memberParams.Add("legal_cert_id_expires", "20220112");
memberParams.Add("legal_mp", "13958465215");
memberParams.Add("address", "中国上海");
memberParams.Add("zip_code", "225485");
memberParams.Add("telphone", "41164452");
memberParams.Add("email", "ceshi@qq.com");
memberParams.Add("bank_code", "652142");
memberParams.Add("bank_acct_type", "1");
memberParams.Add("card_no", "622546895642156");
memberParams.Add("card_name", "中国测试有限公司");


Dictionary<string, object> result = CorpMember.create(memberParams, "C:\\Users\\lei.qiao\\Desktop\\Project\\AdapayDemo\\Adapay.rar", merchantKey);
  • 参数说明

调用参数详见 创建企业用户对象

查询企业用户对象

查询已创建的企业用户对象

  • 调用示例

Dictionary<string, object> memberParams = new Dictionary<string, object>();
memberParams.Add("app_id", appId);
memberParams.Add("member_id", memberId);
Dictionary<string, Object> result = CorpMember.query(memberParams , merchantKey);
  • 参数说明

调用参数详见 查询企业用户对象

结算账户对象

创建结算账户对象

商户的 member_id 与 Adapay 系统做关联后,可以创建结算账户,用于用户分账功能,目前只支持绑定银行卡。

  • 调用示例

Dictionary<string, Object>  settleCountParams = new Dictionary<string, Object> ();
Dictionary<string, object>  accountInfo = new  Dictionary<string, object> ();
accountInfo.Add("card_id", "6222021703001692221");
accountInfo.Add("card_name", "袁电茜");
accountInfo.Add("cert_id", "310109200006062491");
accountInfo.Add("cert_type", "00");
accountInfo.Add("tel_no", "18888888881");
accountInfo.Add("bank_code", "03060000");
accountInfo.Add("bank_acct_type", "2");
accountInfo.Add("prov_code", "0031");
accountInfo.Add("area_code", "3100");
settleCountParams.Add("member_id", member_id);
settleCountParams.Add("app_id", app_id);
settleCountParams.Add("channel", "bank_account");
settleCountParams.Add("account_info", accountInfo );

Dictionary<string, Object> result = SettleAccount.create(settleCountParams, merchantKey);
  • 参数说明

调用参数详见 创建结算账户对象

查询结算账户对象

查询已绑定的结算账户对象。

  • 调用示例

Dictionary<string, object>  settleCountParams = new  Dictionary<string, object> ();
settleCountParams.Add("settle_account_id", settleCount_id);
settleCountParams.Add("member_id", member_id);
settleCountParams.Add("app_id", app_id);

Dictionary<string, Object> result = SettleAccount.query(settleCountParams, merchantKey);
  • 参数说明

调用参数详见 查询结算账户对象

删除结算账户对象

删除已绑定的结算账户对象。

  • 调用示例

Dictionary<string, object>  settleCountParams = new  Dictionary<string, object> ();
settleCountParams.Add("settle_account_id", settleCount_id);
settleCountParams.Add("member_id", member_id);
settleCountParams.Add("app_id", app_id);
Dictionary<string, Object> result = SettleAccount.delete(settleCountParams, merchantKey);
  • 参数说明

调用参数详见 删除结算账户对象

修改结算账户对象

修改已经创建的结算账户对象

  • 调用示例

Dictionary<string, object> settleCountParams = new Dictionary<string, object>();
settleCountParams.Add("settle_account_id", settleCount_id);
settleCountParams.Add("member_id", member_id);
settleCountParams.Add("app_id", app_id);

settleCountParams.Add("min_amt", "");
settleCountParams.Add("remained_amt", "");
Dictionary<string, Object> result = SettleAccount.update(settleCountParams);
  • 参数说明

调用参数详见 修改结算账户对象

查询结算明细列表

使用 Adapay 系统生成的结算账户对象 id 查询已创建的结算账户对象信息。

  • 调用示例

Dictionary<string, object>  querySettleDetailParams = new  Dictionary<string, object> ();
querySettleDetailParams.Add("app_id", app_id);
querySettleDetailParams.Add("member_id", member_id);
querySettleDetailParams.Add("settle_account_id", settleCount_id);
querySettleDetailParams.Add("begin_date", "20191008");
querySettleDetailParams.Add("end_date", "20191010");
Dictionary<string, Object> result = SettleAccount.details(querySettleDetailParams, merchantKey);
  • 参数说明

调用参数详见 查询结算明细列表

取现对象

创建取现对象

通过该接口,实现对指定商户或者商户下用户的结算账户可用余额发起主动提现操作,金额从账户中提到绑定的结算银行卡中。取现结果以异步通知为准。

  • 调用示例

Dictionary<string, object> settleCountParams = new Dictionary<string, object>(2);

drawcashParams.Add("order_no", "jsdk_payment_" + System.currentTimeMillis());
drawcashParams.Add("cash_amt", "0.01");
drawcashParams.Add("member_id", member_id);
drawcashParams.Add("app_id", app_id);
drawcashParams.Add("cash_type", "T1");
drawcashParams.Add("notify_url", "");
Dictionary<string, object> drawcash = Drawcash.create(drawcashParams,merchantKey);
  • 请求参数

调用参数详见 钱包取现

取现查询

通过该接口,可以查询已发起的取现交易状态。

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("order_no", "order_no_0.01");
Dictionary<string, object> result = Wallet.queryDrawCash(dict, merchantKey);
  • 请求参数

调用参数详见 取现查询

收银台对象

创建收银台对象

通过该接口,实现对商户钱包收银台支付功能,下单成功返回支付跳转地址

  • 调用示例

Dictionary<string, object> params = new Dictionary<string, object>();
params.Add("order_no", "Cskjdd_200000013");
params.Add("member_id", "user_00013");
params.Add("pay_amt", "0.01");
params.Add("currency", "cny");
params.Add("goods_title", "商品标题");
params.Add("goods_desc", "商品描述");
params.Add("app_id", "app_7d87c043-aae3-4357-9b2c-269349a980d6");
params.Add("callback_url", "https://www.xxxxx.com");
Dictionary<string, object> result = Checkout.create(dict, merchantKey);
  • 请求参数

调用参数详见 创建收银台对象

查询收银台对象列表

通过该接口,实现对商户钱包收银台对象查询功能,支持使用请求订单号、商户下用户id、以及按时间范围分页查询

  • 调用示例

Dictionary<string, object> params = new Dictionary<string, object>();
params.Add("order_no", "Cskjdd_200000013");
params.Add("member_id", "user_00013");
params.Add("page_index", "1");
params.Add("page_size", "10");
params.Add("created_gte", "xxxxx");
params.Add("created_lte", "xxxxx");
params.Add("app_id", "app_7d87c043-aae3-4357-9b2c-269349a980d6");
Dictionary<string, object> result = Checkout.queryList(dict, merchantKey);
  • 请求参数

调用参数详见 钱包收银台对象列表查询

钱包

钱包登录

通过该接口,实现对商户登录钱包功能,登录成功返回跳转地址

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("member_id", "user_00003");
dict.Add("app_id", appId);
dict.Add("ip", "192.168.1.1");

Dictionary<string, object> result = Wallet.login(dict, merchantKey);
  • 请求参数

调用参数详见 钱包登录

查询账户余额

通过本接口查询账户余额

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>(2);

dict.Add("member_id", member_id);
dict.Add("app_id", app_id);
dict.Add("settle_account_id", settleCount_id);
Dictionary<string, object> settleCount = Wallet.balance(dict, merchantKey);
  • 请求参数

调用参数详见 查询账户余额

账户对象

创建账户支付对象

通过该接口,实现对商户钱包支付功能,下单成功返回支付跳转地址

  • 调用示例

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("pay_amt", "0.01");
dict.Add("app_id", appId);
dict.Add("order_no", "csdk_payment_1" + Program.timeStamp());

dict.Add("goods_title", "your goods title");
dict.Add("goods_desc", "your goods desc");
dict.Add("currency", "cny");

dict.Add("div_members", "your div_members");
dict.Add("description", "your description");
dict.Add("notify_url", "notify_url");
dict.Add("callback_url", "callback_url");
Dictionary<string, object> result = Account.pay(dict, merchantKey);
  • 请求参数

调用参数详见 钱包支付

转账对象

创建账户转账对象

创建账户转账对象仅支持同一商户下的用户与用户、用户与商户之间的转账。

  • 调用示例

Dictionary<string, object> param = new  Dictionary<string, object>();
param.Add("order_no", "1579163031383");
param.Add("app_id", "app_XXXXXXXX");
param.Add("trans_amt", "0.01");
param.Add("out_member_id", "member_id_test");
param.Add("in_member_id", "member_id_test");
Dictionary<string, object> result = Transfer.create(param);
  • 请求参数

调用参数详见 创建账户转账对象

查询账户转账对象列表

可以基于时间范围进行查询,也可以使用原转账对象的订单号和状态进行查询。

  • 调用示例

Dictionary<string, object> params = new Dictionary<string, object>();
params.Add("app_id", "app_XXXXXXXX");
params.Add("order_no", "order_no");
params.Add("status", "succeeded");
params.Add("page_index", "1");
params.Add("page_size", "10");
params.Add("created_gte", "1571466657929");
params.Add("created_lte", "1571898657929");
Dictionary<string, object> result = Transfer.queryList(params);
  • 请求参数

调用参数详见 查询转账对象列表

账户冻结

通过该接口,实现对商户或者商户下用户的结算账户可用余额进行冻结操作。

  • 调用示例

Dictionary<string, object> freezeParam = new  Dictionary<string, object>();
freezeParam.Add("order_no", "1579163031383");
freezeParam.Add("app_id", "app_XXXXXXXX");
freezeParam.Add("trans_amt", "0.01");
freezeParam.Add("member_id", "member_id_test");
Dictionary<string, object> freeze = FreezeAccount.create(freezeParam);
  • 请求参数

调用参数详见 账户冻结对象

通过该接口,查询已发起的账户解冻交易,支持使用原解冻交易的请求订单号,以及时间范围查询。

  • 调用示例

Dictionary<string, object> params = new Dictionary<string, object>();
 params.Add("app_id", "app_XXXXXXXX");
 params.Add("status", "succeeded");
 params.Add("page_index", "1");
 params.Add("page_size", "10");
 params.Add("created_gte", "1571466657929");
 params.Add("created_lte", "1571898657929");
Dictionary<string, object> result = FreezeAccount.queryList(params);
  • 请求参数

调用参数详见 查询账户冻结对象列表

账户解冻

通过该接口,实现对已冻结的交易进行全额解冻操作。

  • 调用示例

Dictionary<string, object> unfreezeParam = new  Dictionary<string, object>(4);
unfreezeParam.Add("order_no", "1579163031383");
unfreezeParam.Add("app_id", "app_XXXXXXXX");
unfreezeParam.Add("account_freeze_id", "002112020111717230410174704123849117696");
Dictionary<string, object> unfreeze = UnFreezeAccount.create(unfreezeParam);
  • 请求参数

调用参数详见 创建账户解冻对象

通过该接口,查询已发起的账户解冻交易,支持使用原解冻交易的请求订单号,以及时间范围查询。

  • 调用示例

Dictionary<string, object> params = new Dictionary<string, object>();
params.Add("app_id", "app_XXXXXXXX");
params.Add("status", "succeeded");
params.Add("page_index", "1");
params.Add("page_size", "10");
params.Add("created_gte", "1571466657929");
params.Add("created_lte", "1571898657929");
Dictionary<string, object> result = UnFreezeAccount.queryList(params);
  • 请求参数

调用参数详见 查询账户解冻对象列表

个人用户使用快捷支付前,对个人用户的银行卡进行验证。该功能实现对用户银行卡进行四要素验证,验证成功后,会向用户银行卡对应的预留手机号发送短信验证码。

  • 调用示例

Dictionary<string, object> applyParam = new  Dictionary<string, object>();
applyParam.Add("app_id", "app_XXXXXXXX");
applyParam.Add("member_id", "member_id_test");
applyParam.Add("card_id", "666666666666666666666666");
applyParam.Add("tel_no", "13888888888");
applyParam.Add("vip_code", "321");
applyParam.Add("expiration", "0225");
Dictionary<string, object> result = FastPay.cardBind(applyParam);
  • 参数说明

调用参数详见 创建快捷绑卡申请

快捷绑卡申请成功后,用户输入收到的短信验证码进行短信验证,若验证成功,Adapay会返回快捷卡唯一标识token_no。若同步返回pending状态时,Adapay会发送 异步消息通知 告知。

  • 调用示例

Dictionary<string, object> confirmParam = new  Dictionary<string, object>();
confirmParam.Add("apply_id", "0177857511167541248");
confirmParam.Add("sms_code", "123456");
confirmParam.Add("notify_url", "https://xxxx.com/xxxx");
Dictionary<string, object> cash = FastPay.cardBindConfirm(confirmParam);
  • 参数说明

调用参数详见 创建快捷绑卡确认

查询已绑定的快捷银行卡列表。

  • 调用示例

Dictionary<string, object> listParam = new  Dictionary<string, object>();
listParam.Add("app_id", "app_XXXXXXXX");
listParam.Add("member_id", "member_id_test");
listParam.Add("token_no", "10000067502");
Dictionary<string, object> result = FastPay.cardBindList(listParam);
  • 参数说明

调用参数详见 查询快捷卡对象列表

当 创建支付对象 中 pay_channel 为 fast_pay 时,Adapay 会向用户已绑定快捷卡对应的预留手机号发送短信验证码,需要通过该功能输入用户收到的短信验证码进行验证。 验证结果,Adapay 会发送 异步消息通知 告知。

  • 调用示例

Dictionary<string, object> confirmParams = new Dictionary<string, object>();
confirmParams.Add("payment_id",  "002112020012010545810065165317376983040");
confirmParams.Add("sms_code", "123456");
confirmParams.Add("app_id", "app_XXXXXXXX");
Dictionary<string, object> result = FastPay.confirm(confirmParams);
  • 参数说明

调用参数详见 创建快捷支付确认

查询已绑定的快捷银行卡列表。

  • 调用示例

Dictionary<string, object> smsCodeParam = new  Dictionary<string, object>();
smsCodeParam.Add("payment_id", "20190912");
Dictionary<string, object> result = FastPay.smsCode(smsCodeParam);
  • 参数说明

调用参数详见 创建快捷支付短信重发

服务商分账对象

创建服务商分账对象

  • 调用示例

Dictionary<string, object> commissionParam = new  Dictionary<string, object>();
commissionParam.Add("order_no", "1579163031383");
commissionParam.Add("payment_id", "002112020111717230410174704123849117696");
commissionParam.Add("trans_amt", "0.01");
Dictionary<string, object> commission = SettleAccount.createCommissionsSettle(commissionParam);
  • 参数说明

调用参数详见 创建服务商分账对象

查询服务商分账对象列表

  • 调用示例

Dictionary<string, object> params = new Dictionary<string, object>();
params.Add("app_id", "app_XXXXXXXX");
params.Add("status", "succeeded");
params.Add("page_index", "1");
params.Add("page_size", "10");
params.Add("created_gte", "1571466657929");
params.Add("created_lte", "1571898657929");
Dictionary<string, object> result = SettleAccount.listCommissionSettles(params);
  • 参数说明

调用参数详见 查询服务商分账对象列表

工具类

下载对账单

您可通过本接口下载您交易日期的对账单。比如掉单、系统错误等导致商户侧和 Adapay 侧数据不一致,通过对账单核对后可校正支付状态。

  • 调用示例

Dictionary<string, object> dict2 = new Dictionary<string, object>();
dict2.Add("bill_date", "20190912");
Dictionary<string, Object> result = Bill.download(dict2, merchantKey);
  • 请求参数

参数

类型

描述

bill_date

String(8)

对账单的日期,格式:20180808

  • 返回参数

参数

类型

描述

bill_download_url

String(8)

对账单文件下载 url

获取云闪付用户标识

通过本接口获取银联云闪付用户标识

  • 调用示例

Dictionary<string, object> dict2 = new Dictionary<string, object>();
dict2.Add("order_no", "csdk\_payment\_" + Program.timeStamp());
dict2.Add("app_id", app_id);
dict2.Add("user_auth_code", "5yRGbi+IRda5khIQoQf1Hw==");
dict2.Add("app_up_identifier", "CloudPay");

Dictionary<string, Object> result = AdapayTools.unionUserId(dict2, merchantKey);
  • 请求参数

调用参数详见 获取银联云闪付用户标识

HTTP 验签方法

通过此方法,商户可对 HTTP 回调参数进行签名验证。

返回示例详见 http response

  • 调用示例

// data 返回内容,sign返回签名
bool result = AdapayTools.verfySign(data, sign);