支付宝刷脸支付蜻蜓f4小程序前后端实现源码
最近接到一个项目,要把支付宝推出的蜻蜓f4内嵌到无人售货机中
用户支付的时候直接扫脸支付,真正实现刷脸无人售货,那么怎么实现呢
蜻蜓f4默认提供二种收银模式,收银台及独立收钱
收银台需要与收银机配合使用,通过蓝牙连接收银机,将支付结果反馈给收银机
独立收钱需要绑定一个个人的支付宝账户,就可以收钱了,也很方便
那么如何对接到无人售货机上?
蜻蜓f4提供了自定义小程序的功能,也就是说可以在蜻蜓f4上运行支付宝的iot小程序,然后调用人脸识别。
通讯的过程是小程序端调用人脸识别获取支付码,然后连同订单号、支付金额发送给服务器后台的面对面支付,服务器端程序调用sdk去访问支付宝服务器发起扣款,扣款成功后再通知小程序端支付的结果
那么第一步,小程序端代码
一、iot支付宝小程序
在支付宝小程序开发ide中新建项目,选择iot小程序,模板选择demo将打开收银台这段代码增加一个请求后端面对面支付的接口,如下
callCashier() { this.setData({ showDetailBoard: false }) //打开收银机 my.ix.startApp({ appName: 'cashier', bizNo: '201912011212345', //我们自己定义的订单号 totalAmount: '0.01', //订单金额 orderDetail: '[{name:\'名称\',content:\'详情\',fontColor:\'gray\'}]', //订单详情 success: (res) => { console.log(res); my.request({ url: 'https://example.com/barpay.php', //后端的面对面支付接口,注意必须是https协议,而且域名加入了白名单,否则无法发起请求 method: 'POST', data: { out_trade_no: '201912011212345', //订单号,与上面的一致 subject: '名称', //订单名称 total_amount: '0.01', //订单金额,与上面的一致 auth_code: res.barCode, //付款码 }, // 期望返回的数据格式,默认json,支持json,text,base64 dataType: 'json', // 调用成功的回调函数 success: function (res1) { my.alert({ content: 'success' }); }, // 调用失败的回调函数 fail: function (res1) { my.alert({ content: 'fail' }); }, // 调用结束的回调函数(调用成功、失败都会执行) complete: function (res1) { my.hideLoading(); } }); } }); },
好了,那后端的接口怎么写呢
我们以bfwsoa框架为例
<?php $pay = new \Plugin\Pay\Alifacepay\Pay(["appid" => "支付宝appid", "alipayrsapublickey" =>"支付宝公钥", "rsaprivatekey" => "支付宝私钥"]); $ret = $pay->PosGo($_POST['out_trade_no'],$_POST['total_amount'], $_POST['subject'], "订单内容", $_POST['auth_code']); if($ret['err']==false){ //支付成功的时候调用 } echo json_encode($ret) ?>ok,整个流程就执行完了
网友评论0