评论

微信小程序内嵌h5,h5调用小程序支付功能解决方案

微信小程序内嵌h5,h5调用小程序支付功能解决方案

今天我们来实现一个小功能,就是,微信小程序内嵌了一个h5,然后h5调用小程序的支付功能。

在开始之前先要了解几个小知识点:

1、小程序内嵌的h5的域名,需要在小程序管理后台配置业务域名,这个是必须的!很重要!!!

2、小程序内嵌的h5,如果需要调用小程序的一些功能,h5里面需要加载JSSDK 1.3.2

3、jssdk可以调用哪些sdk:


OK,了解以上知识点后,我们可以开始我们的表演:

表演之前,我默认你已经在小程序管理后台配置了业务域名,也在h5项目里面添加了jssdk。

【h5端】

1、在h5页面里面需要支付的地方或者方法里面,请求后端接口,拿到支付相关参数。

2、然后调用jssdk的方法

wx.miniProgram.navigateTo({url: `/pages/h5pay/index?timeStamp=${timeStamp}&nonceStr=${nonceStr}&package=${package}&signType=${signType}&paySign=${paySign}`})

、在小程序端准备一个单独的支付页面,用来接受h5传过来的参数,在小程序的js文件里面的onLoad周期函数里面拿到参数

【小程序端】

1、准备一个单独的页面,用来处理h5支付的逻辑,比如 pages/h5pay/index,这个页面要和h5端跳转的页面保持一致

onLoad (options) {
  // options 里面可以拿到h5传递过来的参数
  // 调起支付
  wx.requestPayment({
    ...options,
    success(res) {
      // 支付成功后,设置一个全局变量,然后返回到那个vwebview页面
      wx.$payResult = {...res, paycode: 1};
      wx.navigateBack();
    },
    fail() {
      // 支付失败,同样设置一个全局变量,然后返回到那个vwebview页面
      wx.$payResult = {paycode: 0};
      wx.navigateBack();
    },
  });
}  

2、在webview页面的onShow周期函数,获取支付结果,改变url,通知h5支付结果

onShow() {
  if(wx.$payResult && wx.$payResult.paycode) {
    // 这里只是伪代码,具体根据业务需求自行更改
    this.setData({url: 'https://www.h5.com/xxx/xxx?payresult=' + JSON.stringify(wx.$payResult)});
    // 这里再置空
    wx.$payResult = null;
  }
}

3、在h5页面的支付结果页面里面,通过url的参数来显示提示结果,或者其他内容

let url = new URL(window.location.href);
// 这里就根据具体的业务返货的参数来处理
url.searchParams.get('xxx')


OK,通过以上步骤,就可以完美实现微信小程序内嵌h5调用小程序支付了。

最后一次编辑于  06-28  
点赞 1
收藏
评论

5 个评论

  • 张宝。
    张宝。
    12-14

    这样会违规吗

    12-14
    赞同
    回复
  • 派大欣
    派大欣
    10-09

    我们现在的业务是这样的:小程序里面嵌入了一个h5,这个h5页面里面原本就有支付逻辑,但是我们配置的是微信的h5在线支付,使用你这套逻辑可以行的通吗

    10-09
    赞同
    回复 1
    • sea
      sea
      10-31
      不行的吧,我看文档明确说了小程序只能走小程序的微信支付
      10-31
      回复
  • 奶茶不甜
    奶茶不甜
    07-23

    有个问题,h5传来的参数是用公众号的appid生成的,小程序支付时会检测appid这怎么弄

    07-23
    赞同
    回复 1
    • 星跃
      星跃
      07-24
      使用小程序的appid呀
      07-24
      回复
  • 星跃
    星跃
    07-07

    你的订单管理发货是什么逻辑?

    至于支付,你得搞清楚有哪些支付环境,微信支付官方提供的有以下支付环境:

    JSAPI: 只能在微信内置浏览器调用,不能在小程序内嵌h5使用。比如有人给你发了一个链接消息,你点进去,里面剋支付,这个时候,用的就是JSAPI支付。

    APP支付:就是在app里面调用微信支付。

    h5支付:就是非微信浏览器的支付,如果在手机系统自带浏览器打开了某个网站,网站里面有支付,就用这个。

    Nativa支付:你可以简单理解就是扫码支付。适用于PC网站。

    小程序支付:就是小程序的的支付,其他环境调用不了。

    还有合单,刷脸,付款码支付,刷脸支付,暂时不过多介绍,可以直接看官方文档:https://pay.weixin.qq.com/docs/merchant/products/combine-payment/introduction.html

    07-07
    赞同
    回复
  • 小薛
    小薛
    07-06

    能解决订单管理发货吗 , 这个还是用的小程序支付, 有没有办法,小程序内嵌H5 调用 H5的支付

    07-06
    赞同
    回复 1
    • 星跃
      星跃
      07-24
      你的订单管理发货是什么逻辑?


      至于支付,你得搞清楚有哪些支付环境,微信支付官方提供的有以下支付环境:


      JSAPI: 只能在微信内置浏览器调用,不能在小程序内嵌h5使用。比如有人给你发了一个链接消息,你点进去,里面剋支付,这个时候,用的就是JSAPI支付。


      APP支付:就是在app里面调用微信支付。


      h5支付:就是非微信浏览器的支付,如果在手机系统自带浏览器打开了某个网站,网站里面有支付,就用这个。


      Nativa支付:你可以简单理解就是扫码支付。适用于PC网站。


      小程序支付:就是小程序的的支付,其他环境调用不了。


      还有合单,刷脸,付款码支付,刷脸支付,暂时不过多介绍,可以直接看官方文档:https://pay.weixin.qq.com/docs/merchant/products/combine-payment/introduction.html
      07-24
      回复
登录 后发表内容