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

前端H5微信支付寶支付實(shí)現(xiàn)

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

前端H5微信支付寶支付實(shí)現(xiàn)

以u(píng)niapp項(xiàng)目為例

支付寶的

首先是一個(gè)支付類型選擇頁面,在選擇支付寶支付后,跳轉(zhuǎn)到一個(gè)空白頁,用于支付寶支付的中轉(zhuǎn)頁面。
h5支付寶支付功能前端怎么實(shí)現(xiàn),javascript,vue.js,前端
在點(diǎn)擊立即支付之后,直接跳轉(zhuǎn)至自行設(shè)置好的空白頁就好,并把你生成訂單所需要的數(shù)據(jù)一并帶過去。

uni.navigateTo({
  url: `/pages/alipaying/alipay?orderNum=${this.orderNum}&price=${this.orderinfo.price}`,
});

接下來就是重點(diǎn)操作了(其實(shí)非常簡(jiǎn)單),在跳轉(zhuǎn)這個(gè)頁面之后直接調(diào)用后端接口,將數(shù)據(jù)傳給后端生成訂單,并且還需要兩個(gè)地址,一個(gè)是取消支付的回調(diào)地址(quitUrl),一個(gè)是支付完之后的回調(diào)地址(returnUrl),后端會(huì)根據(jù)這些信息生成一個(gè)form表單返回給你,我們只需要將這個(gè)表單渲染到這個(gè)空白頁面,并進(jìn)行提交表單的操作,就會(huì)跳轉(zhuǎn)至支付寶的頁面去進(jìn)行支付操作,在取消或支付完成會(huì)跳轉(zhuǎn)至之前傳給后端規(guī)定好的地址,在那里去調(diào)后端接口查詢支付結(jié)果或者重新支付等其他操作就行了。
空白頁面內(nèi)容如下:

<template>
	<!-- #ifdef H5 -->
	<div v-html="html">
	  
	</div>
	<!-- #endif -->
  </template>
  
  <script>
  import api from "../../utils/api";
  //這個(gè)utils是對(duì)一些東西做了處理,其實(shí)沒必要,utils.getStorage直接用uni.getStorage一樣的
  import utils from "../../utils";
  
  export default {
	onLoad(options) {
	  this.orderNum=options.orderNum
	  this.price=options.price
	  this.couponId = options.couponId
	},
	mounted(){
		const result = utils.getStorage("weixinCallback");
		if(result!=3){//這是弄了個(gè)變量來判斷是否已經(jīng)進(jìn)入了支付,防止用戶直接左滑的返回一直在觸發(fā)支付
			this.alipay()
		}
	},
	data() {
	  return {
		orderNum:"",
		price:"",
		html:"",
		couponId:""
	  };
	},
	methods: {
		async alipay(){
			//這里是獲取支付寶返回的表單用的接口,那兩個(gè)地址我在api里面寫了默認(rèn)值,所以這個(gè)地方就不傳了,接口詳細(xì)內(nèi)容就和普通調(diào)接口一樣,該傳傳,該接接
			const res = await api.alipayOrder(this.orderNum,this.price,this.couponId)
			//將表單渲染進(jìn)頁面
			document.querySelector('body').innerHTML = res;
			//在渲染完立即提交表單,就會(huì)進(jìn)入支付寶支付的界面
			this.$nextTick(()=>{
				utils.setStorage("weixinCallback", 3);
				window.document.forms[0].submit()
			})
		}
	},
  };
  </script>

不過這里的實(shí)現(xiàn)支持正常瀏覽器h5,但是微信內(nèi)置瀏覽器的話會(huì)提示在瀏覽器打開該鏈接,非常的繁瑣,查了一下午解決方案,就是沒有解決方案(可能也是我沒找到),索性直接微信內(nèi)置瀏覽器的話就不顯示支付寶支付,反正需求很奇怪,都打開微信了還要支付寶干啥,對(duì)吧

微信的

微信支付比支付寶支付稍微麻煩一點(diǎn)點(diǎn),但也不難,對(duì)于前端來說調(diào)接口就完事了。
微信的話有兩種,一種外部瀏覽器,一種微信內(nèi)置瀏覽器
所以首先需要一個(gè)方法來判斷瀏覽器的類型

isWeiXin(){
		let ua = window.navigator.userAgent.toLowerCase();
		if (ua.match(/MicroMessenger/i) == 'micromessenger') {
			this.payway.forEach(item=>{
				if(item.value==1){
					item.flag = false
				}
			})
			return true;
		} else {
			return false;
		}
	},

是微信內(nèi)置就返回true,不是返回false

先說外部瀏覽器的情況,在立即支付之后去判斷一下瀏覽器是什么,返回false就走下面代碼,調(diào)接口就完了

//把生成訂單需要的數(shù)據(jù)傳給后端,然后后端會(huì)返回一個(gè)地址
const res2 = await api.weixinPayOrder(this.orderNum,this.couponId);
const name = "_self";
//因?yàn)槲⑿胖Ц稕]有傳什么回調(diào)地址,在支付完之后還會(huì)回到這個(gè)頁面,所以防止重復(fù)觸發(fā)這里設(shè)置一個(gè)值來控制
utils.setStorage("weixinCallback", 1);
//打開后端返回的地址,就可以去微信支付了
window.open(res2.mweb_url, name);

在頁面展示的時(shí)候onShow鉤子,判斷weixinCallback這個(gè)值來執(zhí)行不同的操作,如果是1說明已經(jīng)發(fā)起過支付,那么需要一個(gè)執(zhí)行另一個(gè)方法來調(diào)用查詢支付結(jié)果的接口來跳轉(zhuǎn)頁面,下面是查詢結(jié)果的方法

getOrderDetail() {
      clearTimeout(this.timer);
      this.timer = setTimeout(() => {
        let initTime = +new Date();
        let loop = () => {
        //這里調(diào)用后端給的查詢支付結(jié)果的接口,
          api.weixinPayOrderBack(this.orderNum).then((res) => {
            if (res.status == 1) {
            //支付成功跳轉(zhuǎn)
              uni.navigateTo({
                url: `/pages/payWeixinSuccess/payWeixinSuccess?orderNum=${this.orderNum}&result=yes`,
              });
            } else {
              let now = +new Date();
              if (now - initTime < 45000) {
                loop();
              } else {
              //支付失敗跳轉(zhuǎn)
                uni.navigateTo({
                  url: `/pages/payWeixinSuccess/payWeixinSuccess?orderNum=${this.orderNum}&result=no`,
                });
              }
            }
          });
        };
        loop();
      }, 2000);
    },

這樣其實(shí)就完成了外部瀏覽器的微信支付前端部分,可能還有不足或bug,至少現(xiàn)在我沒發(fā)現(xiàn)。

接下來是微信內(nèi)置瀏覽器支付,首先需要一個(gè)(jweixin-module),下載這個(gè)依賴npm、yarn都行

在調(diào)用isWeiXin()為true時(shí),表示是微信內(nèi)置瀏覽器
首先,調(diào)用微信官方提供的鏈接獲取用戶授權(quán)信息code

//應(yīng)用的appid
const appId = "wxxxxxxxxxxxx";
//重定向的地址,重定向回當(dāng)前頁面
const local = window.location.href
//打開微信官方提供的鏈接,傳入appid和回調(diào)地址,在用戶確認(rèn)授權(quán)后會(huì)在回調(diào)地址后面拼接上code
window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appId+'&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=1#wechat_redirect';

在授權(quán)后回到這個(gè)頁面看看地址上有沒有code,有則進(jìn)行下一步
寫一個(gè)方法取出地址里的code

getUrlParam(name) {
	var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
	let url = window.location.href
	let search = url.split('?')[1]
	if (search) {
		var r = search.substr(0).match(reg)
		if (r !== null)return unescape(r[2])
			return null
	    } else
	    return null
	},

判斷當(dāng)前地址有沒有code,有則準(zhǔn)備進(jìn)行支付操作,沒有則去到讓用戶授權(quán)

const code = this.getUrlParam("code")
if(code==null || code == ""){
	//這里走讓用戶授權(quán)的操作
}else{
	//這里走支付的操作,下面詳寫
}

在else中,使用前面下載的依賴(jweixin-module)來走支付流程

//這里是將code傳給后端來獲取openId
const res2 = await api.sendCode(code);
//然后將后端給的openId和訂單信息繼續(xù)給后端,在后端返回支付所需的一些參數(shù)在依賴中需要配置
//這兩個(gè)接口后端可以合并成一個(gè)的吧,我不太理解為啥分成兩個(gè),繁瑣
const res3 = await api.weixinPayOrder(this.orderNum,res2.data);
//下面就是使用這個(gè)依賴包了,具體配置什么意思網(wǎng)上復(fù)制來的,一查一大堆
jweixin.config({//初始化配置
	debug: false, // 是否開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會(huì)通過log打出,僅在pc端時(shí)才會(huì)打印。
	appId: appId, // 必填,公眾號(hào)的唯一標(biāo)識(shí)
	timestamp: res3.timeStamp, // 必填,生成簽名的時(shí)間戳
	nonceStr: res3.nonceStr, // 必填,生成簽名的隨機(jī)串
	signature:res3.paySign, // 必填,簽名,
	jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表
});
jweixin.ready(function() {
	jweixin.chooseWXPay({//下面這些參數(shù)都是在上面接口返回給我的
		timestamp: res3.timeStamp, // 支付簽名時(shí)間戳,注意微信jssdk中的所有使用timestamp字段均為小寫。但最新版的支付后臺(tái)生成簽名使用的timeStamp字段名需大寫其中的S字符
		nonceStr: res3.nonceStr, // 支付簽名隨機(jī)串,不長(zhǎng)于 32 位
		package: res3.package, // 統(tǒng)一支付接口返回的prepay_id參數(shù)值,提交格式如:prepay_id=***)
		signType: res3.signType, // 簽名方式,默認(rèn)為'SHA1',使用新版支付需傳入'MD5'
		paySign: res3.paySign, // 支付簽名
		success: function(res) {
			// 支付成功后的回調(diào)函數(shù)
			uni.showToast({
				icon: 'none',
				title: '支付成功',
				duration: 4000
			});
			uni.navigateTo({
				url: `/pages/payWeixinSuccess/payWeixinSuccess?orderNum=${this.orderNum}&result=yes`,
			});
		},
		cancel: function(r) {},
		fail: function(res) {
			console.log('payfail')
		}
	});
});
jweixin.error(function(res) {
	uni.showToast({
		icon: 'none',
		title: '支付失敗了',
		duration: 4000
	});
	uni.navigateTo({
		url: `/pages/payWeixinSuccess/payWeixinSuccess?orderNum=${this.orderNum}&result=no`,
	});
});

走到這里h5的微信支付也完成了,其實(shí)大部分邏輯在后端,前端只管調(diào)接口就完事了,不明白接口什么意思可以去問問后端就行,是不是非常簡(jiǎn)單,如果看官方文檔那樣詳細(xì)的流程圖其實(shí)很多流程在后端走了,想要更多的學(xué)習(xí)的話那就去掌握后端知識(shí)咯文章來源地址http://www.zghlxwxcb.cn/news/detail-769863.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • 微信支付,JSAPI支付,APP支付,H5支付,Native支付,小程序支付功能詳情以及回調(diào)處理

    微信支付,JSAPI支付,APP支付,H5支付,Native支付,小程序支付功能詳情以及回調(diào)處理

    支付wiki: https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml 支付api: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/index.shtml 開發(fā)工具包(SDK)下載: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml#part-1 1.1簡(jiǎn)介 JSAPI支付是指商戶通過調(diào)用微信支付提供的JSAPI接口,在支付場(chǎng)景中調(diào)起微信支付模

    2023年04月18日
    瀏覽(32)
  • vue實(shí)現(xiàn)H5支付(微信,支付寶)

    1.判斷瀏覽器是微信還是支付寶或其他瀏覽器 2.微信瀏覽器調(diào)用微信支付的方法(調(diào)用后臺(tái)接口創(chuàng)建訂單,需要微信用戶唯一標(biāo)識(shí)openid;接口返回微信支付所需的支付參數(shù)) 3.支付寶瀏覽器支付方法

    2024年02月16日
    瀏覽(23)
  • 微信H5頁面實(shí)現(xiàn)微信小程序支付

    微信H5頁面實(shí)現(xiàn)微信小程序支付

    背景: 在微信H5頁面已經(jīng)實(shí)現(xiàn)了微信JSAPI的網(wǎng)頁支付,老板要求把整個(gè)業(yè)務(wù)線快速轉(zhuǎn)移到微信小程序中,作為懶惰的程序員來說,直接把頁面嵌套到小程序不就行了。說干就干,在小程序中設(shè)置好基本信息后,一預(yù)覽居然成功了,一切看來是那么順利,可到了系統(tǒng)的支付環(huán)節(jié)

    2024年02月14日
    瀏覽(22)
  • uni-app | 小程序嵌入H5頁面實(shí)現(xiàn)支付功能

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

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

    2024年02月07日
    瀏覽(28)
  • 微信小程序內(nèi)嵌H5頁面實(shí)現(xiàn)微信支付

    微信小程序內(nèi)嵌H5頁面實(shí)現(xiàn)微信支付

    背景: 在微信H5頁面已經(jīng)實(shí)現(xiàn)了微信JSAPI的網(wǎng)頁支付,老板要求把整個(gè)業(yè)務(wù)線快速轉(zhuǎn)移到微信小程序中,作為懶惰的程序員來說,直接把頁面嵌套到小程序不就行了。說干就干,在小程序中設(shè)置好基本信息后,一預(yù)覽居然成功了,一切看來是那么順利,可到了系統(tǒng)的支付環(huán)節(jié)

    2024年02月11日
    瀏覽(99)
  • c# .net framework 實(shí)現(xiàn)微信支付v3 h5支付 簽名 驗(yàn)簽

    c# .net framework 實(shí)現(xiàn)微信支付v3 h5支付 簽名 驗(yàn)簽

    接口文檔:微信支付-開發(fā)者文檔 (qq.com) ?? 遇到的問題有 ??1、簽名老驗(yàn)證不過去 : ?? ??生成的簽名老驗(yàn)證不過? ? n 不要加轉(zhuǎn)義符 ??2、 發(fā)送的請(qǐng)求老是400? 使用工具請(qǐng)求正常。代碼不行。 ??UserAgent = \\\"m.cnblogs.com/WebRequest\\\";? ??不要留空就行 網(wǎng)址可填自己的

    2024年02月05日
    瀏覽(22)
  • ThinkPHP 5 支付寶微信支付(支付寶H5,微信H5、APP支付、公眾號(hào)支付)

    ?Pay.php支付控制器 模型:Weixin.php Weixin.php Alipay.php 支付寶需要的submit文件: 點(diǎn)擊下載 wx.html在使用微信客戶端支付時(shí)需要的頁面 ? ?

    2024年02月08日
    瀏覽(29)
  • 前端H5實(shí)現(xiàn)微信授權(quán)

    前端H5實(shí)現(xiàn)微信授權(quán)

    背景: 前段時(shí)間做了一個(gè)H5項(xiàng)目,H5項(xiàng)目需要放在微信公眾號(hào)里面,并且需要通過微信授權(quán)拿到openId,所以就需要實(shí)現(xiàn)h5授權(quán)微信這個(gè)功能了。 原理: 其實(shí)原理就是前端在本項(xiàng)目首頁去請(qǐng)求微信端提供的一個(gè)地址,并且在地址上配置微信所需要的參數(shù),比如最重要的就是你要配置微信

    2024年02月13日
    瀏覽(15)
  • 【h5+微信小程序】vue2實(shí)現(xiàn)h5掃碼登錄功能

    需要實(shí)現(xiàn)在同域名的h5頁面上增加一個(gè)微信掃碼登錄的功能,如果用戶已經(jīng)有小程序的賬號(hào),可以直接登錄。 使用 :vue2+微信小程序原生開發(fā) 可以實(shí)現(xiàn)上述功能的 前提 是:同一用戶,對(duì)同一個(gè)微信開放平臺(tái)下的不同應(yīng)用,UnionID是相同的。域名已經(jīng)配置。 可以用什么來區(qū)分

    2024年02月14日
    瀏覽(98)
  • H5接入支付流程-微信支付&支付寶支付

    H5接入支付流程-微信支付&支付寶支付

    H5對(duì)接微信支付和支付寶支付,app無法發(fā)版,需要支持在app內(nèi)和瀏覽器內(nèi)同時(shí)使用。 于是借此機(jī)會(huì)對(duì)前端接入對(duì)第三方支付進(jìn)行了調(diào)研,本次只討論微信支付,和支付寶支付。 文檔地址:微信支付 微信支付方式主要包括,對(duì)普通商家主要提供以下7種方式 付款碼支付:比如大

    2024年02月19日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包