uni-app使用vue3、ts小程序如何微信分享到朋友和朋友圈

本文章向大家介绍uniapp 微信小程序实现微信分享,主要包括uniapp 微信小程序实现微信分享使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

实际使用中,经常需要小程序分享到好友或者朋友圈,一般而言是一个个页面去设置。

官网分享介绍:分享 | uni-app官网

uniapp微信分享使用uni.showShareMenu(小程序的原生菜单中显示分享按钮)、onShareAppMessage(发送给朋友) 、onShareTimeline(分享到朋友圈)

一、微信小程序:在uni-app vue2中我们想要分享到朋友或朋友圈:

1、分享给好友

onShareAppMessage(res) {
			this.shareShow = 0
			if (res.from === 'button') { // 来自页面内分享按
				var urlShare = '/pages/template/index?uid='+this.userData.uid
				// var imageUrl = ""
				return {
					title: '养居益健康管理!',//分享标题
					imageUrl: imageUrl,//分享图片
					path: urlShare,//分享地址
					success: function (res) {
						// 转发成功
					},
					fail: function (res) {
						// 转发失败
					}
				}
			}else{
				return {
					title: '养居益健康管理!',
					imageUrl: "",
					path: '/pages/template/index',
					success: res => {
						
					},
					fail: err => {
					}
				}
			}
		},

2、分享到朋友圈

onShareTimeline(){
	return {
	    title: '雅歌洗化,不辜负每一份热爱', //分享标题
		query: 'share='+state.share , // 可不填 传递的参数,只能是这种格式
	    imageUrl: urlImg //封面图
	}
}

二、H5微信分享:在uni-app vue2中我们想要分享到朋友或朋友圈

1、首先从后台获取我们需要的分享参数:

{
"signature":"cd0bf0dffbdb8e0280ewww430df0d3",
"appId":"wx69112311111112222a",
"nonceStr":"6115adfa023948b3",
"timestamp":"1662347725"
}

2、引入jswx.js。源码如下:

!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(e):"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(window,function(o,e){function c(n,e,i){o.WeixinJSBridge?WeixinJSBridge.invoke(n,r(e),function(e){a(n,e,i)}):d(n,i)}function i(n,i,t){o.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t.trigger&&t.trigger(e),a(n,e,i)}):d(n,t||i)}function r(e){return(e=e||{}).appId=M.appId,e.verifyAppId=M.appId,e.verifySignType="sha1",e.verifyTimestamp=M.timestamp+"",e.verifyNonceStr=M.nonceStr,e.verifySignature=M.signature,e}function n(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,package:e.package,paySign:e.paySign,signType:e.signType||"SHA1"}}function a(e,n,i){"openEnterpriseChat"==e&&(n.errCode=n.err_code),delete n.err_code,delete n.err_desc,delete n.err_detail;var t=n.errMsg;t||(t=n.err_msg,delete n.err_msg,t=function(e,n){var i=e,t=f[i];t&&(i=t);var o="ok";if(n){var r=n.indexOf(":");"confirm"==(o=n.substring(r+1))&&(o="ok"),"failed"==o&&(o="fail"),-1!=o.indexOf("failed_")&&(o=o.substring(7)),-1!=o.indexOf("fail_")&&(o=o.substring(5)),"access denied"!=(o=(o=o.replace(/_/g," ")).toLowerCase())&&"no permission to execute"!=o||(o="permission denied"),"config"==i&&"function not exist"==o&&(o="ok"),""==o&&(o="fail")}return n=i+":"+o}(e,t),n.errMsg=t),(i=i||{})._complete&&(i._complete(n),delete i._complete),t=n.errMsg||"",M.debug&&!i.isInnerInvoke&&alert(JSON.stringify(n));var o=t.indexOf(":");switch(t.substring(o+1)){case"ok":i.success&&i.success(n);break;case"cancel":i.cancel&&i.cancel(n);break;default:i.fail&&i.fail(n)}i.complete&&i.complete(n)}function s(e){if(e){for(var n=0,i=e.length;n<i;++n){var t=e[n],o=p[t];o&&(e[n]=o)}return e}}function d(e,n){if(!(!M.debug||n&&n.isInnerInvoke)){var i=f[e];i&&(e=i),n&&n._complete&&delete n._complete,console.log('"'+e+'",',n||"")}}function l(){return(new Date).getTime()}function u(e){I&&(o.WeixinJSBridge?e():t.addEventListener&&t.addEventListener("WeixinJSBridgeReady",e,!1))}if(!o.jWeixin){var p={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},f=function(){var e={};for(var n in p)e[p[n]]=n;return e}(),t=o.document,m=t.title,g=navigator.userAgent.toLowerCase(),h=navigator.platform.toLowerCase(),v=!(!h.match("mac")&&!h.match("win")),S=-1!=g.indexOf("wxdebugger"),I=-1!=g.indexOf("micromessenger"),y=-1!=g.indexOf("android"),_=-1!=g.indexOf("iphone")||-1!=g.indexOf("ipad"),w=(O=g.match(/micromessenger\/(\d+\.\d+\.\d+)/)||g.match(/micromessenger\/(\d+\.\d+)/))?O[1]:"",k={initStartTime:l(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},T={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:_?1:y?2:-1,clientVersion:w,url:encodeURIComponent(location.href)},M={},P={_completes:[]},x={state:0,data:{}};u(function(){k.initEndTime=l()});var A=!1,V=[],C={config:function(e){d("config",M=e);var t=!1!==M.check;u(function(){if(t)c(p.config,{verifyJsApiList:s(M.jsApiList)},function(){P._complete=function(e){k.preVerifyEndTime=l(),x.state=1,x.data=e},P.success=function(e){T.isPreVerifyOk=0},P.fail=function(e){P._fail?P._fail(e):x.state=-1};var t=P._completes;return t.push(function(){!function(e){if(!(v||S||M.debug||w<"6.0.2"||T.systemType<0)){var i=new Image;T.appId=M.appId,T.initTime=k.initEndTime-k.initStartTime,T.preVerifyTime=k.preVerifyEndTime-k.preVerifyStartTime,C.getNetworkType({isInnerInvoke:!0,success:function(e){T.networkType=e.networkType;var n="https://open.weixin.qq.com/sdk/report?v="+T.version+"&o="+T.isPreVerifyOk+"&s="+T.systemType+"&c="+T.clientVersion+"&a="+T.appId+"&n="+T.networkType+"&i="+T.initTime+"&p="+T.preVerifyTime+"&u="+T.url;i.src=n}})}}()}),P.complete=function(e){for(var n=0,i=t.length;n<i;++n)t[n]();P._completes=[]},P}()),k.preVerifyStartTime=l();else{x.state=1;for(var e=P._completes,n=0,i=e.length;n<i;++n)e[n]();P._completes=[]}}),C.invoke||(C.invoke=function(e,n,i){o.WeixinJSBridge&&WeixinJSBridge.invoke(e,r(n),i)},C.on=function(e,n){o.WeixinJSBridge&&WeixinJSBridge.on(e,n)})},ready:function(e){0!=x.state?e():(P._completes.push(e),!I&&M.debug&&e())},error:function(e){w<"6.0.2"||(-1==x.state?e(x.data):P._fail=e)},checkJsApi:function(e){c("checkJsApi",{jsApiList:s(e.jsApiList)},(e._complete=function(e){if(y){var n=e.checkResult;n&&(e.checkResult=JSON.parse(n))}e=function(e){var n=e.checkResult;for(var i in n){var t=f[i];t&&(n[t]=n[i],delete n[i])}return e}(e)},e))},onMenuShareTimeline:function(e){i(p.onMenuShareTimeline,{complete:function(){c("shareTimeline",{title:e.title||m,desc:e.title||m,img_url:e.imgUrl||"",link:e.link||location.href,type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareAppMessage:function(n){i(p.onMenuShareAppMessage,{complete:function(e){"favorite"===e.scene?c("sendAppMessage",{title:n.title||m,desc:n.desc||"",link:n.link||location.href,img_url:n.imgUrl||"",type:n.type||"link",data_url:n.dataUrl||""}):c("sendAppMessage",{title:n.title||m,desc:n.desc||"",link:n.link||location.href,img_url:n.imgUrl||"",type:n.type||"link",data_url:n.dataUrl||""},n)}},n)},onMenuShareQQ:function(e){i(p.onMenuShareQQ,{complete:function(){c("shareQQ",{title:e.title||m,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareWeibo:function(e){i(p.onMenuShareWeibo,{complete:function(){c("shareWeiboApp",{title:e.title||m,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareQZone:function(e){i(p.onMenuShareQZone,{complete:function(){c("shareQZone",{title:e.title||m,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},updateTimelineShareData:function(e){c("updateTimelineShareData",{title:e.title,link:e.link,imgUrl:e.imgUrl},e)},updateAppMessageShareData:function(e){c("updateAppMessageShareData",{title:e.title,desc:e.desc,link:e.link,imgUrl:e.imgUrl},e)},startRecord:function(e){c("startRecord",{},e)},stopRecord:function(e){c("stopRecord",{},e)},onVoiceRecordEnd:function(e){i("onVoiceRecordEnd",e)},playVoice:function(e){c("playVoice",{localId:e.localId},e)},pauseVoice:function(e){c("pauseVoice",{localId:e.localId},e)},stopVoice:function(e){c("stopVoice",{localId:e.localId},e)},onVoicePlayEnd:function(e){i("onVoicePlayEnd",e)},uploadVoice:function(e){c("uploadVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadVoice:function(e){c("downloadVoice",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},translateVoice:function(e){c("translateVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},chooseImage:function(e){c("chooseImage",{scene:"1|2",count:e.count||9,sizeType:e.sizeType||["original","compressed"],sourceType:e.sourceType||["album","camera"]},(e._complete=function(e){if(y){var n=e.localIds;try{n&&(e.localIds=JSON.parse(n))}catch(e){}}},e))},getLocation:function(e){},previewImage:function(e){c(p.previewImage,{current:e.current,urls:e.urls},e)},uploadImage:function(e){c("uploadImage",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadImage:function(e){c("downloadImage",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},getLocalImgData:function(e){!1===A?(A=!0,c("getLocalImgData",{localId:e.localId},(e._complete=function(e){if(A=!1,0<V.length){var n=V.shift();wx.getLocalImgData(n)}},e))):V.push(e)},getNetworkType:function(e){c("getNetworkType",{},(e._complete=function(e){e=function(e){var n=e.errMsg;e.errMsg="getNetworkType:ok";var i=e.subtype;if(delete e.subtype,i)e.networkType=i;else{var t=n.indexOf(":"),o=n.substring(t+1);switch(o){case"wifi":case"edge":case"wwan":e.networkType=o;break;default:e.errMsg="getNetworkType:fail"}}return e}(e)},e))},openLocation:function(e){c("openLocation",{latitude:e.latitude,longitude:e.longitude,name:e.name||"",address:e.address||"",scale:e.scale||28,infoUrl:e.infoUrl||""},e)},getLocation:function(e){c(p.getLocation,{type:(e=e||{}).type||"wgs84"},(e._complete=function(e){delete e.type},e))},hideOptionMenu:function(e){c("hideOptionMenu",{},e)},showOptionMenu:function(e){c("showOptionMenu",{},e)},closeWindow:function(e){c("closeWindow",{},e=e||{})},hideMenuItems:function(e){c("hideMenuItems",{menuList:e.menuList},e)},showMenuItems:function(e){c("showMenuItems",{menuList:e.menuList},e)},hideAllNonBaseMenuItem:function(e){c("hideAllNonBaseMenuItem",{},e)},showAllNonBaseMenuItem:function(e){c("showAllNonBaseMenuItem",{},e)},scanQRCode:function(e){c("scanQRCode",{needResult:(e=e||{}).needResult||0,scanType:e.scanType||["qrCode","barCode"]},(e._complete=function(e){if(_){var n=e.resultStr;if(n){var i=JSON.parse(n);e.resultStr=i&&i.scan_code&&i.scan_code.scan_result}}},e))},openAddress:function(e){c(p.openAddress,{},(e._complete=function(e){var n;(n=e).postalCode=n.addressPostalCode,delete n.addressPostalCode,n.provinceName=n.proviceFirstStageName,delete n.proviceFirstStageName,n.cityName=n.addressCitySecondStageName,delete n.addressCitySecondStageName,n.countryName=n.addressCountiesThirdStageName,delete n.addressCountiesThirdStageName,n.detailInfo=n.addressDetailInfo,delete n.addressDetailInfo,e=n},e))},openProductSpecificView:function(e){c(p.openProductSpecificView,{pid:e.productId,view_type:e.viewType||0,ext_info:e.extInfo},e)},addCard:function(e){for(var n=e.cardList,i=[],t=0,o=n.length;t<o;++t){var r=n[t],a={card_id:r.cardId,card_ext:r.cardExt};i.push(a)}c(p.addCard,{card_list:i},(e._complete=function(e){var n=e.card_list;if(n){for(var i=0,t=(n=JSON.parse(n)).length;i<t;++i){var o=n[i];o.cardId=o.card_id,o.cardExt=o.card_ext,o.isSuccess=!!o.is_succ,delete o.card_id,delete o.card_ext,delete o.is_succ}e.cardList=n,delete e.card_list}},e))},chooseCard:function(e){c("chooseCard",{app_id:M.appId,location_id:e.shopId||"",sign_type:e.signType||"SHA1",card_id:e.cardId||"",card_type:e.cardType||"",card_sign:e.cardSign,time_stamp:e.timestamp+"",nonce_str:e.nonceStr},(e._complete=function(e){e.cardList=e.choose_card_info,delete e.choose_card_info},e))},openCard:function(e){for(var n=e.cardList,i=[],t=0,o=n.length;t<o;++t){var r=n[t],a={card_id:r.cardId,code:r.code};i.push(a)}c(p.openCard,{card_list:i},e)},consumeAndShareCard:function(e){c(p.consumeAndShareCard,{consumedCardId:e.cardId,consumedCode:e.code},e)},chooseWXPay:function(e){c(p.chooseWXPay,n(e),e)},openEnterpriseRedPacket:function(e){c(p.openEnterpriseRedPacket,n(e),e)},startSearchBeacons:function(e){c(p.startSearchBeacons,{ticket:e.ticket},e)},stopSearchBeacons:function(e){c(p.stopSearchBeacons,{},e)},onSearchBeacons:function(e){i(p.onSearchBeacons,e)},openEnterpriseChat:function(e){c("openEnterpriseChat",{useridlist:e.userIds,chatname:e.groupName},e)},launchMiniProgram:function(e){c("launchMiniProgram",{targetAppId:e.targetAppId,path:function(e){if("string"==typeof e&&0<e.length){var n=e.split("?")[0],i=e.split("?")[1];return n+=".html",void 0!==i?n+"?"+i:n}}(e.path),envVersion:e.envVersion},e)},miniProgram:{navigateBack:function(e){e=e||{},u(function(){c("invokeMiniProgramAPI",{name:"navigateBack",arg:{delta:e.delta||1}},e)})},navigateTo:function(e){u(function(){c("invokeMiniProgramAPI",{name:"navigateTo",arg:{url:e.url}},e)})},redirectTo:function(e){u(function(){c("invokeMiniProgramAPI",{name:"redirectTo",arg:{url:e.url}},e)})},switchTab:function(e){u(function(){c("invokeMiniProgramAPI",{name:"switchTab",arg:{url:e.url}},e)})},reLaunch:function(e){u(function(){c("invokeMiniProgramAPI",{name:"reLaunch",arg:{url:e.url}},e)})},postMessage:function(e){u(function(){c("invokeMiniProgramAPI",{name:"postMessage",arg:e.data||{}},e)})},getEnv:function(e){u(function(){e({miniprogram:"miniprogram"===o.__wxjs_environment})})}}},L=1,B={};return t.addEventListener("error",function(e){if(!y){var n=e.target,i=n.tagName,t=n.src;if(("IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i)&&-1!=t.indexOf("wxlocalresource://")){e.preventDefault(),e.stopPropagation();var o=n["wx-id"];if(o||(o=L++,n["wx-id"]=o),B[o])return;B[o]=!0,wx.ready(function(){wx.getLocalImgData({localId:t,success:function(e){n.src=e.localData}})})}}},!0),t.addEventListener("load",function(e){if(!y){var n=e.target,i=n.tagName;if(n.src,"IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i){var t=n["wx-id"];t&&(B[t]=!1)}}},!0),e&&(o.wx=o.jWeixin=C),C}var O});

3、引入jswx.js

//#ifdef H5
import jweixin from 'jswx.js'
//#endif

const config = {

    //#ifdef H5

    let msgShare = {
	    title:"联盟筹备分享会 ",
	    desc:"联盟筹备分享会 ",
	    url:"",
	    imgurl:staticImg+"WechatIMG7782.png"
    }
    
    jweixin.config({
		debug: false,
		appId: data.appId,
		timestamp: data.timestamp,
		nonceStr: data.nonceStr,
		signature: data.signature,
		jsApiList: [
           "onMenuShareTimeline", 
           "onMenuShareAppMessage", 
           "onMenuShareQQ"
        ]
	});

    jweixin.ready(function() {
		//获取“分享给朋友”
		jweixin.onMenuShareAppMessage({
			title: msgShare.title,
			desc: msgShare.desc,
			link: msgShare.url,
			imgUrl: msgShare.imgurl,
			type: '', // 分享类型,music、video或link,不填默认为link
			dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
			success: function() {

				}
			})
		//获取“分享到朋友圈”
		jweixin.onMenuShareTimeline({
			title: msgShare.title,
			desc: msgShare.desc,
			link: msgShare.url,
			imgUrl: msgShare.imgurl,
			type: '', // 分享类型,music、video或link,不填默认为link
			dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
			success: function() {

			}
		})
	})

    //#endif


}

三、微信小程序:在uni-app vue3、ts中我们想要分享到朋友或朋友圈:

1、首先我们需要引入API

import {  onLoad, onShow, onHide ,onShareAppMessage,onShareTimeline} from '@dcloudio/uni-app'

2、当页面每次出现时

onShow(() => {
	wx.updateShareMenu({
	  withShareTicket: true,
	  success () { }
	})
	
})

3、开始使用

let urlImg  = ''
onShareAppMessage((res) => {
	console.log(res)
	if (res.from === 'button') {
		// 来自页面内分享按
		return {
			title: "雅歌洗化,不辜负每一份热爱",
			path: '/pages/template/index'+state.share ,
			imageUrl: urlImg,
			success: function(res) {
				// 转发成功
			},
			fail: function(res) {
				// 转发失败
			}
		};
	} else {
		return {
			title: "雅歌洗化,不辜负每一份热爱",
			path: '/pages/template/index?share='+state.share ,
			imageUrl: urlImg,
			success: res => {
			},
			fail: err => {
			}
		};
	}
})
onShareTimeline(() => {
	return {
	    title: '雅歌洗化,不辜负每一份热爱',
		query: 'share='+state.share , // 可不填 传递的参数,只能是这种格式
	    imageUrl: urlImg
	}
})

4、完整代码如下

<template>
  <view class="container" >
    <text>uni-app vue3+ ts 微信分享</text>
  </view>
</template>

<script setup lang="ts">
import {  onLoad, onShow, ,onShareAppMessage,onShareTimeline} from '@dcloudio/uni-app'


let urlImg  = ''
onShareAppMessage((res) => {
	console.log(res)
	if (res.from === 'button') {
		// 来自页面内分享按
		return {
			title: "雅歌洗化,不辜负每一份热爱",
			path: '/pages/template/index'+state.share ,
			imageUrl: urlImg,
			success: function(res) {
				// 转发成功
			},
			fail: function(res) {
				// 转发失败
			}
		};
	} else {
		return {
			title: "雅歌洗化,不辜负每一份热爱",
			path: '/pages/template/index?share='+state.share ,
			imageUrl: urlImg,
			success: res => {
			},
			fail: err => {
			}
		};
	}
})
onShareTimeline(() => {
	return {
	    title: '雅歌洗化,不辜负每一份热爱',
		 query: 'share='+state.share , // 可不填 传递的参数,只能是这种格式
	    imageUrl: urlImg
	}
})


onReachBottom(() => {

})

onLoad((options) => {
	
})
onShow(() => {
	wx.updateShareMenu({
	  withShareTicket: true,
	  success () { }
	})
	
})



</script>

<style lang="scss" scoped>

</style>

uni-app 是一款基于 Vue.js 的跨平台开发框架,支持同时开发微信小程序、H5、App 等多个平台,使用 Vue3 和 TypeScript 语法的 setup 语法糖可以更方便地编写组件逻辑。关于上滑加载下拉刷新的列表页面,可以使用 uni-app 内置的组件 `uni-list` 和 `uni-scroll-view` 来实现。 首先,使用 `uni-list` 组件来呈现列表数据,例如: ```html <template> <uni-list> <uni-list-item v-for="(item, index) in list" :key="index"> {{ item }} </uni-list-item> </uni-list> </template> ``` 然后,在 `uni-scroll-view` 组件中监听 `scrolltolower` 事件,当滚动到底部时触发加载更多数据的逻辑,例如: ```html <template> <uni-scroll-view class="list-wrapper" :scroll-y="true" @scrolltolower="loadMore"> <uni-list> <uni-list-item v-for="(item, index) in list" :key="index"> {{ item }} </uni-list-item> </uni-list> </uni-scroll-view> </template> <script setup lang="ts"> import { ref } from 'vue'; const list = ref<string[]>([]); function loadMore() { // 加载更多数据的逻辑 } </script> ``` 对于下拉刷新,可以使用 `uni-scroll-view` 组件的 `enable-flex` 属性启用弹性布局,然后监听 `scrolltoupper` 事件,在事件处理函数中执行刷新数据的逻辑,例如: ```html <template> <uni-scroll-view class="list-wrapper" :scroll-y="true" :enable-flex="true" @scrolltoupper="refresh"> <uni-list> <uni-list-item v-for="(item, index) in list" :key="index"> {{ item }} </uni-list-item> </uni-list> </uni-scroll-view> </template> <script setup lang="ts"> import { ref } from 'vue'; const list = ref<string[]>([]); function loadMore() { // 加载更多数据的逻辑 } function refresh() { // 刷新数据的逻辑 } </script> ``` 需要注意的是,上滑加载和下拉刷新的具体实现逻辑可能有所不同,具体可以根据实际情况进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖奶奶与胖小伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值