欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序webview組件交互,內(nèi)聯(lián)h5頁面并網(wǎng)頁實現(xiàn)微信支付實現(xiàn)解析

 更新時間:2019年08月16日 11:45:27   作者:編程小石頭  
這篇文章主要介紹了小程序webview組件交互,內(nèi)聯(lián)h5頁面并網(wǎng)頁實現(xiàn)微信支付實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

小程序支持webview以后,我們開發(fā)的好多h5頁面,就可以直接在小程序里使用了,比如我們開發(fā)的微信商城,文章詳情頁,商品詳情頁,就可以開發(fā)一套,多處使用了。我們今天來講一講。在小程序的webview里實現(xiàn)微信支付功能。因為微信不允許在小程序的webview里直接調(diào)起微信支付。所以我們這節(jié)課就要涉及到小程序和webview的交互了。

老規(guī)矩先看效果。

因為這里涉及的東西比較多,錄gif太多,沒法上傳,我就錄制了一段視頻出來。

https://v.qq.com/x/page/t0913iprnay.html

原理

先說下實現(xiàn)原理吧,實現(xiàn)原理就是我們在webview的h5頁面里實現(xiàn)下單功能,然后點擊支付按鈕,我們點擊支付按鈕的時候會跳轉(zhuǎn)到小程序頁面,把訂單號,訂單總金額,傳遞到小程序里,然后小程序里使用訂單號和訂單金額去調(diào)起微信支付,實現(xiàn)付款,付款成功或者失敗時都會有回調(diào)。我們再把對應的回調(diào)傳遞給webview,刷新webview里的訂單和支付狀態(tài)。

一,定義webview顯示h5頁面

關于webview的使用,我就不做講解了,官方文檔里寫的很清楚,用起來也很簡單。

https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

webview很簡單,就是用一個webview組件,顯示我們的網(wǎng)頁。

二,定義h5頁面

我這里啟動一個本地服務器,用來展示一個簡單的h5頁面。

上圖是我在瀏覽器里顯示的效果。

接下來我們在小程序的webview里顯示這個頁面,也很簡單,只需要把我們的src定義為我們的本地網(wǎng)頁鏈接就可以了。

這里有一點需要注意

因為我們是本地鏈接,我們需要到開發(fā)者工具里把這一項給勾選。

三,來看下h5頁面代碼

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>小程序內(nèi)嵌webview</title>
  <style>
    .btn {
      font-size: 70px;
      color: red;
    }
  </style>
</head>
<body>
<h1>我是webview里的h5頁面</h1>
<a id="desc" class="btn" onclick="jumpPay()">點擊支付</a>

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
  console.log(location.href);
  let payOk = getQueryVariable("payOk");
  console.log("payOk", payOk)
  if(payOk){//支付成功
    document.getElementById('desc').innerText="支持成功"
    document.getElementById('desc').style.color="green"
  }else{
    document.getElementById('desc').innerText="點擊支付"
  }
  //獲取url里攜帶的參數(shù)
  function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
      var pair = vars[i].split("=");
      if (pair[0] == variable) {
        return pair[1];
      }
    }
    return (false);
  }
  function jumpPay() {
    let orderId = Date.now();//這里用當前時間戳做訂單號(后面使用你自己真實的訂單號)
    let money = 1;//訂單總金額(單位分)
    let payData = {orderId: orderId, money: money};

    let payDataStr = JSON.stringify(payData);//因為要吧參數(shù)傳遞給小程序,所以這里需要轉(zhuǎn)為字符串
    const url = `../wePay/wePay?payDataStr=${payDataStr}`;
    wx.miniProgram.navigateTo({
      url: url
    });
    // console.log("點擊了去支付", url)
    console.log("點擊了去支付")
  }
</script>
</body>
</html>

h5代碼這里不做具體講解,只簡單說下。我們就是在點擊支付按鈕時,用當前時間戳做為訂單號(因為訂單號要保證唯一),然后傳一個訂單金額(單位分),這里節(jié)約起見,就傳1分錢吧,花的是自己的錢,心疼。。。。

關鍵點說一下

1, 必須引入jweixin,才可以實現(xiàn)h5跳轉(zhuǎn)小程序。

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

2,跳轉(zhuǎn)到小程序頁面的方法

const url = `../wePay/wePay?payDataStr=${payDataStr}`;
wx.miniProgram.navigateTo({
   url: url
 });

這里要和你小程序的頁面保持一致。payDataStr是我們攜帶的參數(shù)

四,小程序支付頁

來看下我們的小程序支付頁

小程序支付頁功能很簡單,就是來接收我們h5傳過訂單號和訂單金額。然后去調(diào)起微信支付,實現(xiàn)支付。支付成功和支付失敗都有對應的回調(diào)。

支付我們這里實用的小程序云開發(fā)來實現(xiàn)的支付,核心代碼只有10行。由于支付不是本節(jié)的重點,所以這里不做具體講解。感

興趣的同學可以去看我寫的文章和我錄的視頻

小程序支付文章:https://www.jianshu.com/p/2b391df055a9

小程序支付視頻:https://edu.csdn.net/course/play/25701/310742

下面把小程序接收參數(shù)和支付的完整代碼貼出來給大家

Page({
 //h5傳過來的參數(shù)
 onLoad: function(options) {
  console.log("webview傳過來的參數(shù)", options)
  //字符串轉(zhuǎn)對象
  let payData = JSON.parse(options.payDataStr)
  console.log("orderId", payData.orderId)

  let that = this;
  wx.cloud.callFunction({
   name: "pay",
   data: {
    orderId: payData.orderId,
    money: payData.money
   },
   success(res) {
    console.log("獲取成功", res)
    that.goPay(res.result);
   },
   fail(err) {
    console.log("獲取失敗", err)
   }
  })
 },

 //微信支付
 goPay(payData) {
  wx.requestPayment({
   timeStamp: payData.timeStamp,
   nonceStr: payData.nonceStr,
   package: payData.package,
   signType: 'MD5',
   paySign: payData.paySign,
   success(res) {
    console.log("支付成功", res)
    //你可以在這里支付成功以后,再跳會webview頁,并把支付成功狀態(tài)傳回去
    wx.navigateTo({
     url: '../webview/webview?payOk=true',
    })
   },
   fail(res) {
    console.log("支付失敗", res)
   }
  })
 }
})

代碼里注釋很清楚,這里有一點,就是我們支付成功后,需要告訴h5我們支付成功了,通知h5去刷新訂單或者支付狀態(tài)。

到這里我們就完整的實現(xiàn)了小程序webview展示h5頁面,并且做到了h5和小程序的交互,實現(xiàn)了小程序webview的支付功能。
是不是很簡單呢。

源碼地址

https://github.com/qiushi123/xiaochengxu_demos

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 如何用JS模擬實現(xiàn)數(shù)組的map方法

    如何用JS模擬實現(xiàn)數(shù)組的map方法

    這篇文章主要介紹了如何用JS模擬實現(xiàn)數(shù)組的map方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • JS實現(xiàn)CheckBox復選框全選全不選功能

    JS實現(xiàn)CheckBox復選框全選全不選功能

    在網(wǎng)站的管理后臺應用此功能居多,如一次性處理多個產(chǎn)品,或?qū)ξ恼碌膭h除對產(chǎn)品的下架等處理,一條一條的點顯然有一些麻煩,如果能每一行放一個checkbox,然后統(tǒng)一處理就好辦的多了,今天我就用簡單的篇幅來講解一下這個功能的實現(xiàn)原理和實現(xiàn)過程。
    2015-05-05
  • JavaScript移動端常用事件之touch觸摸事件詳解

    JavaScript移動端常用事件之touch觸摸事件詳解

    觸屏事件touch也稱為觸摸事件,touch對象代表一個觸摸點,觸摸點可能是一根手指,也可能是一根觸摸筆,觸屏事件可響應用戶手指(或觸摸筆)對屏幕或者觸控板操作,下面這篇文章主要給大家介紹了關于JavaScript移動端常用事件之touch觸摸事件的相關資料,需要的朋友可以參考下
    2022-10-10
  • ECMAScript6中Map/WeakMap詳解

    ECMAScript6中Map/WeakMap詳解

    這篇文章主要介紹了ECMAScript6中Map/WeakMap詳解的相關資料,需要的朋友可以參考下
    2015-06-06
  • json格式化/壓縮工具 Chrome插件擴展版

    json格式化/壓縮工具 Chrome插件擴展版

    Chrome插件擴展 json格式化/壓縮 工具,方便json開發(fā)的朋友。
    2010-05-05
  • JS實現(xiàn)簡潔、全兼容的拖動層實例

    JS實現(xiàn)簡潔、全兼容的拖動層實例

    這篇文章主要介紹了JS實現(xiàn)簡潔、全兼容的拖動層的方法,實例分析了javascript鼠標事件及頁面元素的操作技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • javascript 詞法作用域和閉包分析說明

    javascript 詞法作用域和閉包分析說明

    以下上是我在學習和使用了JS一段時間后,為了更深入的了解它, 也為了更好的把握對它的應用, 從而在對閉包的學習過程中,自己對于詞法作用域的一些理解和總結(jié)
    2010-08-08
  • JavaScript實現(xiàn)點擊改變圖片形狀(transform應用)

    JavaScript實現(xiàn)點擊改變圖片形狀(transform應用)

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)點擊改變圖片形狀,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • JavaScript中六種面試??祭^承方式總結(jié)

    JavaScript中六種面試常考繼承方式總結(jié)

    js的幾種繼承方式在我們面試的時候經(jīng)常會被問到,所以深入理解js幾種繼承方式以及它們的優(yōu)缺點是非常有必要的。本文為大家整理了JavaScript中面試常考的六種繼承方式,需要的可以參考一下
    2023-02-02
  • webpack優(yōu)化之代碼分割與公共代碼提取詳解

    webpack優(yōu)化之代碼分割與公共代碼提取詳解

    這篇文章主要給大家介紹了關于webpack優(yōu)化之代碼分割與公共代碼提取的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用webpack具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11

最新評論