关闭
公众号二维码

# 前端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字符编码

SDK下载

# 四、各场景交互流程

# 4.1 人脸凭证的交互流程

# 4.1.1 流程功能介绍

该流程通过识别用户人脸、手机号,获取人脸凭证(face_code),该人脸凭证具有较高的安全等级,可用于支付。

# 4.1.2 名词解释

**人脸授权:**通过人脸识别,返回微信用户信息(openid, face_code)。

face_code:人脸凭证。常用于刷脸支付,作为订单的支付凭证。

# 4.1.3 人脸凭证时序图

sequenceDiagram participant A as 商户APP participant B as 微信人脸sdk participant D as 商户server participant C as 微信支付后台API A ->> B: 1. 程序启动时初始化 initWxpayface B -->> A: 返回初始化结果 A --> A: 商户业务逻辑(如点单,识别商品等) A ->> B: 2. 获取数据 getWxpayfaceRawdata B -->> A: 返回rawdata A ->> D: 3. 获取人脸SDK调用凭证 D ->> C: get_wxpayface_authinfo(rawdata) C -->> D: 返回authinfo D -->> A: 返回authinfo A ->> B: 4. 进行人脸识别 getWxpayfaceCode(authinfo) activate B B ->> B: 调用摄像头, 展示UI B ->> B: 完成人脸检测/识别 B -->> A: 返回人脸识别结果(face_code, openid) Note over A, C: 进行刷脸支付,参见 2.2 刷脸支付时序图 A ->> B: 5. 更新支付结果updateWxpayfacePayResult B ->> B: 关闭等待UI B -->> A: 返回 deactivate B A ->> A: 程序退出(...) A ->> B: 6. 释放资源 releaseWxpayface

注:

  1. 初始化 initWxpayface, 只需要在程序启动时调用;
  2. 释放资源 releaseWxpayface,只需要在程序退出时调用;

# 五、刷脸支付的交互流程

# 5.1 刷脸支付功能介绍

通过人脸凭证(face_code),完成对订单的支付。

# 5.2 刷脸支付时序图

sequenceDiagram participant A as 商户APP participant D as 商户server participant C as 微信支付后台API A ->> A: 获取face_code. 参见上一节『获取人脸凭证』 A ->> D: 1. 发起订单刷脸支付 D ->> C: 发起订单支付facepay(face_code, orderinfo) C -->> D: 返回支付结果 alt 支付成功/失败 D -->> A: 返回支付结果 else 支付结果未明(比如:支付中/网络超时) note over D, C: 查询支付结果 loop 直到:返回确定的订单状态(成功/失败/订单不存在)/超过轮询时间 D ->> C: 2. 查询订单状态queryorder C -->> D: 返回订单状态 end D -->> A: 返回支付结果 opt 轮询结束仍然没有支付成功 note over A, C: 撤销交易,以避免用户扣款,而没有发货的情况(撤销可后台异步进行) loop 撤销交易直到成功 D ->> C: 3. 撤销交易reverseorder C -->> D: 返回撤销结果 end end end

# 六、微信支付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 接口耗时定义

常见请求耗时分解见下图:

sequenceDiagram participant A as 商户server participant B as 微信支付API A ->> B: 请求网络耗时(N1) B ->> B: 接口最大耗时(W) B -->> A: 返回网络耗时(N2)

从商户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

使用方式:

  1. SDK需要集成到商户应用,提供的SDK为C动态链接库so
  2. 业务⽅通过编译链接或者dlopen(Linux)的⽅式加载dll, 并执行相关函数
  3. 测试/运行时,需要先启动WxpayFaceService服务,然后商户应用使用SDK中的接口调起刷脸支付

注意点:

  1. 关于函数中⼊参、出参的数据格式, 均采⽤JSON字符串,编码为UTF-8。
  2. 调用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构成

reqresp均为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),通常需要用户输入手机号以及人脸,目前主要用于刷脸支付

# 返回参数

  1. face_authtypeFACEPAY时, 接口返回:
参数 必填 类型 说明
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
 */
上次更新: 9/3/2020, 12:25:46 PM