领红包步骤太多
今天支付宝红包又变大了,但是从微信跳转到支付宝领取红包相当的繁琐。
经过一番研究(百度),发现了一些很有意思的链接,可以直接从微信跳转到支付宝领取红包。
虽然说领红包的人方便了,但是创建链接还是不方便,需要手动获取用户id然后微信扫红包码获取token。
这怎么能忍,说干就干花了一下午时间自动获取支付宝用户id和token。
使用云开发对接了支付宝授权接口获取用户id,然后js识别二维码获取token。
这里记录一下。代码在文末。为了节省时间后端使用uniCloud,前端使用uniapp。
简化步骤
- 调用支付宝网页授权接口获取用户id
- html5识别二维码获取token
1.调用支付宝网页授权接口获取用户id
要使用支付宝接口首先要注册支付宝开放平台,
然后注册一个网页应用并开通产品【获取会员信息】。
设置接口加签方式和授权回调地址(回调地址必须要设置不然授权的时候会报页面不存在)
这里夸一下支付宝对接接口还挺方便,从开通应用到对接sdk不到半个小时就好了。
//安装支付宝nodejs sdk
npm install alipay-sdk --save
const fs = require('fs');
const path = require('path');
const AlipaySdk = require('alipay');
// 普通公钥模式
let alipaySdk = new AlipaySdk({});
alipaySdk=new alipaySdk.default({
appId: '2021003154699116',
privateKey: fs.readFileSync(path.resolve(path.join(__dirname,'./private-key.pem')), 'ascii'),
})
exports.main = async (event, context) => {
try{
const result = await alipaySdk.exec('alipay.system.oauth.token', {
grantType: 'authorization_code',
code: event.code || '',
});
console.log(result)
return {
code:200,
message:'操作成功',
data:result.userId
}
}catch(err){
console.error(err)
return {
code:500,
message:'获取授权用户ID失败',
}
}
};
2.html5识别二维码获取token
npm install @nuintun/qrcode --save
import { Encoder,Decoder } from '@nuintun/qrcode';
const token=await new Promise((resolve,reject)=>{
console.log(this.source_qrcode)
if(this.source_qrcode.length<=0 || !this.source_qrcode[0].path){
message="没有获取到token"
return reject('没有获取到token');
}
const qrcode = new Decoder();
qrcode
.scan(this.source_qrcode[0].path)
.then(result => {
let _token=result.data.substring(result.data.indexOf('19'));
console.log('token',_token,result.data)
resolve(_token);
})
.catch(error => {
reject(error)
});
});
效果
演示效果:在微信或者浏览器中打开sourl.cn/tPvVj8 不要在掘金中打开,掘金中打开是跳到扫码