微信小程序web-view内嵌H5使用PHP完成支付功能 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

微信小程序web-view内嵌H5使用PHP完成支付功能

發表時(shí)間:2021-2-20

發布人(rén):融晨科技

浏覽次數:114

在(zài)開發過程中,遇到(dào)使用微信小程序web-view内嵌H5完成支付的(de)業務,我們該怎麽去實現?

一、設計思路

1、使用PHP請求接口獲取wx_data_package支付包數據
2、使用jweixin.js把wx_data_package數據傳到(dào)小程序
3、小程序獲取數據,調起支付界面完成支付,并返回支付是(shì)否成功
4、後台根據返回的(de)數據判斷支付是(shì)否成功,然後進行相關業務處理

二、前期準備

1、創建PHP文件,index.php主界面,success.php支付成功,error.php支付失敗

1.png

2、新建WeChat項目,并創建下面目錄

三、實現代碼

../404/index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>支付測試</title>
    <script type="text/javascript" src=http://www.wxapp-union.com/"../static/js/jweixin-1.3.2.js"></script>
    <style>
        .btn {
            padding: 10px 20px;
            text-align: center;
            background: #647357;
            color: #fff;

        }
    </style>
</head>

<body>
    <?php
    // 假設wx_data_package是(shì)請求接口返回的(de)支付數據包
    $wx_data_package = '{"package":"prepay_id=wx164122404495953ff5f88672224070000","appid":"wxa5dasdfasdf2231","sign":"m8i6LKiu+adJJouVx6XasdaEOr+K5FIuV/luTEgrqE+APuO/oEVK6Fadfn4NiJMqGasdfhlgdj2FDasdf9oHSAnmHaPKiZgK37oCVe+3HyGGirDWZLOSdpI4hVvasdLpPBbmbvM6Xvg2TLwyO41Fg3fjIEasdrhkxCJss2B5uXa3BrRyL3LEC01CbJfC05uDwRRC+a8erHzRjoscB+Kjepnhcfp/PVO9v+N6b5oKmTUCdhaF85n3U2PSFS7yzp6473oEAPi8jNiwM/dtZZvo+y7z4urWoebeFfO/5l9Bx2EWaRstQqEXgh+lLsVxNiccHal3nfDcqNkw==","signType":"RSA","noncestr":"45bd4991f99048badew9528dqfca9b7","timestamp":"1613488960"}';
    ?>
    <div class="btn" onclick="pay()">支付</div>
    <script>
        // 把wx_data_package傳到(dào)小程序
        function pay() {
            const url = `../wePay/wePay?wxPageData=http://www.wxapp-union.com/<?php echo urlencode($wx_data_package); ?>`
            wx.miniProgram.navigateTo({
                url: url
            })
        }
    </script>
</body>

</html>

2、success.php和(hé / huò)error.php兩文件随便添加點東西進去做一個(gè)區别就(jiù)可以(yǐ)了(le/liǎo)
3、webview.wxml

// pages/webview/webview.wxml
<web-view src="{{src}}"></web-view>

4、webview.js

// pages/webview/webview.js
Page({

  /**
   * 頁面的(de)初始數據
   */
  data: {
    src: "http://php.com/"
  },

  /**
   * 生命周期函數--監聽頁面加載
   */
  onLoad: function (options) {
    if (options.payFlag !== undefined)
      if (options.payFlag == "true") {
        this.setData({
          src: "http://php.com/success.php"
        })
      } else {
        this.setData({
          src: "http://php.com/error.php"
        })
      }
  },
})

5、wePay.js

// pages/wePay/wePay.js
Page({

  data: {

  },
  payment(data) {
    wx.requestPayment({
      'timeStamp': data.timestamp,
      'nonceStr': data.noncestr,
      'package': data.package,
      'signType': data.signType,
      'paySign': data.sign,
      'success': function (res) {
        wx.navigateTo({
          url: '../webview/webview?payFlag=true',
        })
      },
      'fail': function (res) {
        wx.navigateTo({
          url: '../webview/webview?payFlag=false',
        })
      }
    })
  },
  /**
   * 生命周期函數--監聽頁面加載
   */
  onLoad: function (options) {
    let wxPageData = http://www.wxapp-union.com/JSON.parse(decodeURIComponent(options.wxPageData))
    console.log(wxPageData)
    this.payment(wxPageData)
  },
})

四、實現效果

1、主界面

3.png

2、調起支付時(shí)

4.png

3、支付成功或失敗後

5.png

相關案例查看更多