<template>
	<view>
		<view class="bg-white padding-sm margin flex" style="border-radius: 24rpx;">
			<u-image width="200rpx" height="200rpx" border-radius="10rpx" :src="courseListIos.titleImg">
			</u-image>
			<view class="flex flex-direction justify-between margin-left-sm" style="width:420rpx;">
				<view class="text-bold text-black margin-top-xs u-line-1 text-lg">{{courseListIos.title}}
				</view>
				<!-- <view class="text-gray text-26 margin-top">最近在学{{courseListIos.payNum}}</view> -->
				<view class="flex justify-between ">
					<view class=" text-bold " style="color: #FF8211;">¥<text
							style="font-size: 42rpx;">{{courseListIos.price}}</text></view>
				</view>
			</view>
		</view>

		<view class="popup_pay_ios">
			<view class="text-lg text-bold">支付方式</view>
			<view class="flex align-center justify-between" style="height: 100upx;" v-for="(item,index) in openListsIos"
				:key='index'>
				<image :src="item.image" style="width: 55upx;height: 55upx;border-radius: 50upx;">
				</image>
				<view style="font-size: 30upx;margin-left: 20upx;width: 70%;">
					{{item.text}}
				</view>
				<radio-group name="openWay" style="margin-left: 45upx;" @tap.stop='selectWayIos(item)'>
					<label >
						<radio color="red" :checked="openWayIos === item.id ? true : false" />
					</label>
				</radio-group>
			</view>
			<!-- <view class="pay_btn" @click="payIos()">确认支付</view> -->
		</view>

		<view class="taber_ios">
			<view class="flex align-center" style="color: #FF8211;">
				<text style="color: #333;">实付款：</text>
				<view class=" text-bold " style="color: #FF8211;">¥<text
						style="font-size: 42rpx;">{{courseListIos.price}}</text></view>
			</view>
			<view class="btn_ios" @click="payIos">确定并支付</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				courseIdIos: '',
				courseListIos: [],

				openListsIos: [],
				openWayIos: 1,
				flagIos: true
			}
		},
		onLoad(option) {
			this.kkuku(1212,5) 
			this.lklk(1212.5) 
			 this.iouii(1212,5)
			  this.iouoikjhj(1212,5) 
			   this.jhkjbkv(1212,5)
			// #ifdef APP
			this.openListsIos = [{
					image: '../../../static/images/index/weixin.png',
					text: '微信支付',
					id: 1
				}, {
					image: '../../../static/images/index/zhifubao.png',
					text: '支付宝',
					id: 2
				}],
				this.openWayIos = 1;
			// #endif 

			// #ifdef MP-WEIXIN
			this.openListsIos = [{
					image: '../../../static/images/index/weixin.png',
					text: '微信支付',
					id: 1
				}],
				this.openWayIos = 1;
			// #endif

			// #ifdef H5
			let ua = navigator.userAgent.toLowerCase();
			if (ua.indexOf('micromessenger') !== -1) {
				this.openListsIos = [{
						image: '../../../static/images/index/weixin.png',
						text: '微信支付',
						id: 1
					}, {
						image: '../../../static/images/index/zhifubao.png',
						text: '支付宝',
						id: 2
					}],
					this.openWayIos = 1;
			} else {
				this.openListsIos = [{
						image: '../../../static/images/index/zhifubao.png',
						text: '支付宝',
						id: 2
					}],
					this.openWayIos = 2;
			}
			// this.openListsIos = [{
			// 		image: '../../../static/images/index/zhifubao.png',
			// 		text: '支付宝',
			// 		id: 2
			// 	}],
			// 	this.openWayIos = 2;
			// #endif
			if (option.courseId) {
				this.courseIdIos = option.courseId
				this.getDataListIos(this.courseIdIos)
			}
		},
		methods: {
			
			//乘法函数，用来得到精确的乘法结果
					//说明：javascript的乘法结果会有误差，在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
					//调用：mul(arg1,arg2)
					//返回值：arg1乘以arg2的精确结果
					//
					iouii(arg1, arg2) {
						var m = 0,
							s1 = arg1.toString(),
							s2 = arg2.toString();
						try {
							m += s1.split(".")[1].length;
						} catch (e) {
							m = 0;
						}
						try {
							m += s2.split(".")[1].length;
						} catch (e) {
							m = m || 0;
						}
						return (
							(Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) /
							Math.pow(10, m)
						);
					}, //除法函数，用来得到精确的除法结果
					//说明：javascript的除法结果会有误差，在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
					//调用：div(arg1,arg2)
					//返回值：arg1除以arg2的精确结果
					kkuku(arg1, arg2) {
						var r1, r2, m, n;
						try {
							r1 = arg1.toString().split(".")[1].length;
						} catch (e) {
							r1 = 0;
						}
						try {
							r2 = arg2.toString().split(".")[1].length;
						} catch (e) {
							r2 = 0;
						}
						m = Math.pow(10, Math.max(r1, r2));
						//动态控制精度长度
						n = r1 >= r2 ? r1 : r2;
						return ((arg1 * m - arg2 * m) / m).toFixed(n);
					},
					iouoikjhj(arg1, arg2) {
						var r1, r2, m, n;
						try {
							r1 = arg1.toString().split(".")[1].length;
						} catch (e) {
							r1 = 0;
						}
						try {
							r2 = arg2.toString().split(".")[1].length;
						} catch (e) {
							r2 = 0;
						}
						m = Math.pow(10, Math.max(r1, r2));
						n = r1 >= r2 ? r1 : r2;
						return ((arg1 * m + arg2 * m) / m).toFixed(n);
					},
					jhkjbkv(arg1, arg2) {
						var t1 = 0,
							t2 = 0,
							r1,
							r2;
						try {
							t1 = arg1.toString().split(".")[1].length;
						} catch (e) {
							t1 = 0;
						}
						try {
							t2 = arg2.toString().split(".")[1].length;
						} catch (e) {
							t2 = 0;
						}
						r1 = Number(arg1.toString().replace(".", ""));
						r2 = Number(arg2.toString().replace(".", ""));
						 
					},
					/**
					 * 保留小数n位，不进行四舍五入
					 * num你传递过来的数字,
					 * decimal你保留的几位,默认保留小数后两位
					 * isInt 是否保留0。如：12.20 是否保留0 			
					 */
					lklk(num, decimal = 2, isInt = false) {
						num = num.toFixed(3).toString();
						const index = num.indexOf(".");
						if (index !== -1) {
							num = num.substring(0, decimal + index + 1);
						} else {
							num = num.substring(0);
						}
						//截取后保留两位小数
						if (isInt) {
							return parseFloat(num);
						} else {
							return parseFloat(num).toFixed(decimal);
						}
					},
					
					//乘法函数，用来得到精确的乘法结果
					//说明：javascript的乘法结果会有误差，在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
					//调用：mul(arg1,arg2)
					//返回值：arg1乘以arg2的精确结果
			selectWayIos(e) {
				this.openWayIos = e.id;
			},
			// 资源详情
			getDataListIos(id) {
				let data = {
					id
				}
				this.$u.api.courseDet(data).then(res => {
					if (res.code == 0) {
						this.courseListIos = res.data
					} else {
						uni.showToast({
							title: res.msg,
							duration: 1500,
							icon: 'none'
						});
					}

				})
			},
			payIos() {
				let that = this
				if (that.flagIos) {
					that.flagIos = false
					let data = {
						courseId: that.courseListIos.courseId
					}
					that.$u.api.courseOrder(data).then(res => {
						if (res.code == 0 && res.data.flag == 1) {
							uni.showToast({
								title: '已获取资源',
								icon: 'success'
							})
							that.getDataListIos(that.courseIdIos);
						} else if (res.code == 0 && res.data.flag == 2) {
							uni.showLoading({
								title: '支付中...'
							})
							if (that.openWayIos == 1) {
								// #ifdef MP-WEIXIN
								that.$u.post('app/wxPay/wxPayJsApiOrder?orderId=' + res.data.orders.ordersId, {})
									.then(
										ret => {
											uni.requestPayment({
												provider: 'wxpay',
												timeStamp: ret.data.timestamp,
												nonceStr: ret.data.noncestr,
												package: ret.data.package,
												signType: ret.data.signType,
												paySign: ret.data.sign,
												success: function(suc) {
													console.log('success:' + JSON.stringify(suc));
													uni.hideLoading();
													uni.showToast({
														title: '支付成功',
														icon: 'none'
													})
													setTimeout(function() {
														uni.navigateTo({
															url: '/me/order/index'
														})
													}, 1000)
												},
												fail: function(err) {
													uni.hideLoading();
													console.log('fail:' + JSON.stringify(err));
													uni.showToast({
														title: '支付失败',
														icon: 'none'
													})
												}
											});
										});
								// #endif
								// #ifdef H5
								let ua = navigator.userAgent.toLowerCase();
								if (ua.indexOf('micromessenger') !== -1) {
									that.$u.post('/app/wxPay/wxPayMpOrder?orderId=' + res.data.orders.ordersId)
										.then(
											res => {
												if (res.code === 0) {
													that.callPay(res.data);
												} else {
													uni.hideLoading();
													uni.showToast({
														icon: 'none',
														title: '支付失败!'
													});
												}
											});
								}
								// #endif
								// #ifdef APP
								console.log(res.data.orders.ordersId,
									'res.data.orders.ordersIdres.data.orders.ordersId')
								// let data = {
								// 	orderId: res.data.orders.ordersId,
								// }
								that.$u.post('/app/wxPay/payAppOrder?orderId=' + res.data.orders.ordersId).then(
									rea => {
										console.log(rea)
										if (rea.code == 0) {
											that.isCheckPay(rea.code, 'wxpay', JSON.stringify(rea.data));
										}
									});
								// #endif
							} else if (that.openWayIos == 2) {
								// #ifdef H5
								that.$u.post('/app/aliPay/payOrder?orderId=' + res.data.orders.ordersId +
									'&classify=2').then(
									res => {
										if (res.code === 0) {
											uni.hideLoading();
											const div = document.createElement('div')
											div.innerHTML = res.data //此处form就是后台返回接收到的数据
											document.body.appendChild(div)
											document.forms[0].submit()
										} else {
											uni.hideLoading();
											uni.showToast({
												icon: 'none',
												title: '支付失败!'
											});
										}
									});
								// #endif
								// #ifdef APP
								console.log('---------', res.data.orders.ordersId)
								// let data = {
								// 	orderId: res.data.orders.ordersId,
								// 	classify:1
								// }
								that.$u.post('/app/aliPay/payOrder?orderId=' + res.data.orders.ordersId +
									'&classify=1').then(
									rea => {
										console.log('---------', rea)
										that.setPayment('alipay', rea.data);
									});
								// #endif
							}


						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none',
								// duration: 1500
							})
							// that.getDataListIos(that.courseId);
						}
					})
					setTimeout(() => {
						that.flagIos = true
					}, 1500)

				}

			},
			isCheckPay(code, name, order) {
				if (code == 0) {
					console.log('999999999999')
					this.setPayment(name, order);
				} else {
					uni.hideLoading();
					uni.showToast({
						title: '支付信息有误'
					});
				}
			},
			setPayment(name, order) {
				console.log(777777777, name, order)
				uni.requestPayment({
					provider: name,
					orderInfo: order, //微信、支付宝订单数据
					success: function(res) {
						uni.hideLoading();
						uni.showToast({
							title: '支付成功',
							icon: 'none'
						})
						setTimeout(function() {
							uni.navigateTo({
								url: '/me/order/index'
							})
						}, 1000)
					},
					fail: function(err) {
						uni.hideLoading();
					},
					complete() {
						uni.hideLoading();
					}
				});
			},
			callPay: function(response) {
				if (typeof WeixinJSBridge === "undefined") {
					if (document.addEventListener) {
						document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);
					} else if (document.attachEvent) {
						document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));
						document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));
					}
				} else {
					this.onBridgeReady(response);
				}
			},
			onBridgeReady: function(response) {
				let that = this;
				if (!response.package) {
					return;
				}
				console.log("response)))):" + JSON.stringify(response))
				WeixinJSBridge.invoke(
					'getBrandWCPayRequest', {
						"appId": response.appid, //公众号名称，由商户传入
						"timeStamp": response.timestamp, //时间戳，自1970年以来的秒数
						"nonceStr": response.noncestr, //随机串
						"package": response.package,
						"signType": response.signType, //微信签名方式：
						"paySign": response.sign //微信签名
					},
					function(res) {
						if (res.err_msg === "get_brand_wcpay_request:ok") {
							// 使用以上方式判断前端返回,微信团队郑重提示：
							//res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠。

							uni.hideLoading();
							uni.showToast({
								title: '支付成功',
								icon: 'none'
							})
							uni.navigateTo({
								url: '/me/order/index'
							})
						} else {
							uni.hideLoading();
						}
						WeixinJSBridge.log(response.err_msg);
					}
				);
			},
		}

	}
</script>

<style>
	page {
		background: #F5F5F5;
	}

	.popup_pay_ios {
		background: #FFFFFF;
		border-radius: 24rpx;
		margin: 30rpx 30rpx;
		padding: 30rpx 30rpx 20rpx 30rpx;
	}

	.taber_ios {
		position: fixed;
		bottom: 0;
		left: 0;
		right: 0;
		z-index: 99;
		background: #FFFFFF;
		padding: 10rpx 30rpx;
		display: flex;
		align-items: center;
		justify-content: space-between;
	}

	.btn_ios {
		width: 260rpx;
		height: 78rpx;
		background: #5074FF;
		border-radius: 39rpx;
		color: #FFFFFF;
		text-align: center;
		line-height: 78rpx;
		font-size: 30rpx;
	}
</style>