带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

支付宝推出线下硬件蜻蜓f4,商家可以直接申请,预付保证金,在每个月有流水的情况下,支付宝每个月会将保证金返还,等于免费试用,看来支付宝推广蜻蜓的力度有多大,迅速占领商家,相信不久的未来,微信也会出现类似的产品,因为腾讯一直在模仿,好了,今天我们来看看如何开发一个蜻蜓f4的刷脸支付小程序,首先申请成为支付宝开放平台的一名开发者,身份选择自主开发。

先要注册成为开发者

入驻地址:https://spcenter.alipay.com/operation/mini-portal/dashboard

一、下载安装支付宝小程序开发工具

下载地址https://docs.alipay.com/mini/ide/download

下载安装后我们打开开发工具,打开支付宝扫码进入,这个跟微信小程序和类似。

二、新建项目/iot小程序

然后我们新建一个iot小程序

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

模板选择iot demo

填写一个项目名称

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

ok,一个简单的iot小程序创建完成了,那么接下来怎么在蜻蜓f4上进行调试呢

三、在蜻蜓f4调试

我们来打开蜻蜓f4的调试模式

打开蜻蜓f4的设置页面,按住电源键5秒,选择设置

点击关于本机

连续点击8次系统版本,选择进入调试模式

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

ok,我们看到列表中出现了小程序容器的选项,连续点击8次小程序容器

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

点击打开小程序配置

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

点击下方,添加开发小程序

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

输入在kaif

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

填入我的小程序列表中新建小程序的appid编号

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

四、调试

左上角选择设备,我们看到了我们的蜻蜓f4已经连接上了

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

点击调试,我们就实现了远程调试蜻蜓f4了

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

iot小程序在蜻蜓f4的运行效果

带你接入支付宝蜻蜓f4刷脸支付iot小程序服务端

关于刷脸支付这一块如何集成服务端这一块,我们有必要了解一下整个的流程

蜻蜓f4刷脸成功后获取了用户的身份id,此时还没有扣款,只是返回了barcode付款码,然后拿着这个付款码去调用当面付的接口实现支付,最后返回支付结果给蜻蜓f4的小程序,完成整个过程。

官方的说法如下:

地址https://opendocs.alipay.com/mini/multi-platform/ltz60x

my.ix.startApp({ appName: 'cashier', ... })
使用说明:蜻蜓小程序调用收银台 API 后,蜻蜓将进入收银台页面,用户可以选择刷脸支付或者扫码支付,收银台会返回付款码。小程序从收银台回调方法接收到支付宝付款码后,需要将付款码传回小程序服务端或发送到收银机(点击 发送付款码 查看发送方法),由小程序服务端/收银机服务端调用支付宝当面付条码支付接口 alipay.trade.pay 发起支付。

注意:
扫码成功后收银台会返回付款码(barcode),并且默认自动退出,需要小程序自定义支付结果页。

刷脸成功后收银台会返回付款码(barcode), 此时收银台界面不会退出, 会保留在前台获取并展示刷脸支付结果, 可以通过 my.ix.onCashierEventReceive 获取收银台页面实际退出的时机。

通过收银台 API 获取的刷脸付款码(barcode),仅用于 当面付 接口 alipay.trade.pay 发起支付。调用 alipay.trade.pay 发起支付时,入参 scene=bar_code。如果传入其他值会导致收银台无法获取刷脸支付结果。

目前 IoT 小程序的刷脸支付不支持 当面付 的 资金授权。

刷脸支付结果页默认展示时长为5秒,有运营内容(如会员开卡等)时为10秒。

刷脸支付页面和刷脸支付结果页不支持自定义。

打开收银机的代码如下:这里拿到收款码后要去服务器调用当面付的接口完成支付

    //打开收银机
    my.ix.startApp({
      appName: 'cashier',
      bizNo: '20191201xxx',
      totalAmount: '0.01',
      sellerId: '20881201xxxxxxx',
      storeId: '20110201xxxx',
      orderDetail: '[{name:\'名称\',content:\'详情\',fontColor:\'gray\'}]',
      success: (res) => {
        console.log(res);
        this.sendCode(res);
      }
    });

当面付接口如下

<?php
$aop = new AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = 'your app_id';
$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';
$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='GBK';
$aop->format='json';
$request = new AlipayTradePayRequest ();
$request->setBizContent("{" .
"\"out_trade_no\":\"20150320010101001\"," .
"\"scene\":\"bar_code\"," .
"\"auth_code\":\"28763443825664394\"," .
"\"product_code\":\"FACE_TO_FACE_PAYMENT\"," .
"\"subject\":\"Iphone6 16G\"," .
"\"buyer_id\":\"2088202954065786\"," .
"\"seller_id\":\"2088102146225135\"," .
"\"total_amount\":88.88," .
"\"trans_currency\":\"USD\"," .
"\"settle_currency\":\"USD\"," .
"\"discountable_amount\":8.88," .
"\"body\":\"Iphone6 16G\"," .
"      \"goods_detail\":[{" .
"        \"goods_id\":\"apple-01\"," .
"\"goods_name\":\"ipad\"," .
"\"quantity\":1," .
"\"price\":2000," .
"\"goods_category\":\"34543238\"," .
"\"categories_tree\":\"124868003|126232002|126252004\"," .
"\"body\":\"特价手机\"," .
"\"show_url\":\"http://www.alipay.com/xxx.jpg\"" .
"        }]," .
"\"operator_id\":\"yx_001\"," .
"\"store_id\":\"NJ_001\"," .
"\"terminal_id\":\"NJ_T_001\"," .
"\"extend_params\":{" .
"\"sys_service_provider_id\":\"2088511833207846\"," .
"\"industry_reflux_info\":\"{\\\\\\\"scene_code\\\\\\\":\\\\\\\"metro_tradeorder\\\\\\\",\\\\\\\"channel\\\\\\\":\\\\\\\"xxxx\\\\\\\",\\\\\\\"scene_data\\\\\\\":{\\\\\\\"asset_name\\\\\\\":\\\\\\\"ALIPAY\\\\\\\"}}\"," .
"\"card_type\":\"S0JP0000\"" .
"    }," .
"\"timeout_express\":\"90m\"," .
"\"auth_confirm_mode\":\"COMPLETE:转交易支付完成结束预授权;NOT_COMPLETE:转交易支付完成不结束预授权\"," .
"\"terminal_params\":\"{\\\"key\\\":\\\"value\\\"}\"," .
"\"promo_params\":{" .
"\"actual_order_time\":\"2018-09-25 22:47:33\"" .
"    }," .
"\"advance_payment_type\":\"ENJOY_PAY_V2\"," .
"\"is_async_pay\":ASYNC_PAY" .
"  }");
$result = $aop->execute ( $request); 

$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
echo "成功";
} else {
echo "失败";
}
?>

地址https://docs.open.alipay.com/api_1/alipay.trade.pay

好了,调用成功后,我们在调用小程序的支付结果显示接口

my.ix.startApp({
    appName: 'scanPayResult',
    bizNo: '2019042518000000',
    totalAmount: '0.01',
    bizAmount: '0.02',
    discount: '0.01',
    success: (r) => {
      my.showToast({ content: JSON.stringify(r) });
    }
});

{{collectdata}}

网友评论0