开发一个Windows下的ocx插件,对接腾讯的刷脸后台服务

1.背景介绍

使用VS2010开发一个OCX插件,实现在Windows平台的终端上刷脸支付。

2.Windows终端环境安装 

安装ImiSDK-Lite-Installer-1.7.2.exe,在C:\Program Files (x86)\Hjimi生成目录。-----华捷摄像头的SDK和驱动

微信网站下载wxfacepay-windows-1.14.zip,下载地址:https://pay.weixin.qq.com/wiki/doc/wxfacepay/develop/sdk-windows.html

 ------应用使用的本地SDK库

3.ocx的创建同之前一篇支付宝中间件开发

4.遇到的第一个坑

sdk WxpayFaceSDK.dll使用了64位的版本,导致LoadLibrary失败,使用GetLastError跟踪错误码193,使用x86版本的动态库就可以了。分析如果要使用64位版本,ocx需要以64位的方式编译。

5.第二个坑

WxpayFaceService.exe的启动问题,使用管理员启动启动服务.bat,会报如下错误。

 直接打开bat文件可以启动服务,但日志不知道在哪里输出。

6.遭遇第三个坑

在做getWxpayfaceRawdata这步时,返回{"return_code":"SYSTEMERROR","return_msg":"Unable to get device SN"}

原因是没有生成序列号路径C:\serial.txt,规则如下:

https://pay.weixin.qq.com/wiki/doc/wxfacepay/open/open-design-requirement.html#%E5%BA%8F%E5%88%97%E5%8F%B7%E7%94%9F%E6%88%90%E8%A7%84%E5%88%99

7.应用流程第三步get_wxpayface_authinfo(rawdata)

 应用中发现的一个问题:

解决这个问题的方案是调整测试终端的时间:必须和北京时间的误差小于5分钟。

8.实用小技巧

ocx方法定义的不对时,可以在项目--类向导里删除

 9.带传入参数的函数定义

出来参数是LPCTSTR,如下:

LONG CWxface2payCtrl::getFaceCode(LPCTSTR face_authtype, LPCTSTR authinfo, LPCTSTR telephone) 

10.遭遇第四个坑 

人脸识别 getWxpayfaceCode,已经只剩下

FACEPAY

模式,FACEID模式已取消 

11.一个注意点

微信的等待支付UI需要等到更新支付结果updateWxpayfacePayResult之后才会关闭。使用OCX的应用可以不用自己做遮罩层。

微信的UI和函数返回不是阻塞的,当点击UI上确认支付的按钮后,应用就能通过OCX的属性获取face_code。

最新修订:调用updatePayResult,SDK服务会轮询支付结果,成功关闭窗体。支付失败,或者没成功就会继续轮询。应用在得到交易结果后,需要等updatePayResult的结果,再做应用自己的提示。

12.又一个注意点

在刷脸支付时要注意订单号与SDK函数getWxpayfaceCode的入参订单号保持一致,如果不一致,会报face_code错误。另外face_code只能使用一次。

 

13.关于代理模式

和支付宝的人脸支付SDK一样,当支付终端无法连上公网环境时,需要采用代理服务转发来实现功能正常运行。

官方说明:https://pay.weixin.qq.com/wiki/doc/wxfacepay/faq/network.html

14.OCX及后端接口测试

a.打开腾讯本地服务

 这个已经更新,用这个打开:

b.调用ocx的Initialize方法

c.调用ocx的getFaceRawdata方法

d.获取ocx的rawdata属性

e.调用后台接口

 

f.调用ocx方法 getFacePay

g.获取ocx的属性facecode和openid

h.调用后台接口facepay,注意faceCodeType

0走旧的刷脸支付接口,1走扫码付接口

i.交易过程需要调用后台接口,查询,撤销,退款

j.调用ocx方法 updatePayResult,在用容器测试时侯为了提前关闭UI,好用测试网页测试。在ocx方法 getFacePay里加入DEBUG代码执行updatePayResult内容。

k.调用ocx方法releasePayFace

15.最新变更

a.安装最新终端包

安装后多出一个应用

终端配置好SN序列号后,在有网得情况下使用这个工具完成检测(通过SDK传输SN到后台)

特别注意这个过程,终端必须只连一个外网,不能内外网同时连

过程中安装人员需要刷脸成功一次,最后出现如下画面就可以使用SDK刷脸支付了

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值