uni-app的支付与打包上传

支付app的支付(支付宝付)

准备工作

1.支付厂商获取id

获取支付厂商 uni.getProvider({service:"payment"})

2.微信:微信支付平台
https://pay.weixin.qq.com/
在这里插入图片描述3、打包 manifest.json app模块配置 payment支付
可以选择支付宝支付或者其他平台的支付

在这里插入图片描述

app的支付步骤

- 01 获取支付厂商:uni.getProvider()
uni.getProvider({service: "payment"})
- 02 用户发起支付
requestPayment(item,index){}
- 03 获取订单信息
getOrderInfo(item.id)
- 04 发起支付api

        uni.requestPayment({
           provider:item.id, //提供商
           orderInfo: orderInfo, //订单信息
        })

App支付宝支付完整代码

- template

<template>
	<view>
		<view class="title">支付</view>
	
		<view>
			支付金额:<input :value="price" maxlength="4" @input="priceChange" placeholder="请求输入支付金额" />
			<view>
				<!-- app支付 -->
				<!-- #ifdef APP-PLUS -->
			 
				<button size="mini" type="primary" v-for="(item,index) in providerList" :key="item.id" :loading="item.loading"  @click="requestPayment(item,index)">{{item.name}}支付</button>
				
			 
				<!-- #endif -->
				</view>
				
		</view>
	</view>
</template>

- script

<script>
	export default {
		data() {
			return {
				price:1,
				providerList: [], //支付厂商,微信,或者支付宝
				openid:'' ,//用户id
				loading:false,//小程序微信支付
			}
		},
		onLoad(){
			var that  = this;
			// 获取支付厂商
			uni.getProvider({
				service: "payment",
				success: (e) => {
					console.log(JSON.stringify(e))
					var provider = e.provider;
					// 映射一个格式(添加loading是否加载中)
					that.providerList = provider.map(item=>{
						if(item==="alipay"){
							return {
								name: '支付宝',
								id: item,
								loading: false
							}
						}else if(item==="wxpay"){
							return {
								name: '微信',
								id: item,
								loading: false
							}
						}
					})
				}
			})
		},
 
			// 实现支付
			async  requestPayment(item,index){
				// 显示加载中
				item.loading = true;
				// 获取订单信息
				let orderInfo = await this.getOrderInfo(item.id);
				// 发起支付
				uni.requestPayment({
					provider:item.id, //提供商
					orderInfo: orderInfo, //订单信息
					// 成功提示
					success: (e) => {
						console.log("success", e);
						uni.showToast({
							title: "感谢您的赞助!"
						})
					},
					// 失败
					fail: (e) => {
						console.log("fail", e);						 
					},
					// 停止加载中
					complete: () => {
					  item.loading = false;
					}
				})
				
			},
			// 获取订单信息
			getOrderInfo(provider) {
				// 返回一个promise
					return new Promise((resolve, reject) => {
						// 请求订单信息
						uni.request({
							method: 'POST',
							url: 'https://97fca9f2-41f6-449f-a35e-3f135d4c3875.bspapp.com/http/pay',
							data: {
								provider, //支付厂商
								openid: this.openid, //openid(微信支付用)
								totalFee: Number(this.price) * 100, // 转为以为单位 
								platform: 'app-plus', //平台
							},
							success(res) {
								if (res.data.code === 0) {
									// 返回订单信息
									resolve(res.data.orderInfo)
								} else {
									// 失败
									reject(new Error('获取支付信息失败' + res.data.msg))
								}
							},
							fail(err) {
								// 请求失败
								reject(new Error('请求支付接口失败' + err))
							}
					})
				})
			},
			priceChange(e){
				this.price = e.detail.value;
			}
		}
	}
</script>

小程序的支付

- 01 用户的点击 发起支付
async weixinPay()
- 02 获取openid

 本地存储 ||loginMpWeixin

     //获取code
     uni.login({})
      
     //获取openid
     uni.request({})

- 03 获取订单信息

 this.getOrderInfo('wxpay')

- 04 根据订单信息发起支付

    uni.requestPayment({
                        ...
    orderInfo})

微信支付完整代码

- template

<template>
 <view>
 	<view class="title">支付</view>
 
 	<view>
 		支付金额:<input :value="price" maxlength="4" @input="priceChange" placeholder="请求输入支付金额" />
 		<view>
 			<!-- 小程序支付 -->
 			<!-- #ifdef MP-WEIXIN -->
 			  <button type="primary" size="mini" @click="weixinPay" :loading="loading">小程序微信支付</button>
 			<!-- #endif -->
 			</view>
 			
 	</view>
 </view>
</template>

- script

<script>
  export default {
  	data() {
  		return {
  			price:1,
  			providerList: [], //支付厂商,微信,或者支付
  			openid:'' ,//用户id
  			loading:false,//小程序微信支付
  		}
  	},
  	onLoad(){
  		var that  = this;
  		// 获取支付厂商
  		uni.getProvider({
  			service: "payment",
  			success: (e) => {
  				console.log(JSON.stringify(e))
  				var provider = e.provider;
  				// 映射一个格式(添加loading是否加载中)
  				that.providerList = provider.map(item=>{
  					if(item==="alipay"){
  						return {
  							name: '支付宝',
  							id: item,
  							loading: false
  						}
  					}else if(item==="wxpay"){
  						return {
  							name: '微信',
  							id: item,
  							loading: false
  						}
  					}
  				})
  			}
  		})
  	},
  	methods: {
  		async weixinPay(){
  			this.loading = true;//加载中
  			// 获取openid
  			let openid = uni.getStorageSync('openid')
  			if(!openid){
  				// 执行登录获取openid
  				openid = await this.loginMpWeixin();
  				this.openid = openid;
  				if (!openid) {
  					uni.showModal({
  						content: '获取openid失败',
  						showCancel: false
  					})
  					this.loading = false
  					return
  				}
  			}
  			// 获取订单信息
  			let orderInfo = await this.getOrderInfo('wxpay')
  			// 如果没有订单信息,弹出订单信息失败
  			if (!orderInfo) {
  				uni.showModal({
  					content: '获取支付信息失败',
  					showCancel: false
  				})
  				return
  			}
  			// 发起支付
  			uni.requestPayment({
  				...orderInfo,
  				// 成功
  				success: (res) => {
  					uni.showToast({
  						title: "感谢您的赞助!"
  					})
  				},
  				// 失败
  				fail: (res) => {
  					uni.showModal({
  						content: "支付失败,原因为: " + res
  							.errMsg,
  						showCancel: false
  					})
  				},
  				// 移除loading
  				complete: () => {
  					this.loading = false;
  				}
  			})
  		},
  		loginMpWeixin(){
  			// 返回一个promise
  			return new Promise((resolve,reject)=>{
  				uni.login({
  					provider: 'weixin',
  					success(res) {
  						// login成功会得到一个code
  						// 请求后端的登录
  						uni.request({
  							url: 'https://97fca9f2-41f6-449f-a35e-3f135d4c3875.bspapp.com/http/user-center',
  							method: 'POST',
  							data: {
  								action: 'loginByWeixin',
  								params: {
  									code: res.code, // 传入code
  									platform: 'mp-weixin'
  								}
  							},
  							success(res) {
  								if (res.data.code !== 0) {
  									reject(new Error('res获取openid失败:', res))
  									return
  								}
  								// 成功后存储opendi
  								uni.setStorageSync('openid', res.data.openid)
  								// 返回openid
  								resolve(res.data.openid)
  							},
  							fail(err) {
  								reject(new Error('获取openid失败:' + err))
  							}
  						})
  					}	
  				})
  			})
  		},
  		// 实现支付
  		async  requestPayment(item,index){
  			// 显示加载中
  			item.loading = true;
  			// 获取订单信息
  			let orderInfo = await this.getOrderInfo(item.id);
  			// 发起支付
  			uni.requestPayment({
  				provider:item.id, //提供商
  				orderInfo: orderInfo, //订单信息
  				// 成功提示
  				success: (e) => {
  					console.log("success", e);
  					uni.showToast({
  						title: "感谢您的赞助!"
  					})
  				},
  				// 失败
  				fail: (e) => {
  					console.log("fail", e);						 
  				},
  				// 停止加载中
  				complete: () => {
  				  item.loading = false;
  				}
  			})
  			
  		},
  		// 获取订单信息
  		getOrderInfo(provider) {
  			// 返回一个promise
  				return new Promise((resolve, reject) => {
  					// 请求订单信息
  					uni.request({
  						method: 'POST',
  						url: 'https://97fca9f2-41f6-449f-a35e-3f135d4c3875.bspapp.com/http/pay',
  						data: {
  							provider, //支付厂商
  							openid: this.openid, //openid(微信支付用)
  							totalFee: Number(this.price) * 100, // 转为以为单位 
  							platform: 'app-plus', //平台
  						},
  						success(res) {
  							if (res.data.code === 0) {
  								// 返回订单信息
  								resolve(res.data.orderInfo)
  							} else {
  								// 失败
  								reject(new Error('获取支付信息失败' + res.data.msg))
  							}
  						},
  						fail(err) {
  							// 请求失败
  							reject(new Error('请求支付接口失败' + err))
  						}
  				})
  			})
  		},
  		priceChange(e){
  			this.price = e.detail.value;
  		}
  	}
  }
</script>

打包html代码上传服务

  • 配置相对地址=>manifest.json=>web配置
    • 运行的基础路径为 ./
  • 发行=>发到网站-PC
  • 通过flashFXP工具上传服务器:unpackage>dist>build>H5

打包微信小程序上传

  • 01 配置id
    manifest.json 微信小程序配置
  • 02 单击发行
    发行=>小程序微信
  • 03 进入小程序上传
    小程序右上角上传(先测试,真机测试)
  • 04 微信提交审核mp.weixin.qq.com
  • 05 如果有网络请求需要配置域名且必须是https开头
  • 开发管理
    • 服务器设置
    • 服务器域名
  • request合法域名
    uni.request,wx.request 请求的域名必须事先定义好
  • 如果有上传也要配置上传的域名
    uploadFile合法域名
  • 配置下载域名
    downloadFile合法域名

如果想搞钱用户累积量达到1000

1. 累计用户操作1000 可以称为流量主
开通广告(视频激励广告最挣钱)

  • 定义
    let rewardedVideoAd = null
    部分代码
    在这里插入图片描述在这里插入图片描述

App打包上传应用商店

  • 应用商店
    • 华为
    • opple
    • vivo
    • 小米
  • 现在只有华为可以个人上传其他都必须是公司
  • 个人上传
    需要app的版权证明(600-1500)
  • 最难的是:应付国家的隐私条例和应用商店的隐私审核

打包上传选项配置

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

打包配置

在这里插入图片描述

解决谷歌浏览器安全策略问题

  • 将谷歌浏览器进行桌面备份
  • 在目标地址结尾添加--disable-web-security --user-data-dir=C:\mydir
  • 示例
  • "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir=C:\mydir
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值