数字营销
标准API开放接口规范
1.文档说明
2.接口规则
3.标准接口定义
会员营销
3.1.1会员账户信息查询
3.1.2会员充值
3.1.13第三方优惠试算
3.1.5会员注册
3.1.6统一登录注册
3.1.7会员商户优惠试算
3.1.10会员基本信息查询
3.1.16会员绑储值卡
3.1.17会员实名
3.1.18会员充值查询
3.1.21会员绑定实体卡(开卡)
3.1.22会员卡密码修改
3.1.23会员调账
3.1.24会员调账查询
3.1.25会员状态变更
3.1.26发送短信验证码
3.1.28会员消费查询
3.1.29会员消费撤销
3.1.30会员消费撤销查询
3.1.31会员无密码消费
3.1.32会员消费
3.1.34会员信息更新
3.1.35会员账户流水
3.1.37 获取用户基本信息(OAuth2)
3.1.38 获取基础营销授权链接
3.3.1 H5页面调用绑定微信和手机号(GET)
3.3.2 H5页面调用绑定微信和外部顾客编号(GET)
卡券营销
3.2.1卡/券查询
3.2.2发卡/券
3.2.4卡/券作废
3.2.5卡/券核券撤销
3.2.7发卡/券(套券)
3.2.8发卡/券查询
3.2.9作废优惠券发券
3.2.10储值卡充值
3.2.11储值卡充值查询
3.2.12实体储值卡激活(单张)
3.2.13可发卡/券列表查询(套)
3.2.14卡/券批量查询
3.2.15卡/券鉴权
3.2.16卡/券动态二维码生成
3.2.17卡/券转赠
3.2.18卡/券发放查询
3.2.19卡/券核销查询
3.2.20卡/券核销撤销查询
3.2.21卡/券模板详情查询
3.2.22 卡/券交易流水查询
3.2.23储值卡调账
3.2.24储值卡调账查询
3.2.25 卡/券交易流水分页查询
3.2.26 作废卡/券发放
3.2.27卡/券核销
3.2.33卡/券动账流水
3.2.35券号查询该顾客同券模板下的券号列表
3.2.36卡/券冻结
3.2.45卡券延期
外部平台券
3.2.28第三方核券准备接口
3.2.29第三方核券接口
3.2.30第三方核券流水查询接口
3.2.31第三方撤销核券接口
3.2.32第三方券码查询接口
3.2.34第三方门店验券历史接口
3.2.35券号查询该顾客同券模板下的券号列表
3.2.38美团到店综合预约数据
3.2.39美团到店综合消费数据
3.2.40美团到店综合团单消费详情数据
3.2.41美团到店综合门店流量数据
3.2.42美团餐饮门店套餐映射
3.2.43美团到店综合门店商品信息
3.2.44抖音商品线上数据
3.2.46抖音综合提现记录查询
3.2.47抖音综合账单详情查询
3.2.48抖音订单查询
3.2.49抖音账单详细查询
3.2.50抖音券状态批量查询
订单同步
3.5.1外部订单同步
3.5.2外部订单查询
3.5.3外部订单同步撤销
3.5.17外部订单核销
3.5.18外部订单查询
3.5.19外部订单撤销
订单支付
3.5.9订单查询
3.5.10订单退款
3.5.11退款订单查询
3.5.12统一扫码
3.5.13终端信息采集
3.5.14统一支付
3.5.15 ISV收银台
3.5.16生成订单
3.5.20终端信息查询
3.5.23分账确认
3.5.24分账确认结果查询
7.1终端信息字段说明
7.2 splitList字段说明
账户类
3.9.1 资金管理余额查询
3.9.3 资金管理提现
3.9.4 资金管理提现结果查询
3.9.5 资金管理账户批量导入
3.9.6 资金管理账户查询
通知相关
3.10通知相关
5.1券核销通知
5.2会员注册/修改通知
5.3订单支付通知
5.4券核销撤销通知
5.5跨机构订单支付通知
5.6微信核销通知转发
5.7发券通知
5.8卡券充值通知
5.9支付宝核销通知转发
5.10 卡券变动通知
5.11 实体卡入库通知
5.13顾客注册/修改通知
5.15提现结果通知
5.16资金管理小b开通通知
对账文件
6.1对账文件
6.2 分账对账流水文件下载
6.3 对账流水文件下载
机构管理类
3.8.1外部门店信息同步
3.8.2 创建/修改机构用户
3.8.3 查询机构用户信息
3.8.4 机构统计信息查询
附录
7.1终端信息字段说明
7.2 splitList字段说明
7.3 店铺经营类型枚举
7.6 支付方式说明
7.7 paytypeinfo-支付方式参数说明
7.9渠道交易类型(trxCode)
7.10交易返回码(trxStatus)
7.11扩展参数说明
4.1 公共返回码(code)
4.开发参考
4.1 SDK参考概述
4.2 Java SDK
4.3 Python SDK
4.4 PHP SDK
4.5 GO SDK
4.6 C# SDK
一码付开放接口规范
1.接口说明
2.接口规则
3.标准API
3.1统一扫码
3.2统一撤销
3.3统一退款
3.4统一查询
3.5交易结果通知
3.6订单生成
3.7终端信息采集报备
3.8统一支付
3.9资金管理余额查询
3.10资金管理提现
3.11资金管理提现结果查询
3.12资金管理转账
3.13资金管理转账结果查询
3.14终端信息查询
3.15订单关闭
3.16ISV收银台
3.17ISV前端跳转
3.18对账流水文件下载
3.19根据授权码(付款码)获取用户ID
3.20资金管理提现通知
3.21分账/收款确认
3.22分账/收款确认结果查询
3.23资金管理转账通知
3.24资金管理批量转账
3.25资金管理批量转账结果查询
3.26B2B订单支付收款
3.27B2B订单支付付款
3.31代付
3.32代付订单查询
3.33资金管理交易文件查询
3.34收支明细查询
3.35交易列表查询
4.附录
4.1 接口返回码retcode说明
4.2 交易返回码trxstatus说明
4.3 交易类型
4.4 支付渠道优惠信息填写规范(benefitdetail字段)
4.5 拓展参数说明(extendparams)
4.6 终端信息字段说明
4.7 asinfo字段说明
4.8 交易方式
4.9 splitlist字段说明
4.10支付方式
4.11paytypeinfo-支付方式参数说明
4.12民生/平安银行转账子账簿信息
5.13微信订单支付(小程序资金管控)接入说明
5.开发参考
5.1 SDK参考概述
5.2 Java SDK
5.3 C# SDK
5.4 PHP SDK
5.5 GO SDK
5.6 C SDK
5.6.1 安装指南
5.6.2 使用示例
通惠API开放接口规范
1. 文档说明
2. 接口规则
3.标准接口定义
3.1会员信息类
3.3页面调用类
3.4 银行活动类
3.7 互动营销类
3.8 机构管理类
4.公共返回码
5.通知相关
6.对账文件类
7.开发参考
8.接口权限申请表下载
9.常见问题合集
通联核心产品文档中心
-
+
5.3 C# SDK
# Allinpay Shopoint OCPay SDK for .NET 通联支付一码付开放接口SDK的C#实现版本。 ## 依赖库 - **.NET 8.0** 或更高版本 - **BouncyCastle.Cryptography 2.4.0** - 提供真正的SM2算法实现 - 秘钥长度:2048位及以上(RSA) - 秘钥格式:PKCS#8(私钥)、X509(公钥) ## 功能特性 - **多种签名算法支持**:RSA、SM2、MD5 - **真正的SM2算法**:集成BouncyCastle.Cryptography库,支持真实的国密SM2算法 - **灵活的请求接口**:支持所有一码付API - **自动签名和验签**:根据配置自动选择算法 - **多种配置方式**:支持配置文件和环境变量配置 - **调试日志输出**:便于开发调试 - **响应数据辅助处理**:提供便捷的数据访问方法 - **密钥对生成**:支持生成真实的SM2密钥对用于测试 ## 支持的签名算法 ### RSA算法 - 使用SHA1WithRSA签名算法 - 支持PKCS#8格式私钥 - 与Java版本完全兼容 ### SM2算法 (国密算法) - 真实实现 - **真正的SM2算法**:使用BouncyCastle.Cryptography库实现 - 使用SM3WithSM2签名算法 - 支持国产密码算法标准 - **简化配置**:直接使用AppId作为证书ID,无需额外配置 - 支持PKCS#8格式私钥和X509格式公钥 - 完全符合国密标准规范 ### MD5算法 - 简单的MD5哈希签名 - 适用于低安全要求场景 ## 快速开始 ### 下载SDK [点击下载](https://dms.shopoint.cn/openapis/sdk/csharp-ocpay-sdk.zip) ### 1. 配置SDK参数 #### RSA算法配置 **方式一:使用配置文件** 复制 `config.template.json` 为 `config.json` 并填入你的配置: ```json { "appId": "your_app_id_here", "signType": "RSA", "privateKey": "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY_HERE\n-----END PRIVATE KEY-----", "publicKey": "-----BEGIN PUBLIC KEY-----\nYOUR_PUBLIC_KEY_HERE\n-----END PUBLIC KEY-----", "certId": "", "debugEnabled": true } ``` **方式二:使用环境变量** ```bash export OCPAY_APP_ID="your_app_id" export OCPAY_SIGN_TYPE="RSA" export OCPAY_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY_HERE\n-----END PRIVATE KEY-----" export OCPAY_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nYOUR_PUBLIC_KEY_HERE\n-----END PUBLIC KEY-----" export OCPAY_DEBUG="true" ``` #### SM2算法配置 **使用配置文件:** ```json { "appId": "your_app_id_here", "signType": "SM2", "privateKey": "MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQg...", "publicKey": "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE...", "debugEnabled": true } ``` **使用环境变量:** ```bash export OCPAY_APP_ID="your_app_id" export OCPAY_SIGN_TYPE="SM2" export OCPAY_PRIVATE_KEY="MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQg..." export OCPAY_PUBLIC_KEY="MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE..." export OCPAY_DEBUG="true" ``` **注意:** SM2算法直接使用AppId作为证书ID,无需额外配置。 ### 2. 使用SDK ```csharp using AllinpayShopointOCPaySDK; // 创建SDK实例 var sdk = new AllinpayShopointOCPaySdk(); // 加载配置 var config = Config.LoadFromFile("config.json"); // 或者从环境变量加载: var config = Config.LoadFromEnv(); sdk.SetConfig(config); // 准备请求参数 var parameters = new Dictionary<string, object> { ["cusid"] = "266649", ["reqsn"] = "202509108000002", ["randomstr"] = Utils.GenerateRandomString(16) }; // 发起请求 var endpoint = "https://dms-api-test.shopoint.cn/shopoint-openapis-web/szyx/apiweb/tranx/query"; var response = await sdk.RequestAsync(endpoint, parameters); // 处理响应 if (response.IsSuccess()) { Console.WriteLine($"查询成功,交易状态: {response.GetTrxStatus()}"); Console.WriteLine($"交易金额: {response.GetTrxAmt()}"); } else { Console.WriteLine($"查询失败: {response.GetErrorMessage()}"); } ``` ## 主要类说明 ### AllinpayShopointOCPaySdk 主要的SDK类,提供接口调用功能。 **主要方法:** - `SetConfig(Config config)` - 设置SDK配置 - `RequestAsync(string endpoint, Dictionary<string, object> parameters)` - 发起API请求 ### Config 配置类,支持从文件或环境变量加载配置。 **主要方法:** - `LoadFromFile(string filename)` - 从JSON文件加载配置 - `LoadFromEnv()` - 从环境变量加载配置 - `Validate()` - 验证配置有效性 ### ResponseHelper 响应处理辅助类,提供便捷的数据访问方法。 **主要方法:** - `IsSuccess()` - 判断请求是否成功 - `IsPaid()` - 判断是否已支付 - `GetString(string key)` - 获取字符串值 - `GetInt(string key)` - 获取整数值 - `GetRetCode()` - 获取返回码 - `GetTrxStatus()` - 获取交易状态 - `GetErrorMessage()` - 获取错误信息 ### CryptoUtils 加密工具类,提供多种签名算法支持。 **主要方法:** - `RsaPrivateSign(string data, string privateKey)` - RSA私钥签名 - `RsaPublicVerify(string data, string sign, string publicKey)` - RSA公钥验签 - `Sm2PrivateSign(string data, string privateKey, string appId)` - SM2私钥签名 - `Sm2PublicVerify(string data, string sign, string publicKey, string appId)` - SM2公钥验签 - `Sign(string data, string privateKey, string signType, string appId)` - 通用签名方法 - `Verify(string data, string sign, string publicKey, string signType, string appId)` - 通用验签方法 ### SM2Utils SM2算法专用工具类,提供真正的国密算法支持。 **主要方法:** - `SignSM3SM2RetBase64(string privateKey, string certId, byte[] data)` - SM2签名并返回Base64 - `VerifySM3SM2(string publicKey, string certId, byte[] signData, byte[] srcData)` - SM2验签 - `PrivKeySM2FromBase64Str(string keystr)` - 从Base64解析SM2私钥 - `PubKeySM2FromBase64Str(string keystr)` - 从Base64解析SM2公钥 - `GenerateSM2KeyPair()` - 生成SM2密钥对 - `ValidateKeyPair(string privateKey, string publicKey)` - 验证密钥对匹配性 ### Utils 工具类,提供随机字符串生成、签名字符串构建等功能。 ## 运行项目 ```bash dotnet run ``` ## 构建项目 ```bash dotnet build ``` ## 注意事项 1. 请确保正确配置AppId、公钥和私钥 2. 私钥格式需要符合PKCS#8标准 3. 建议在生产环境中关闭调试模式 4. 所有接口调用都是异步的,请使用async/await模式 5. SDK会自动处理签名和验签,无需手动处理 6. 支持所有一码付开放接口,只需提供正确的endpoint和参数 ## 错误处理 SDK会在以下情况抛出异常: - 配置验证失败 - 签名失败 - 网络请求失败 - 验签失败(可选,通过ResponseHelper判断) 建议使用try-catch块处理异常: ```csharp try { var response = await sdk.RequestAsync(endpoint, parameters); // 处理响应 } catch (Exception ex) { Console.WriteLine($"请求失败: {ex.Message}"); } ``` ## 示例 ### RSA算法示例 项目包含完整的RSA交易查询示例,演示了如何: - 加载配置 - 创建SDK实例 - 发起API请求 - 处理响应数据 运行RSA示例: ```bash dotnet run ``` ### SM2算法示例 项目包含完整的SM2算法示例,演示了如何: - 生成真实的SM2密钥对 - 配置SM2算法参数 - 使用真正的BouncyCastle库进行签名和验签 - 发起SM2算法的API请求 运行真实SM2示例: ```bash dotnet run --project SM2RealExample.cs ``` 运行框架SM2示例: ```bash dotnet run --project SM2Example.cs ``` ### SM2密钥对生成 SDK提供了真实的SM2密钥对生成功能: ```csharp // 生成SM2密钥对 var (privateKey, publicKey) = SM2Utils.GenerateSM2KeyPair(); // 验证密钥对是否匹配 var isValid = SM2Utils.ValidateKeyPair(privateKey, publicKey); Console.WriteLine($"私钥: {privateKey}"); Console.WriteLine($"公钥: {publicKey}"); Console.WriteLine($"密钥对验证: {(isValid ? "匹配" : "不匹配")}"); ``` ### 算法切换示例 ```csharp // 创建配置 var config = new Config { AppId = "your_app_id", SignType = "SM2", // 可以是 "RSA", "SM2", "MD5" PrivateKey = "your_private_key", PublicKey = "your_public_key" // SM2算法直接使用AppId作为证书ID,无需额外配置 }; // SDK会根据SignType自动选择对应的算法 var sdk = new AllinpayShopointOCPaySdk(); sdk.SetConfig(config); // 发起请求,SDK内部会自动使用配置的算法进行签名 var response = await sdk.RequestAsync(endpoint, parameters); ``` ## 重要说明 ### SM2算法实现 **真正的SM2算法**:当前版本集成了BouncyCastle.Cryptography库,提供真正的SM2算法实现: 1. **真实的密码学算法**:使用BouncyCastle库的SM2实现,符合国密标准 2. **完整的密钥支持**:支持真实的SM2密钥对生成、解析和使用 3. **标准的ASN1编码**:使用标准的ASN1编码格式处理签名数据 4. **生产环境就绪**:可以直接用于生产环境 ### 安装依赖 项目已经配置了BouncyCastle.Cryptography依赖,运行以下命令安装: ```bash dotnet restore ``` ### SM2算法注意事项 1. **简化配置**:SM2算法直接使用AppId作为证书ID,无需额外配置 2. **密钥格式**:SM2私钥和公钥需要使用Base64编码格式 3. **算法实现**:使用真正的BouncyCastle SM2算法实现 4. **兼容性**:SM2算法与Java版本的实现保持一致 5. **密钥生成**:可以使用SDK提供的密钥生成功能创建测试密钥对 ### 生产环境使用 1. **密钥管理**:妥善保管私钥,不要在代码中硬编码 2. **算法选择**:根据业务需求和安全要求选择合适的签名算法 3. **测试验证**:在生产环境使用前,请充分测试各种算法的兼容性 4. **性能考虑**:SM2算法的性能特征与RSA不同,请根据实际需求选择
卜子超buzc
2026年3月6日 11:12
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Word文件
PDF文档
分享
链接
类型
密码
更新密码
有效期