数字营销
标准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.6 C SDK
# allinpay-shopoint-sdk-c [](https://opensource.org/licenses/MIT) [](https://en.wikipedia.org/wiki/C99) C 语言版本的一码付 SDK,用于集成一码付支付功能。 ## 项目简介 本 SDK 提供了一套完整的 C 语言接口,用于与一码付支付平台进行交互。SDK 采用模块化设计,支持配置管理、RSA 签名验签、HTTP 请求处理、响应解析等核心功能。 **设计特点:** - 遵循 C99 标准,确保跨平台兼容性 - 模块化架构,易于维护和扩展 - 完善的错误处理机制 - 详细的 API 文档和使用示例 - 内存安全,无内存泄漏 ## 主要特性 - **配置管理**:支持从 JSON 文件和环境变量加载配置 - **多种签名算法**:支持 RSA、SM2、MD5 三种签名类型 - RSA: SHA1WithRSA 签名(推荐) - SM2: 国密 SM3WithSM2 签名 - MD5: MD5 哈希签名(不推荐,安全性较低) - **HTTP 请求**:使用 libcurl 处理 HTTP POST 请求 - **响应解析**:使用 cJSON 解析 JSON 响应数据 - **错误处理**:完善的错误码和错误信息管理 - **跨平台**:支持 Linux、macOS、Windows(MinGW/MSVC) ## 依赖库 - **OpenSSL** (>= 1.1.1) - RSA/SM2 签名验签、SHA1/SM3 哈希、MD5 哈希 - **libcurl** (>= 7.50.0) - HTTP 请求 - **cJSON** (>= 1.7.0) - JSON 解析 **注意:** 如需使用 SM2 国密算法,请确保 OpenSSL 版本 >= 1.1.1 且编译时启用了 SM2 支持。 ### 安装依赖 **Ubuntu/Debian:** ```bash sudo apt-get install libssl-dev libcurl4-openssl-dev libcjson-dev ``` **CentOS/RHEL:** ```bash sudo yum install openssl-devel libcurl-devel # cJSON 需要从源码编译安装 ``` **macOS:** ```bash brew install openssl curl cjson ``` ## 快速开始 [**点击下载项目源码**](https://dms.shopoint.cn/openapis/sdk/allinpay-shopoint-ocpay-sdk-c-v1.0.0.tar.gz) ### 1. 安装依赖库 详细的依赖安装说明请参考 [安装指南](https://prodoc.allinpay.com/doc/2667/)。 ### 2. 编译 SDK **使用 Makefile:** ```bash make ``` **使用 CMake:** ```bash mkdir build && cd build cmake .. make ``` 编译成功后会生成: - `libocpay.so` - 动态库 - `libocpay.a` - 静态库 - `examples/basic_usage` - 基本使用示例 - `examples/query_transaction` - 交易查询示例 ### 3. 安装 SDK ```bash sudo make install sudo ldconfig ``` ### 4. 配置 SDK SDK 支持三种签名类型:RSA、SM2、MD5。根据您的需求选择合适的签名类型。 #### RSA 签名配置(推荐) 创建配置文件 `config.json`: ```json { "app_id": "your_app_id", "sign_type": "RSA", "private_key": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----", "public_key": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----", "debug_enabled": 1 } ``` #### SM2 签名配置(国密) ```json { "app_id": "your_app_id", "sign_type": "SM2", "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", "public_key": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----", "debug_enabled": 1 } ``` **注意事项:** - SM2 需要 OpenSSL 1.1.1+ 且编译时启用 SM2 支持 - 签名格式为 RS 格式(64字节),而非 ASN.1 DER 格式 - 签名时自动使用 app_id 作为用户 ID(certid) #### MD5 签名配置(不推荐) ```json { "app_id": "your_app_id", "sign_type": "MD5", "private_key": "your_md5_secret_key", "public_key": "your_md5_secret_key", "debug_enabled": 1 } ``` **注意事项:** - MD5 不是真正的签名算法,安全性较低,仅用于测试环境 - private_key 和 public_key 填写相同的秘钥字符串即可 或使用环境变量: ```bash export OCPAY_APP_ID="your_app_id" export OCPAY_SIGN_TYPE="RSA" # 或 "SM2" 或 "MD5" export OCPAY_PRIVATE_KEY="$(cat private_key.pem)" export OCPAY_PUBLIC_KEY="$(cat public_key.pem)" export OCPAY_DEBUG=1 ``` ### 5. 使用示例 ```c #include "ocpay_sdk.h" #include <stdio.h> #include <stdlib.h> int main() { // 1. 加载配置 ocpay_config_t *config = ocpay_config_create(); if (ocpay_config_load_from_file(config, "config.json") != OCPAY_SUCCESS) { fprintf(stderr, "加载配置失败\n"); ocpay_config_free(config); return -1; } // 2. 创建 SDK 实例 ocpay_sdk_t *sdk = ocpay_sdk_create(); ocpay_sdk_set_config(sdk, config); // 3. 生成请求序列号 char *reqsn = ocpay_generate_reqsn(); // 4. 构建请求参数 const char *params[] = { "reqsn", reqsn, "trxamt", "28940", "goodsdesc", "测试商品", "notifyurl", "https://example.com/notify", NULL }; // 5. 发起请求 const char *endpoint = "https://dms-api-test.shopoint.cn/shopoint-openapis-web/szyx/apiweb/pay/unifiedorder"; ocpay_response_t *resp = ocpay_sdk_request(sdk, endpoint, params); free(reqsn); if (!resp) { fprintf(stderr, "请求失败: %s\n", ocpay_get_error_message(ocpay_get_last_error())); ocpay_sdk_free(sdk); ocpay_config_free(config); return -1; } // 6. 处理响应 if (ocpay_response_is_success(resp)) { printf("支付请求成功\n"); printf("交易ID: %s\n", ocpay_response_get_string(resp, "trxid")); printf("交易状态: %s\n", ocpay_response_get_string(resp, "trxstatus")); } else { printf("支付请求失败: %s\n", ocpay_response_get_error_message(resp)); } // 7. 清理资源 ocpay_response_free(resp); ocpay_sdk_free(sdk); ocpay_config_free(config); return 0; } ``` **编译并运行:** ```bash # 编译 gcc -o my_app my_app.c -locpay -lssl -lcrypto -lcurl -lcjson # 运行 ./my_app ``` ## 项目结构 ``` allinpay-shopoint-sdk-c/ ├── include/ # 公共头文件 ├── src/ # 源代码实现 ├── examples/ # 示例代码 ├── tests/ # 测试代码 ├── docs/ # 文档 ├── Makefile # 构建文件 ├── CMakeLists.txt # CMake 配置 └── README.md # 项目说明 ``` ## 文档 - 🔧 [安装指南](https://prodoc.allinpay.com/doc/2667/) - 依赖安装和 SDK 编译指南 - 💡 [使用示例](https://prodoc.allinpay.com/doc/2668/) - 常见使用场景和代码示例 ## 核心功能 ### 配置管理 支持多种配置方式: ```c // 从 JSON 文件加载 ocpay_config_load_from_file(config, "config.json"); // 从环境变量加载 ocpay_config_load_from_env(config); // 验证配置 ocpay_config_validate(config); ``` ### 支付请求 ```c const char *params[] = { "reqsn", reqsn, "trxamt", "28940", "goodsdesc", "测试商品", "notifyurl", "https://example.com/notify", NULL }; ocpay_response_t *resp = ocpay_sdk_request(sdk, endpoint, params); ``` ### 交易查询 ```c const char *params[] = { "cusid", "266649", "version", "11", "reqsn", "PN20240101120000abcdef", "randomstr", randomstr, NULL }; ocpay_response_t *resp = ocpay_sdk_request(sdk, query_endpoint, params); ``` ### 响应处理 ```c if (ocpay_response_is_success(resp)) { const char *trxid = ocpay_response_get_string(resp, "trxid"); const char *status = ocpay_response_get_string(resp, "trxstatus"); printf("交易ID: %s, 状态: %s\n", trxid, status); } else { printf("错误: %s\n", ocpay_response_get_error_message(resp)); } ``` ## 示例程序 SDK 提供了多个完整的示例程序: ### 基本使用示例 演示完整的支付流程: ```bash cd examples ./basic_usage ``` ### 交易查询示例 演示如何查询交易状态: ```bash cd examples ./query_transaction PN20240101120000abcdef ``` ### 签名类型演示 演示如何使用不同的签名类型(RSA、SM2、MD5): ```bash cd examples ./sign_types_demo ``` 该示例会输出三种签名类型的配置说明和使用方法。 ## 开发 ### 运行测试 ```bash # 编译测试 make test # 运行所有测试 cd tests ./run_tests.sh ``` ### 内存检查 使用 Valgrind 检查内存泄漏: ```bash valgrind --leak-check=full --show-leak-kinds=all ./examples/basic_usage ``` ### 代码风格 本项目遵循以下编码规范: - 遵循 C99 标准 - 使用 4 空格缩进 - 函数名使用 `ocpay_` 前缀 - 结构体类型使用 `_t` 后缀 - 详细的函数注释和文档 ### 调试模式 启用调试模式可以输出详细的日志信息: ```json { "debug_enabled": 1 } ``` 或设置环境变量: ```bash export OCPAY_DEBUG=1 ``` ## 常见问题 ### 1. 找不到头文件 ```bash # 指定头文件路径 gcc -I/usr/local/include/ocpay -o app app.c -locpay ``` ### 2. 找不到库文件 ```bash # 指定库文件路径 gcc -o app app.c -L/usr/local/lib -locpay ``` ### 3. 运行时找不到动态库 ```bash # 更新动态库缓存 sudo ldconfig # 或设置 LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ``` ### 4. 签名失败 **RSA 签名:** - 检查私钥格式是否正确(PEM 格式) - 确认私钥和公钥是否匹配 - 验证 OpenSSL 版本 >= 1.1.0 **SM2 签名:** - 确认 OpenSSL 版本 >= 1.1.1 - 检查 OpenSSL 是否启用了 SM2 支持 - 验证 SM2 密钥格式是否正确(EC 密钥) **MD5 签名:** - 确认秘钥字符串是否正确 - 检查参数排序是否正确(SDK 会自动处理) ### 5. 验签失败 - 检查公钥是否正确 - 确认响应数据未被篡改 - 联系服务提供方确认公钥 更多问题请参考 [安装指南](https://prodoc.allinpay.com/doc/2667/) 的故障排除部分。 ## 性能特点 - **内存占用**:单个 SDK 实例 < 10MB - **签名性能**:RSA 签名 < 5ms(2048 位密钥) - **验签性能**:RSA 验签 < 2ms(2048 位密钥) - **请求延迟**:< 100ms(不含网络时间) ## 安全建议 1. **密钥管理** - 不要在代码中硬编码密钥 - 使用环境变量或加密配置文件 - 定期轮换密钥 - 建议使用 HSM(硬件安全模块) 2. **传输安全** - 强制使用 HTTPS 协议 - 验证服务器证书 - 使用 TLS 1.2 或更高版本 3. **配置安全** - 设置配置文件权限为 600 - 不要将配置文件提交到版本控制系统 - 生产环境关闭调试模式 ## 兼容性 ### 操作系统 - ✅ Linux (Ubuntu 18.04+, CentOS 7+, Debian 9+) - ✅ macOS (10.14+) - ✅ Windows (MinGW/MSVC) ### 编译器 - ✅ GCC 4.8+ - ✅ Clang 3.5+ - ✅ MSVC 2015+ ### 依赖库版本 - OpenSSL >= 1.1.0 - libcurl >= 7.50.0 - cJSON >= 1.7.0 ## 许可证 本项目采用 MIT 许可证。 ## 致谢 感谢以下开源项目: - [OpenSSL](https://www.openssl.org/) - 加密库 - [libcurl](https://curl.se/libcurl/) - HTTP 客户端库 - [cJSON](https://github.com/DaveGamble/cJSON) - JSON 解析库 --- **注意**:本 SDK 仅供学习和开发使用,生产环境使用前请进行充分测试。
陈志平chenzp3
2026年3月10日 10:39
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Word文件
PDF文档
分享
链接
类型
密码
更新密码
有效期