支付宝刷脸支付蜻蜓f4小程序前后端实现源码

支付宝刷脸支付蜻蜓f4小程序前后端实现源码

支付宝刷脸支付蜻蜓f4小程序前后端实现源码

最近接到一个项目,要把支付宝推出的蜻蜓f4内嵌到无人售货机中

用户支付的时候直接扫脸支付,真正实现刷脸无人售货,那么怎么实现呢

蜻蜓f4默认提供二种收银模式,收银台及独立收钱

收银台需要与收银机配合使用,通过蓝牙连接收银机,将支付结果反馈给收银机

独立收钱需要绑定一个个人的支付宝账户,就可以收钱了,也很方便

那么如何对接到无人售货机上?

蜻蜓f4提供了自定义小程序的功能,也就是说可以在蜻蜓f4上运行支付宝的iot小程序,然后调用人脸识别。

通讯的过程是小程序端调用人脸识别获取支付码,然后连同订单号、支付金额发送给服务器后台的面对面支付,服务器端程序调用sdk去访问支付宝服务器发起扣款,扣款成功后再通知小程序端支付的结果

那么第一步,小程序端代码

一、iot支付宝小程序

在支付宝小程序开发ide中新建项目,选择iot小程序,模板选择demo

支付宝刷脸支付蜻蜓f4小程序前后端实现源码

将打开收银台这段代码增加一个请求后端面对面支付的接口,如下

        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,整个流程就执行完了

{{collectdata}}

网友评论0