抖音快手小程序一键登录, 支付,获取手机号

本文介绍了公司开发的一款支持微信小程序快速移植至抖音和快手的小程序,重点讲述了如何集成支付、一键登录(包括微信、抖音、快手)以及获取用户手机号的功能,同时提及了各平台的权限申请和注意事项,如抖音的试运营流程和自定义导航栏设置。
摘要由CSDN通过智能技术生成

公司开发了一款智能生成logo小程序,微信小程序版的很快就开发出来了,想要试试抖音和快手的。大体功能都是不需要改变,但是该小程序涉及支付和一键登录,获取手机号等,很容易忘记所以抽空归类写成一个文档。

一键登录

快手

在后台申请,一定要先申请才能用,链接: 快手开发者后台
这个申请是需要自己p一张图片上去,就是那张场景示例图,我是找公司ui帮忙p上去的。。。
官方文档链接: 获取手机号
使用的话抖音快手微信都是一样的,注意要先登录,将encryptedUserInfo和iv传给后端去解密

<button open-type="getPhoneNumber"  @getphonenumber="getPhoneNumber"></button>
const getPhoneNumber = async (e: any) => {
  // #ifdef MP
  uni.login({
    // provider: 'weixin',
    success: async (loginRes) => {
      console.log('loginRes ==> ', loginRes)
      let tempData: any = {}
      // #ifdef MP-WEIXIN
      const { data: weixin } = await authorizeWeappUserInfo({
        code: loginRes.code,
        authorized: false,
        phoneCode: e.detail.code
      })
      tempData = weixin
      // #endif
      // #ifdef MP-KUAISHOU
      const { data: ks } = await ksLogin({
        code: loginRes.code,
        encryptedUserInfo: e.detail.encryptedData,
        iv: e.detail.iv
      })
      tempData = ks
      // #endif

      // #ifdef MP-TOUTIAO
      const { data: dy } = await dyLogin({
        code: loginRes.code,
        encryptedUserInfo: e.detail.encryptedData,
        iv: e.detail.iv
      })
      tempData = dy
      // #endif

      console.log('获取返回值', tempData)
    }
  })
 
}

快手对webview的支持。。。不太友好,不能互相传递数据

抖音

抖音的话需要先通过试运营,试运营是必须要先发布成功一版之后才正式进入试运营,获取手机号也是通过试运营之后默认就有的权限
官方文档: link
在项目中使用看上面代码
试运营默认60分,达到80分就能获取用户手机号,详情看这里:link
比较头疼的是抖音的自定义导航栏,也要通过试运营。。。通过试运营也不能立马使用自定义导航栏,要到90分

快手抖音在按钮文案上也要注意一下,必须要写清楚,比如抖音一键登录快手一键登录等等,隐私协议用户服务协议也要加,不然审核过不了

支付

支付可以用uni提供的uni.requestPayment方法,官方文档:link使用的话要什么传什么
但是也要先用uni.login登录获取到code传给后端,才能调用抖音快手的支付
支付相对来说没那么多限制,根据团队制定的支付逻辑走就行。后台也需要配置很多地方,回调地址,token令牌,服务器地址等等
快手: 小程序担保支付接入指南
抖音:小程序担保支付接入指南

const pay = (params: PayInfo) => {
  return new Promise<any>(async (resolve, reject) => {
    let data: any = {}
    // #ifdef MP-WEIXIN
    const { data: weixin } = await wechatPay(params.outTradeNo)
    data = weixin
    // #endif
    // #ifdef MP-KUAISHOU
    const { data: kuaishou } = await ksPayUnifiedOrder(params.outTradeNo)
    data = kuaishou
    // #endif
    // #ifdef MP-TOUTIAO
    const { data: toutiao } = await dyPayUnifiedOrder(params.outTradeNo)
    data = toutiao.pay_json
    // #endif

    const provider = await useProvider().getPaymentProvider()
    uni.requestPayment({
      // @ts-ignore
      appId: data.appId,
      // @ts-ignore
      provider: provider[0],
      // #ifdef MP-KUAISHOU
      orderInfo: data,
      // #endif
      // #ifdef MP-TOUTIAO
      orderInfo: data,
      service: 5,
      // #endif
      timeStamp: data.timeStamp,
      nonceStr: data.nonceStr,
      package: data.package,
      signType: data.signType,
      paySign: data.paySign,
      success: function (result) {
        resolve(result)
      },
      fail: function (error) {
        reject(error)
      }
    })
  })
}

h5分两种支付, 微信内嵌浏览器支付, 手机系统中的浏览器, 贴代码
JSAPI: >yarn add weixin-js-sdk, import wx from ‘weixin-js-sdk’

// PayInfo:{outTradeNo: string}
const h5Pay = async (params: PayInfo) => {
  const { data } = await h5PayUnifiedOrder(params.outTradeNo)
  var ua = navigator.userAgent.toLowerCase()
  // @ts-ignore
  var isWeixin = ua.match(/MicroMessenger/i) == 'micromessenger'
  console.log('isWeixin ==> ', isWeixin)
  if (isWeixin) {
    // 微信内部浏览器
    const { timeStamp, nonceStr, signType } = data
    wx.config({
      debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
      appId: '', // 必填,企业微信的corpID
      timestamp: timeStamp as any, // 必填,生成签名的时间戳 —>单位:秒==
      nonceStr, // 必填,生成签名的随机串—>长度一般不超过32,格式建议[0-9a-zA-z]==
      signature: signType, // 必填,签名==,见 微信公众号开发文档附录JS-SDK使用权限签名算法
      jsApiList: [] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
    })
    wx.ready(function () {
      //config权限验证成功会走
      //ready成功之后接可以调用微信的api
      console.log('success')
    })
    wx.error(function () {
      //config权限验证失败会走
      console.log('error')
    })
    wx.chooseWXPay({
      timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
      nonceStr: '', // 支付签名随机串,不长于 32 位
      package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
      signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
      paySign: '', // 支付签名
      success: function (res) {
        // 支付成功后的回调函数
      }
    })
  } else {
    // 微信外部浏览器 后端响应一个url, 前端直接跳转即可
    // console.log('微信外部H5支付')
    // let redirect_url =
    //   data.mweb_url + '&redirect_url=' + encodeURIComponent(successRedirectUrl)
    // window.location.href = redirect_url
  }
}
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Motion_zq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值