溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

小程序如何實現微信支付

發布時間:2020-12-10 11:48:30 來源:億速云 閱讀:259 作者:小新 欄目:移動開發

這篇文章主要介紹小程序如何實現微信支付,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

原理

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

一,定義webview顯示h6頁面

關于webview的使用,我就不做講解了,官方文檔里寫的很清楚,用起來也很簡單。https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

小程序如何實現微信支付

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

二,定義h6頁面

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

小程序如何實現微信支付

上圖是我在瀏覽器里顯示的效果。
接下來我們在小程序的webview里顯示這個頁面,也很簡單,只需要把我們的src定義為我們的本地網頁鏈接就可以了。

小程序如何實現微信支付

這里有一點需要注意

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

小程序如何實現微信支付

三,來看下h6頁面代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>小程序內嵌webview</title>
    <style>
        .btn {
            font-size: 70px;
            color: red;
        }
    </style>
</head>
<body>
<h2>我是webview里的h6頁面</h2>
<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里攜帶的參數
    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);//因為要吧參數傳遞給小程序,所以這里需要轉為字符串
        const url = `../wePay/wePay?payDataStr=${payDataStr}`;
        wx.miniProgram.navigateTo({
            url: url
        });
        // console.log("點擊了去支付", url)
        console.log("點擊了去支付")
    }
</script>
</body>
</html>

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

關鍵點說一下

1, 必須引入jweixin,才可以實現h6跳轉小程序。
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

2,跳轉到小程序頁面的方法

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

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

小程序如何實現微信支付

四,小程序支付頁

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

小程序如何實現微信支付

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

小程序如何實現微信支付

支付我們這里實用的小程序云開發來實現的支付,核心代碼只有10行。由于支付不是本節的重點,所以這里不做具體講解。感興趣的同學可以去看我寫的文章和我錄的視頻
小程序支付文章:https://www.jianshu.com/p/2b391df055a9
小程序支付視頻:https://edu.csdn.net/course/play/25701/310742
下面把小程序接收參數和支付的完整代碼貼出來給大家

Page({
  //h6傳過來的參數
  onLoad: function(options) {
    console.log("webview傳過來的參數", options)
    //字符串轉對象
    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頁,并把支付成功狀態傳回去
        wx.navigateTo({
          url: '../webview/webview?payOk=true',
        })
      },
      fail(res) {
        console.log("支付失敗", res)
      }
    })
  }
})

代碼里注釋很清楚,這里有一點,就是我們支付成功后,需要告訴h6我們支付成功了,通知h6去刷新訂單或者支付狀態。
到這里我們就完整的實現了小程序webview展示h6頁面,并且做到了h6和小程序的交互,實現了小程序webview的支付功能。
是不是很簡單呢。

以上是“小程序如何實現微信支付”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女