国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uni-app | 小程序嵌入H5頁(yè)面實(shí)現(xiàn)支付功能

這篇具有很好參考價(jià)值的文章主要介紹了uni-app | 小程序嵌入H5頁(yè)面實(shí)現(xiàn)支付功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?? 背景

前一陣在做公司小程序時(shí),有個(gè)需要對(duì)接支付的功能。但是本著訂單數(shù)據(jù)和支付統(tǒng)一入口的設(shè)計(jì)原則,計(jì)劃是對(duì)接公司商城現(xiàn)有的支付體系。故本方案是分析對(duì)接商城支付幾種可行方案以及每種方案的可行性,最后綜合選出一種最佳的方案。

??方案選擇

實(shí)現(xiàn)方式 跳轉(zhuǎn)商城小程序支付 跳轉(zhuǎn)商城H5支付 對(duì)接小程序支付API
優(yōu)點(diǎn) 無(wú)需重新對(duì)接開(kāi)發(fā)支付功能(可直使用商城小程序支付能力) 直接嵌入h5頁(yè)面,用戶(hù)沒(méi)有感知跳轉(zhuǎn)的過(guò)程體驗(yàn)較好 不存在跳轉(zhuǎn)問(wèn)題,所有操作都是在小程序內(nèi)部完成
缺點(diǎn) 1. 小程序之間跳轉(zhuǎn)會(huì)出現(xiàn)詢(xún)問(wèn)彈窗不利于用戶(hù)體驗(yàn)
2. 商城小程序還存在一些未知bug,目前還不是很穩(wěn)定

1. 小程序需要主動(dòng)喚起支付窗口

1. 重新對(duì)接小程序支付API
2. 訂單無(wú)法統(tǒng)一商城入口
3. 綜合開(kāi)發(fā)工作量較大

綜合用戶(hù)體驗(yàn)、開(kāi)發(fā)工作量等因素最終選擇使用跳轉(zhuǎn)商城H5支付的方案

?涉及問(wèn)題

  • 小城和商城H5頁(yè)面通訊問(wèn)題
  • 喚起支付窗口問(wèn)題
  • h5跳轉(zhuǎn)回小程序問(wèn)題

??實(shí)現(xiàn)思路

由于經(jīng)過(guò)測(cè)試發(fā)現(xiàn)小程序中嵌入商城H5后,無(wú)法正常調(diào)起微信h5支付的。所以采用曲線(xiàn)救國(guó)的方式,商城內(nèi)部走微信小程序支付API,再有小程序喚醒小程序支付。具體實(shí)現(xiàn)步驟如下

  1. 小程序跳轉(zhuǎn)商城H5
  2. 商城H5判斷如果是小程序內(nèi)打開(kāi),調(diào)用微信小程序支付API
  3. 商城H5跳回到小程序
  4. 小程序喚起支付窗口
  5. 根據(jù)回調(diào)進(jìn)行業(yè)務(wù)處理
1. 前置條件
  • 微信商戶(hù)申請(qǐng)并開(kāi)通小程序支付
  • 使用小程序要是企業(yè)注冊(cè)
  • 商城域名添加進(jìn)微信公眾平臺(tái)web-view業(yè)務(wù)域名中
  • 商城h5中需要引入用于和web-view交互的JSSDK
2. 整體流程
  1. 用戶(hù)輸入充值金額,點(diǎn)擊確定。小程序攜帶token、用戶(hù)id和支付金額參數(shù)跳轉(zhuǎn)到商城H5訂單確認(rèn)頁(yè)面
  2. 商城H5根據(jù)token和用戶(hù)id信息進(jìn)行自動(dòng)登錄、根據(jù)支付金額生成預(yù)充值訂單信息
  3. 用戶(hù)在商城H5頁(yè)面進(jìn)行訂單確認(rèn)、發(fā)票信息填寫(xiě)
  4. 用戶(hù)在商城H5點(diǎn)擊支付,生成對(duì)應(yīng)訂單并攜帶訂單號(hào)跳轉(zhuǎn)到小程序訂單詳情頁(yè)面
  5. 小程序再訂單詳情頁(yè)面彈出支付窗口
  6. 商城端異步通知PaaS支付成功 PaaS 修改訂單狀態(tài)
  7. 小程序端成功回調(diào)中輪訓(xùn)調(diào)用PaaS訂單狀態(tài)查詢(xún)接口
  8. 訂單修改成功小程序跳轉(zhuǎn)到一個(gè)指定頁(yè)面(例如訂單頁(yè))
3. 時(shí)序圖

在原有微信支付的邏輯上增加了現(xiàn)有業(yè)務(wù)的交互邏輯(若有遺漏或者錯(cuò)誤的地方,還請(qǐng)?jiān)谠u(píng)論區(qū)和諧討論)

uni-app | 小程序嵌入H5頁(yè)面實(shí)現(xiàn)支付功能

4. 通訊方式

由于使用postMessage方式傳遞數(shù)據(jù),只有在小程序特殊操作下才可以觸發(fā),所以本方案采用get方式進(jìn)行傳參

小程序打開(kāi)H5
<!-- 傳遞商城支付所需要的信息 -->
<web-view
  :src="'https://shop.XXX.com/Mobile/Index/wxchart?token=XXXXXXXXXX&name=youngRich'"
  ></web-view>
H5跳轉(zhuǎn)小程序
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

// 還要再次頁(yè)面中判斷是是否在小程序內(nèi)打開(kāi)
				var ua = navigator.userAgent.toLowerCase();
				if(ua.match(/MicroMessenger/i)=="micromessenger") {
					//ios的ua中無(wú)miniProgram,但都有MicroMessenger(表示是微信瀏覽器)
					wx.miniProgram.getEnv((res)=>{   
						if (res.miniprogram) {
							//在微信內(nèi),在小程序內(nèi)。
							console.log("小程序的支付業(yè)務(wù)")
							let wxJson ={} // 微信返回的5個(gè)參數(shù)
               wx.miniProgram.navigateTo({url: '"/pages/pay/pay?param=" + wxJson  '});
							return
						}else{
							//在微信內(nèi),不在小程序內(nèi)。
							console.log("微信H5的支付業(yè)務(wù)")
							return
						}
					})
				}else{
					//不在微信內(nèi)。
					console.log("第三方瀏覽器支付業(yè)務(wù)")
					return
				} 

??解決方案

以下代碼均為示例,僅供參考。請(qǐng)結(jié)合自身業(yè)務(wù)邏輯進(jìn)行處理

小程序端操作
  • 訂單詳情或者充值頁(yè)面 攜帶金額等訂單信息跳轉(zhuǎn)到預(yù)支付頁(yè)面(商城h5提供的地址用web-view嵌入)
  • 預(yù)支付頁(yè)面onLoad中調(diào)用uni.login獲取code
  • 把通行證token、code、user_id、account攜帶到商城h5給的url上(或者系統(tǒng)中其他參數(shù))
<template>
  <web-view src="{{shopUrl}}"></web-view>
</template>

<script>
  export default {
     data() {
       return {
         shopUrl:''
       }
     },
    // 訂單詳情或者充值頁(yè)面  攜帶金額跳轉(zhuǎn)到預(yù)支付頁(yè)面
    onload(options){
      uni.login({
        provider: "weixin",
        success: (res) => {
          let params = {
            code:res.code,
            token:*********,
            user_id:*****,
            ...options,
          }
          this.shopUrl = this.stringifyUrlArgs('https://XXX.XXXX.XXX',params) 
        },
        fail: (res) => {
          utils.showToast("獲取授權(quán)信息失敗");
        },
      });       
    },
    methods:{
        stringifyUrlArgs(url, params) => {
          url += (/\?/).test(url) ? '&' : '?'
          url += Object.keys(params).map(key => `${key}=${params[key]}`).join('&')
          return url
  		}
    }
</script>

在商城h5跳轉(zhuǎn)回小程序的頁(yè)面中(可以是任何頁(yè)面甚至是空白頁(yè))寫(xiě)入一下邏輯。此步驟主要是彈出授權(quán)支付彈窗

<template>
</template>

<script>
  export default {
    data() {},
    onload(options){
      let payData = {
        provider: 'wxpay',
        ...options, // 商城h5攜帶五個(gè)用于支付的參數(shù)
      }
      uni.requestPayment({
      	...payData,
        success(res) {
          console.log('支付成功處理')
        },
        fail(err) {
          console.log('支付失敗處理')
        }
      })      
    },
</script>

??結(jié)語(yǔ)

??感謝鐵汁們的耐心閱讀,如果本篇文章能對(duì)大家有所幫助,還請(qǐng)多多點(diǎn)贊收藏關(guān)注,支持一下??
uni-app | 小程序嵌入H5頁(yè)面實(shí)現(xiàn)支付功能文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-469602.html

到了這里,關(guān)于uni-app | 小程序嵌入H5頁(yè)面實(shí)現(xiàn)支付功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包