支付宝红包快捷领取链接生成 | 微信直接跳转支付宝领红包

986 阅读2分钟

领红包步骤太多

今天支付宝红包又变大了,但是从微信跳转到支付宝领取红包相当的繁琐。

经过一番研究(百度),发现了一些很有意思的链接,可以直接从微信跳转到支付宝领取红包。

虽然说领红包的人方便了,但是创建链接还是不方便,需要手动获取用户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 不要在掘金中打开,掘金中打开是跳到扫码

WechatIMG115.jpeg

WechatIMG114.jpeg

代码仓库