# 前端SDK Linux文档
# 一、文档修订记录
版本 | 简要说明 | 修改日期 |
---|---|---|
1.0 | 移植Windows版SDK的文档 | 2018/10/30 |
1.1 | 添加initWxpayface接口可选参数说明 | 2018/12/18 |
1.2 | 整合Linux版SDK的文档 | 2019/02/28 |
1.3 | 增加getWxpayfaceCode接口可选UI参数说明 | 2019/03/20 |
注: 目前微信支付人脸识别,仍处于内测阶段,接口调用需先邀请加入白名单。目前Linux版主要支持刷脸支付功能,刷脸登录功能会在后续版本加入。
# 二、参数表中的“必填”栏取值说明
取值 | 解释 |
---|---|
是 / Y | 表示该参数必填 |
否 / N | 表示该参数非必填,可以为空 |
S | 表示该参数仅在错误码为SUCCESS 时填写 |
# 三、接口规范
摘要 | 详细描述 |
---|---|
传输方式 | 采用HTTPS协议传输 |
提交方式 | 默认采用POST方法提交 |
数据格式 | 默认提交和返回数据都为JSON格式 |
字符编码 | 统一采用UTF-8字符编码 |
# 四、各场景交互流程
# 4.1 人脸凭证的交互流程
# 4.1.1 流程功能介绍
该流程通过识别用户人脸、手机号,获取人脸凭证(face_code),该人脸凭证具有较高的安全等级,可用于支付。
# 4.1.2 名词解释
**人脸授权:**通过人脸识别,返回微信用户信息(openid, face_code)。
face_code:人脸凭证。常用于刷脸支付,作为订单的支付凭证。
# 4.1.3 人脸凭证时序图
注:
- 初始化 initWxpayface, 只需要在程序启动时调用;
- 释放资源 releaseWxpayface,只需要在程序退出时调用;
# 五、刷脸支付的交互流程
# 5.1 刷脸支付功能介绍
通过人脸凭证(face_code),完成对订单的支付。
# 5.2 刷脸支付时序图
# 六、微信支付API
# 6.1 公共部分
# 6.1.1 公共请求参数
所有请求均需要填写的参数。
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string(32) | 公众号 |
mch_id | 是 | string(32) | 商户号 |
sub_appid | 否 | string(32) | 子商户公众账号ID(服务商模式) |
sub_mch_id | 否 | string(32) | 子商户号(服务商模式) |
now | 是 | int | 取当前时间,10位unix时间戳。 例如:1239878956 |
version | 是 | string | 版本号。固定为1 |
sign_type | 是 | string | 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5 |
nonce_str | 是 | string(32) | 随机字符串,不长于32位 |
sign | 是 | string | 参数签名。详见微信支付签名算法 |
# 6.1.2 公共响应结果
所有响应结果均会返回的参数。
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string(16) | 错误码。公共定义见公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
nonce_str | 是 | string(32) | 随机字符串 |
sign | 是 | string | 响应结果签名 |
appid | 否 | string(32) | 公众号 |
mch_id | 否 | string(32) | 商户号 |
sub_appid | 否 | string(32) | 子商户公众账号ID(服务商模式) |
sub_mch_id | 否 | string(32) | 子商户号(服务商模式) |
# 6.1.3 公共错误码
所有接口的return_code参数,都可能返回的公共错误码。
错误码 | 描述 | 解决方案 |
---|---|---|
SUCCESS | 接口成功 | 无 |
ERROR | 接口失败 | 展示错误原因(该请求无法通过重试解决) |
PARAM_ERROR | 参数错误 | 参照错误提示 |
SYSTEMERROR | 接口返回错误 | 系统异常,可重试该请求 |
# 6.1.4 接口耗时定义
常见请求耗时分解见下图:
从商户server来看,接口超时应满足:
接口超时 > (N1 + N2) + W
请求/返回网络耗时(N1 + N2):
由于网络耗时主要受以下因素影响:
- 网络环境(网络延迟/丢包率);
- 建立https协议的网络通信;
- 传输的数据长度;
- 域名DNS解析
合理的网络耗时部分,由开发根据实际情况来调整。
若网络延迟< 50ms (比如ping api.mch.weixin.qq.com
的延低于50ms),丢包率低的情况下,可以评估网络耗时约为2秒。
接口最大耗时(W):
由微信提供该接口需要的最长耗时。
# 6.2 get_wxpayface_authinfo
获取 SDK调用凭证。
**注:**返回的接口凭证authinfo
,可以在expires_in
指定的有效期内,同一台机具上重复使用。
# 6.2.1 接口地址
https://payapp.weixin.qq.com/face/get_wxpayface_authinfo
接口最大耗时(W): 5秒。 细节参见接口耗时定义
考虑到与后台刷脸支付API的一致性, 这里统一采用xml格式。
# 6.2.2 接口请求参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
store_id | 是 | string(32) | 门店编号, 由商户定义, 各门店唯一。 |
store_name | 是 | string(128) | 门店名称,由商户定义。(可用于展示) |
device_id | 是 | string(32) | 终端设备编号,由商户定义。 |
attach | 否 | string | 附加字段。字段格式使用Json |
rawdata | 是 | string(2048) | 初始化数据。由微信人脸SDK的接口返回。 获取方式参见: [获取数据 getWxpayfaceRawdata](#获取数据 getWxpayfaceRawdata) [获取数据 getWxpayfaceRawdata](#获取数据 getWxpayfaceRawdata) |
示例:
<appid>wx31fdaErqR31</appid>
<mch_id>12345689</mch_id>
<now>1239878956</now>
<version>1</version>
<sign_type>MD5</sign_type>
<nonce_str>V37ZHZVf2OrwsUV7kXTjTguP74c0byvE</nonce_str>
<sign>O4TCVPAJDIK933NUSUUSS6MLIQT2PCXW</sign>
<store_id>IMG001</store_id>
<store_name>爱马哥南山店</store_name>
<device_id>DEV001</device_id>
<rawdata>H0kvnUgGHKuqflNwtNqCdOVpbO4Fd4u2NRS2uJz5/n080cOlYF5nNnuyVc+UsX0+q3nVrEYAhJFyxeG8MBx/cmZSicjI8UipaehhfFiIHnBZndrCSeGizNs6PSowudTG</rawdata>
# 6.2.3 接口响应结果
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
authinfo | 否 | string(4096) | SDK调用凭证。用于调用SDK的人脸识别接口。 参见[人脸识别 getWxpayfaceCode](#人脸识别 getWxpayfaceCode) |
expires_in | 否 | int | authinfo的有效时间, 单位秒。 例如: 3600 在有效时间内, 对于同一台终端设备,相同的参数的前提下(如:相同的公众号、商户号、 门店编号等),可以用同一个authinfo,多次调用SDK的 getWxpayfaceCode 接口。 |
示例:
<return_code>SUCCESS</return_code>
<return_msg>请求成功</return_msg>
<nonce_str>Tivppi4UXAbgLxk8e1Sij76YdowOFFii</nonce_str>
<sign>PL0EUID6A7ICWNKHCSMQC0UIXOYNSE5B</sign>
<appid>wx31fdaErqR31</appid>
<mch_id>12345689</mch_id>
<authinfo>q3OPhFtQBf6KZGqmZhejKCRy5K/ch0kwS11YSsEj9XmUGqcsT2QPHt0Oa7xaCMCoSZTWMmShCo4dOiO5tU+OJEsvSxXzn5m3Nkh747tinNlbpJmVq1zOPj+FJNndkzanxoiAddO8p1EfrmUhJs/aNf0pDfrPoVfkAapK+ZY6blwyaDQ9bB7+KkZq29kObsXOZ3thg+bxP4RAqC0oxNS4JiyP0uA1Euzxtkc9lCTebloFied8stILrMehUKukeMGkZ1SzTyc8/HFHApzHahNPX6yD8ttzYnhe+IRMFJgpuTlIvEOYZUxenPXE1A5clrPvOBeJDszX/OvZl4fpYWPpXAcVQlw+gfYhblt+rT6ALMsD73w/rT4NRriQEEraC4Pfb5yua4qAqv4TVo04</authinfo>
<expires_in>7200</expires_in>
# 七、刷脸支付接口
刷脸支付接口已重新调整, 参见 刷脸支付接口文档 。
# 微信人脸SDK - Linux
使用方式:
- SDK需要集成到商户应用,提供的SDK为C动态链接库so
- 业务⽅通过
编译链接
或者dlopen
(Linux)的⽅式加载dll, 并执行相关函数 - 测试/运行时,需要先启动WxpayFaceService服务,然后商户应用使用SDK中的接口调起刷脸支付
注意点:
- 关于函数中⼊参、出参的数据格式, 均采⽤JSON字符串,编码为UTF-8。
- 调用
wxpayCallFaceService
成功后,务必调用wxpayReleaseResponse
来释放响应结果
# 入口函数原型
/**
* 调用人脸服务
* @param reqBuf 请求参数(JSON字符串)
* @param reqSize 请求参数长度
* @param pRespBuf 用来接收响应结果(JSON字符串)的char**指针
* @param pRespSize 用来接收响应结果长度的unsigned int*指针
* @return 如果成功返回0,失败则返回非0
*/
extern "C" int wxpayCallFaceService(const char *reqBuf, unsigned int reqSize, char **pRespBuf, unsigned int *pRespSize);
/**
* 释放人脸服务的响应字符串,调用wxpayCallFaceService成功后务必调用此函数释放内存
* @param pRespBuf 指向响应结果(JSON字符串)的指针
*/
extern "C" void wxpayReleaseResponse(char **pRespBuf);
# 请求参数Req和响应结果Resp构成
req
和resp
均为JSON结构的字符串
req
包含:公共请求字段 + 命令专有请求字段
resp
包含:公共响应字段 + 命令专有响应字段
# Req公共字段
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 命令字,即各接口名: initWxpayface getWxpayfaceRawdata getWxpayfaceCode releaseWxpayface reportInfo reportOrder |
version | 是 | string | 版本号, 固定填写1 |
now | 是 | int | 取当前时间的10位unix时间戮。 例如:1540901425 |
# Resp公共字段
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
# 初始化 initWxpayface
**支持版本:**1.12及以上
# 请求参数
除公共参数外,下方参数的代理设置可用于配置刷脸走商户内部代理。若不需要,则不用填写。
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
ip | 否 | string | HTTP代理IP |
port | 否 | string | HTTP代理端口, 须为数字 |
user | 否 | string | HTTP代理的用户名 |
passwd | 否 | string | HTTP代理的密码 |
###返回参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
###调用示例
// initWxpayface
// 初始化,默认无代理
const char* req = "{\"cmd\":\"initWxpayface\",\"version\":\"1\",\"now\":1540901425}";
// 初始化并配置代理
const char* req = "{\"cmd\":\"initWxpayface\",\"version\":\"1\",\"now\":1540901425,\"ip\":\"10.123.10.11\",\"port\":\"8356\",\"user\":\"username\",\"passwd\":\"password\"}";
char *resp;
unsigned int len;
int ret = wxpayCallFaceService(req, strlen(req), &resp, &len);
if (ret == 0) {
printf("resp: %s len: %u\n", resp, len);
wxpayReleaseResponse(&resp);
}
/*
* resp: {"return_code":"SUCCESS","return_msg":"SUCCESS"} len: 48
*/
# 获取数据 getWxpayfaceRawdata
**支持版本:**1.12及以上
# 请求参数
仅公共参数
###返回参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
rawdata | S | string(2048) | 初始化数据。用于接口调用, 参见: get_wxpayface_authinfo: rawdata |
# 调用示例
// getWxpayfaceRawdata
const char* req = "{\"cmd\":\"getWxpayfaceRawdata\",\"version\":\"1\",\"now\":1540901425}";
char *resp;
unsigned int len;
int ret = wxpayCallFaceService(req, strlen(req), &resp, &len);
if (ret == 0) {
printf("resp: %s len: %u\n", resp, len);
wxpayReleaseResponse(&resp);
}
/*
* resp: {"rawdata":"0CSmor/Pp4vC7WE5CsJxet4Sg+D24C8eJxAMjjkBEl58hDLmofPunD+OX8v7JQyxUFmimUb9ai9cuPmGXC87MfStCOGaK/Fjb77DzF7nJgpwQhl8bdprPWKx6h04ZzPRQBlE6DAgcylr3CFSisWpMSUUmA9MtHAKD8fhzFeTEAgj0NK49DjIFZXczfZRgj8qUTRrajdJtO6gZMqlRgSwM83MP8xPG2lCO33nA5HsSMy/vh5ET5O3ubj+wpfMuD1fUj3HBy3YXxxGqFKjJV6dRwuMmAXnaTk0P0u3LSOWO7wiA6En/JgwVZvf9zkcCzq9OyJFrc+8QY6bQeuPWCe4E73n397jaD5fu8GqyokUlO/XytuYP2qcNWAol9vBpf3u2xWt/MobKjJcsDwsCxGFxtjWATRyU0fB9atI8GKGt9zxwWbMd0m6gleWWVGVOHxodNKJbWFP4rRKvPjG0nntZzX4SJ0q/7zevKzYQhU+F+q+ePvvgjKAcxnI5Jhaz/khkffQLw4YAaR7GuLZhHYeFPYEvzOXVk89+dJ/M7s1jZK4dtFa75U1Et9vn2bYtfourPpL3PA9oPPVVu2gPuq/S+WmBG6hCp0lq+/3P4png82cgLq6MNPhSwAq5YRqxlrHbfE3qk0qr/vXXSMbIOhfLWnKFdOyRv+3ohdQOC/8sdHbbSDcyQSprYZ+JREhz0W3qPKlHxlsbvSrpGNj9D4VxL4UXTnloq5KdwZoGSeBgvpNS5NPhXuU6u0cVMufUriKsxptftFu68cDzVv3hdu+1bYy/P9vffwSl01U2uJiTGErHqVMuILTNL==","return_code":"SUCCESS","return_msg":"SUCCESS"} len: 885
*/
# 人脸识别 getWxpayfaceCode
**作用:**启动人脸APP主界面入口,开启人脸识别,获取支付凭证或用户信息。 **支持版本:**1.12及以上
# 请求参数
除公共参数外,
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 公众号 |
mch_id | 是 | string | 商户号 |
sub_appid | 否 | string(32) | 子商户公众账号ID(服务商模式) |
sub_mch_id | 否 | string(32) | 子商户号(服务商模式) |
store_id | 是 | string | 门店编号 |
telephone | 否 | string | 用户手机号。用于传递会员手机,此手机将作为默认值, 填写到手机输入栏。 |
out_trade_no | 否 | string | 商户订单号。FACEPAY 时必填 |
total_fee | 否 | string | 订单金额(数字), 单位分. FACEPAY 时必填 |
face_authtype | 是 | string | 可选值:FACEPAY : 人脸凭证,常用于刷脸支付 |
authinfo | 是 | string | 调用凭证。获取方式参见: get_wxpayface_authinfo |
use_huge_screen | 否 | int | 是否使用针对大屏幕优化的UI界面,可取值: 0:使用普通UI(默认); 1:使用大屏幕优化版UI; |
# face_authtype
取值介绍
FACEPAY:
用于获取人脸凭证(face_code),通常需要用户输入手机号以及人脸,目前主要用于刷脸支付。
# 返回参数
- 当
face_authtype
为FACEPAY
时, 接口返回:
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
face_code | S | string | 人脸凭证, 用于刷脸支付。 |
openid | S | string | openid |
sub_openid | 否 | string | 子商户号下的openid(服务商模式) |
telephone_used | 否 | int | 获取的face_code ,是否使用了请求参数中的telephone 。可取值: 0:表示没有使用 telephone ;1: 表示使用了 telephone ; |
# 接口错误码
错误码的公共部分, 参见公共错误码。以下为该接口独有错误码:
错误码 | 描述 | 解决方案 |
---|---|---|
USER_CANCEL | 用户退出了人脸识别 | 返回到结账流程 |
SCAN_PAYMENT | 用户选择扫码支付 | 进入扫码支付流程 |
###调用示例
// getWxpayfaceCode
const char* req = "{\"cmd\":\"getWxpayfaceCode\",\"version\":\"1\",\"now\":1540907996,\"appid\":\"wx97debaxyzabcca2\",\"mch_id\":\"1281087510\",\"store_id\":\"IMG001\",\"face_authtype\":\"FACEPAY\",\"authinfo\":\"0CSmor/Pp4vC7WE5CsJxet4Sg+D24C8eJxAMjjkBEl58hDLmofPunD+OX8v7JQyxUFmimUb9ai9cuPmGXC87MfStCOGaK/Fjb77DzF7nJgpwQhl8bdprPWKx6h04ZzPRQBlE6DAgcylr3CFSisWpMSUUmA9MtHAKD8fhzFeTEAgj0NK49DjIFZXczfZRgj8qUTRrajdJtO6gZMqlRgSwM83MP8xPG2lCO33nA5HsSMy/vh5ET5O3ubj+wpfMuD1fUj3HBy3YXxxGqFKjJV6dRwuMmAXnaTk0P0u3LSOWO7wiA6En/JgwVZvf9zkcCzq9OyJFrc+8QY6bQeuPWCe4E73n397jaD5fu8GqyokUlO/XytuYP2qcNWAol9vBpf3u2xWt/MobKjJcsDwsCxGFxtjWATRyU0fB9atI8GKGt9zxwWbMd0m6gleWWVGVOHxodNKJbWFP4rRKvPjG0nntZzX4SJ0q/7zevKzYQhU+F+q+ePvvgjKAcxnI5Jhaz/khkffQLw4YAaR7GuLZhHYeFPYEvzOXVk89+dJ/M7s1jZK4dtFa75U1Et9vn2bYtfourPpL3PA9oPPVVu2gPuq/S+WmBG6hCp0lq+/3P4png82cgLq6MNPhSwAq5YRqxlrHbfE3qk0qr/vXXSMbIOhfLWnKFdOyRv+3ohdQOC/8sdHbbSDcyQSprYZ+JREhz0W3qPKlHxlsbvSrpGNj9D4VxL4UXTnloq5KdwZoGSeBgvpNS5NPhXuU6u0cVMufUriKsxptftFu68cDzVv3hdu+1bYy/P9vffwSl01U2uJiTGErHqVMuILTNL==\",\"out_trade_no\":\"10302159564hzhw2\",\"total_fee\":\"100\",\"telephone\":\"18672378888\"}";
char *resp;
unsigned int len;
int ret = wxpayCallFaceService(req, strlen(req), &resp, &len);
if (ret == 0) {
printf("resp: %s len: %u\n", resp, len);
wxpayReleaseResponse(&resp);
}
/*
* resp: {"face_code":"xxxxxxxx-xxxx-xxxx-bxxx-xxxxxxxxx","openid":"xxx-xxxxxxxxxxxxxxxxxxxxxxxx","return_code":"SUCCESS","return_msg":"SUCCESS","telephone_used":1} len: 155
*/
# 支付结果 updateWxpayfacePayResult
作用: 更新支付结果。 **支持版本:**1.12及以上
# 请求参数
除公共参数外,
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 公众号 |
mch_id | 是 | string | 商户号 |
store_id | 是 | string | 门店编号 |
authinfo | 是 | string | 调用凭证。获取方式参见: get_wxpayface_authinfo |
payresult | 是 | string | 支付结果。可取值:SUCCESS : 支付成功ERROR : 支付失败 |
# 返回参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
# 调用示例
// updateWxpayfacePayResult
const char* req = "{\"cmd\":\"updateWxpayfacePayResult\",\"version\":\"1\",\"now\":1540908003,\"appid\":\"wx97debaxyzabcca2\",\"mch_id\":\"1281087510\",\"store_id\":\"IMG001\",\"payresult\":\"SUCCESS\",\"authinfo\":\"0CSmor/Pp4vC7WE5CsJxet4Sg+D24C8eJxAMjjkBEl58hDLmofPunD+OX8v7JQyxUFmimUb9ai9cuPmGXC87MfStCOGaK/Fjb77DzF7nJgpwQhl8bdprPWKx6h04ZzPRQBlE6DAgcylr3CFSisWpMSUUmA9MtHAKD8fhzFeTEAgj0NK49DjIFZXczfZRgj8qUTRrajdJtO6gZMqlRgSwM83MP8xPG2lCO33nA5HsSMy/vh5ET5O3ubj+wpfMuD1fUj3HBy3YXxxGqFKjJV6dRwuMmAXnaTk0P0u3LSOWO7wiA6En/JgwVZvf9zkcCzq9OyJFrc+8QY6bQeuPWCe4E73n397jaD5fu8GqyokUlO/XytuYP2qcNWAol9vBpf3u2xWt/MobKjJcsDwsCxGFxtjWATRyU0fB9atI8GKGt9zxwWbMd0m6gleWWVGVOHxodNKJbWFP4rRKvPjG0nntZzX4SJ0q/7zevKzYQhU+F+q+ePvvgjKAcxnI5Jhaz/khkffQLw4YAaR7GuLZhHYeFPYEvzOXVk89+dJ/M7s1jZK4dtFa75U1Et9vn2bYtfourPpL3PA9oPPVVu2gPuq/S+WmBG6hCp0lq+/3P4png82cgLq6MNPhSwAq5YRqxlrHbfE3qk0qr/vXXSMbIOhfLWnKFdOyRv+3ohdQOC/8sdHbbSDcyQSprYZ+JREhz0W3qPKlHxlsbvSrpGNj9D4VxL4UXTnloq5KdwZoGSeBgvpNS5NPhXuU6u0cVMufUriKsxptftFu68cDzVv3hdu+1bYy/P9vffwSl01U2uJiTGErHqVMuILTNL==\"}";
char *resp;
unsigned int len;
int ret = wxpayCallFaceService(req, strlen(req), &resp, &len);
if (ret == 0) {
printf("resp: %s len: %u\n", resp, len);
wxpayReleaseResponse(&resp);
}
/*
* resp: {"return_code":"SUCCESS","return_msg":"release success"} len: 56
*/
# 统计上报 reportInfo
接口作用: 实现点击上报,计数上报,耗时上报。 **支持版本:**1.12及以上
# 请求参数
除公共参数外,
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
item | 是 | string | 上报项 |
item_value | 是 | long | 上报项的值,必须为大于0的整数。 **点击上报:**item_value为点击次数,一般为1; **计数上报:**item_value为计数值; **耗时上报:**item_value为耗时值(单位毫秒) |
# 返回参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
# 调用示例
// reportInfo
const char* req = "{\"cmd\":\"reportInfo\",\"item\":\"face.mch.card.count\",\"item_value\":2,\"version\":\"1\",\"now\":1540908003}";
char *resp;
unsigned int len;
int ret = wxpayCallFaceService(req, strlen(req), &resp, &len);
if (ret == 0) {
printf("resp: %s len: %u\n", resp, len);
wxpayReleaseResponse(&resp);
}
/*
* resp: {"return_code":"SUCCESS","return_msg":"SUCCESS"} len: 48
*/
# 交易上报 reportOrder
接口作用: 设备产生的非刷脸支付交易,都必须调用此接口上报交易信息, 建议每笔非刷脸支付交易发生后,都调用该接口。
支持版本: 1.12及以上
# 请求参数
除公共参数外,
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
mch_id | 是 | string | 商户号。(若是服务商模式, 则填服务商商户号) |
sub_mch_id | 否 | string | 子商户号。(服务商模式填写, 其它不填) |
out_trade_no | 是 | string | 商户订单号。 |
# 返回参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
# 调用示例
// reportOrder
const char* req = "{\"cmd\":\"reportOrder\",\"mch_id\":\"1281087510\",\"out_trade_no\":\"1030222503UXn64r\",\"version\":\"1\",\"now\":1540909503}";
char *resp;
unsigned int len;
int ret = wxpayCallFaceService(req, strlen(req), &resp, &len);
if (ret == 0) {
printf("resp: %s len: %u\n", resp, len);
wxpayReleaseResponse(&resp);
}
/*
* resp: {"return_code":"SUCCESS","return_msg":"SUCCESS"} len: 48
*/
# 释放资源 releaseWxpayface
作用: 释放人脸服务。 **支持版本:**1.12及以上
# 请求参数
仅公共参数
# 返回参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
return_code | 是 | string | 错误码。公共定义见 公共错误码 |
return_msg | 是 | string(128) | 对错误码的描述 |
# 调用示例
// releaseWxpayface
const char* req = "{\"cmd\":\"releaseWxpayface\",\"version\":\"1\",\"now\":1540901425}";
char *resp;
unsigned int len;
int ret = wxpayCallFaceService(req, strlen(req), &resp, &len);
if (ret == 0) {
printf("resp: %s len: %u\n", resp, len);
wxpayReleaseResponse(&resp);
}
/*
* resp: {"return_code":"SUCCESS","return_msg":"SUCCESS"} len: 48
*/