android调用支付宝小程序,支付宝小程序蓝牙 快速接入

支付宝小程序蓝牙 快速接入

基本流程

对于有蓝牙接入需求的开发者,需要通过以下步骤完成蓝牙接入:

初始化蓝牙接口(my.openBluetoothAdapter)

初始化事件监听

蓝牙适配器状态监听(my.onBluetoothAdapterStateChange)

蓝牙发现事件监听(my.onBluetoothDeviceFound)

蓝牙连接状态事件监听(my.onBLEConnectionStateChanged)

搜索设备(my.startBluetoothDevicesDiscovery)

查找设备并连接(my.connectBLEDevice)

停止搜索设备(my.stopBluetoothDevicesDiscovery)

遍历蓝牙外设服务和特征

获取服务(my.getBLEDeviceServices)

获取特征(my.getBLEDeviceCharacteristics)

监听特征值变化事件通知(my.onBLECharacteristicValueChange)

设置读特征通知模式(my.notifyBLECharacteristicValueChange)

读写数据

向设备的特征值写数据(my.writeBLECharacteristicValue)

向设备的特征值读数据(my.readBLECharacteristicValue)

断开连接(my.disconnectBLEDevice)

关闭蓝牙适配器(my.closeBluetoothAdapter)

业务流程图

1507606118764622.png

调用示例

//初始化

my.openBluetoothAdapter({

success: (res) => {

console.log(res);

}

});

//注册发现事件

my.onBluetoothDeviceFound({

success: (res) => {

let device = res.devices[0];

//连接发现的设备

my.connectBLEDevice({

deviceId: deviceId,

success: (res) => {

console.log(res)

},

fail:(res) => {

},

complete: (res)=>{

}

});

//停止搜索

my.stopBluetoothDevicesDiscovery({

success: (res) => {

console.log(res)

},

fail:(res) => {

},

complete: (res)=>{

}

});

}

});

//注册连接事件

my.onBLEConnectionStateChanged({

success: (res) => {

console.log(res);

if (res.connected) {

//开始读写notify等操作

my.notifyBLECharacteristicValueChange({

deviceId: deviceId,

serviceId: serviceId,

characteristicId: characteristicId,

success: (res) => {

console.log(res)

},

fail:(res) => {

},

complete: (res)=>{

}

});

}

}

});

//注册接收read或notify的数据

my.onBLECharacteristicValueChange({

success: (res) => {

console.log(res);

}

});

//开始搜索

my.startBluetoothDevicesDiscovery({

services: ['fff0'],

success: (res) => {

console.log(res)

},

fail:(res) => {

},

complete: (res)=>{

}

});

//断开连接

my.disconnectBLEDevice({

deviceId: deviceId,

success: (res) => {

console.log(res)

},

fail:(res) => {

},

complete: (res)=>{

}

});

//注销事件

my.offBluetoothDeviceFound();

my.offBLEConnectionStateChanged();

my.offBLECharacteristicValueChange();

//退出蓝牙模块

my.closeBluetoothAdapter({

success: (res) => {

},

fail:(res) => {

},

complete: (res)=>{

}

});

常见问题

支持版本 android4.3以上支持ble

ios6以上都支持

deviceId,android取到的是蓝牙的mac地址(11:22:33:44:55:66),ios取到的是UUID(00000000-0000-0000-0000-000000000000这种格式)

调startBluetoothDevicesDiscovery接口搜索不到设备,请确保设备发出了广播。如果接口中有传入services,请确保设备的广播内容中包含了service的UUID

连接设备失败,请确认传入的deviceId是否正确,以及设备发出的信号是否足够强,在信号弱的时候可能会出现连接不上的情况

写数据失败,查看传入的deviceId、serviceId、characteristicId格式是否正确,deviceId是否已连接上(onBLEConnectionStateChanged这个事件中可以监听连接状态变化,getConnectedBluetoothDevices这个方法可以拿到),确保是在连接状态下调写入方法,查看characteristicId是否属于这个service,以及这个特征值是否支持写

读数据失败,同上,查看这个特征值是否支持读

收不到数据通知,请确认调了notifyBLECharacteristicValueChange这个方法以及传入的参数是否正确,传入的characteristicId特征值是否支持notify或indicate,以及确认硬件是否发出了通知。注意调用notifyBLECharacteristicValueChange方法的以及注册onBluetoothDeviceFound事件的顺序,最好是在连接之后就调用notifyBLECharacteristicValueChange方法。

事件回调多次调用,是由于多次匿名函数注册监听同一事件,因此建议每次调用on方法监听事件之前,先调用off方法,关闭之前的事件监听。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序无法直接调用支付宝接口,需要通过支付宝开放平台提供的接口进行调用。以下是简单的示例代码: 1. 在支付宝开放平台注册并创建应用,获取到应用的 App ID 和私钥。 2. 在微信小程序中发起请求,将用户的订单信息传递给后端。 3. 后端使用私钥对订单信息进行签名,并将签名后的数据传递给支付宝接口。 4. 支付宝接口返回支付页面的 URL,后端将其返回给小程序。 5. 小程序使用 web-view 组件加载支付页面。 以下是后端示例代码(使用 Node.js): ```javascript const crypto = require('crypto'); const request = require('request'); const appId = 'YOUR_APP_ID'; const privateKey = 'YOUR_PRIVATE_KEY'; const signData = (data) => { const sign = crypto.createSign('RSA-SHA256'); sign.write(data); sign.end(); return sign.sign(privateKey, 'base64'); }; const createOrder = (orderInfo, callback) => { const sign = signData(orderInfo); const formData = { app_id: appId, biz_content: orderInfo, sign_type: 'RSA2', sign, }; request.post({ url: 'https://openapi.alipay.com/gateway.do', form: formData, }, (err, response, body) => { if (err) { callback(err); return; } const result = JSON.parse(body); if (result.code !== '10000') { callback(result.msg); return; } callback(null, result.alipay_trade_wap_pay_response.out_trade_no); }); }; module.exports = createOrder; ``` 以上代码中的 `createOrder` 函数用于创建订单,接受一个包含订单信息的 JSON 对象作为参数,并通过支付宝接口返回订单号。其中 `signData` 函数用于对订单信息进行签名,`request` 库用于简化 HTTP 请求的操作。 在小程序中,需要使用 `web-view` 组件将支付页面加载进来,示例代码如下: ```xml <web-view src="{{payUrl}}" bindmessage="onMessage"></web-view> ``` 其中 `payUrl` 是后端返回的支付页面 URL,`onMessage` 是一个事件处理函数,用于监听支付结果的回调。在支付页面中,用户完成支付后会自动跳转回小程序,同时会发送消息给小程序,消息的内容包含支付结果信息。以下是 `onMessage` 函数的示例代码: ```javascript onMessage(e) { const data = JSON.parse(e.detail.data); if (data.status === 'success') { // 支付成功 } else { // 支付失败 } } ``` 以上是简单的示例代码,实际应用中还需要考虑更多的细节和安全性问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值