<template>
	<view>
		<view class="block">
			<view class="content">
				<view class="my">
					充值账号
				</view>
				<input class="my" disabled="true" style="border-bottom: solid 1upx #eee;" placeholder="请输入充值账号"
					v-model="cardId" />
			</view>
		</view>
		<view class="block">
			<view class="title">
				充值金额
			</view>
			<view class="content">
				<view class="amount">
					<view class="list">
						<view class="box" v-for="(amount,index) in amountList" :key="index" @tap="select(amount)"
							:class="{'on':amount == inputAmount}">
							{{amount}}元
						</view>
					</view>
					<!-- <view class="num">
						<view class="text">
							自定义充值金额
						</view>
						<view class="input">
							<input type="number" maxlength="4" v-model="inputAmount" />
						</view>
					</view> -->
				</view>
			</view>
		</view>
		<view class="block">
			<view class="title">
				选择支付方式
			</view>
			<view class="content">
				<view class="pay-list" v-for="(item,index) in paytypeList" :key="index">
					<view class="row" @tap="paytype='2'" v-if="item == 2">
						<view class="left">
							<image :src="imagewxUrl+imgadres"></image>
						</view>
						<view class="center">
							微信支付
						</view>
						<view class="right">
							<radio :checked="paytype=='2'" color="#0083f5" />
						</view>
					</view>
				</view>
			</view>
		</view>
		<view class="pay">
			<button class="btn" @tap="doDeposit">立即充值</button>
			<view class="tis">
				点击立即充值，即代表您同意<view class="terms">
					《条款协议》
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	let app = getApp()
	import {
		create,
		wechatPay,
		getHuiLianTongCardBalance,
		getThirdPartyByDetail
	} from "../../Utils/Api.js";
	// #ifdef H5
	var jweixin = require('jweixin-module');
	// #endif
	export default {
		data() {
			return {
				inputAmount: '', //金额
				amountList: [50, 100, 150], //预设3个可选快捷金额
				paytype: '2', //支付类型
				user: "",
				imagewxUrl: app.globalData.imageWxImg,
				imgadres: 'wxpay.png',
				tongCardPrice: 0,
				cardId: '', //工会卡号
				typevas: '',
				paytypeList: [] //支付方式
			};
		},
		onLoad(options) {
			this.cardId = options.cardId;
			this.typevas = options.RechargeType;
		},
		onShow() {
			this.user = app.globalData.userInfo;
			this.getThirdPartyByDetail();
		},
		methods: {
			select(amount) {
				this.inputAmount = amount;
			},
			//查询支付方式
			getThirdPartyByDetail() {
				// #ifdef H5
				this.showType = 2;
				// #endif
				// #ifdef MP
				this.showType = 1;
				// #endif
				let datas = {
					platformId: this.showType,
					"companyId": app.globalData.companyId,
					productType: 8
				}
				getThirdPartyByDetail(datas).then(res => {
					if (res.return_code == '000000') {
						this.paytypeList = res.return_data.productPayType.split(',');
						this.paytypeList = this.paytypeList.slice(0, this.paytypeList.length - 1);
					}
				});
			},
			doDeposit() {
				if (!this.cardId) {
					uni.showToast({
						title: '请输入充值工会卡',
						icon: 'none',
						duration: 2000
					});
					return;
				}
				// if (parseFloat(this.inputAmount).toString() == "NaN") {
				// 	uni.showToast({
				// 		title: '请输入正确金额',
				// 		icon: 'none',
				// 		duration: 2000
				// 	});
				// 	return;
				// }
				// if (this.inputAmount <= 0) {
				// 	uni.showToast({
				// 		title: '请输入大于0的金额',
				// 		icon: 'none',
				// 		duration: 2000
				// 	});
				// 	return;
				// }
				// if (this.inputAmount > 2000) {
				// 	uni.showToast({
				// 		title: '充值金额不能超过大于2000',
				// 		icon: 'none',
				// 		duration: 2000
				// 	});
				// 	return;
				// }
				// if (parseFloat(this.inputAmount).toFixed(2) != parseFloat(this.inputAmount)) {
				// 	uni.showToast({
				// 		title: '最多只能输入两位小数哦~',
				// 		icon: 'none',
				// 		duration: 2000
				// 	});
				// 	return;
				// }				
				uni.showLoading({
					title: '正在提交订单...'
				})
				let datas = {
					"childOrderList": [{
						"goodsId": app.globalData.userInfo.id,
						"goodsPrice": this.inputAmount,
						"goodsType": 8,
						"saleCount": 1,
						"companyId": app.globalData.companyId,
						goodsSpecName: this.cardId
					}]
				}

				let that = this;
				create(datas).then(res => {
					uni.hideLoading();
					if (res.return_code == '000000') {
						//模板模拟支付，实际应用请调起微信/支付宝
						// #ifdef H5
						let params = {
							"orderNo": res.return_data.orderNo,
							"openId": app.globalData.openId,
							"openIdType": 2
						}
						// #endif
						// #ifdef MP
						let params = {
							"orderNo": res.return_data.orderNo,
							"openId": app.globalData.openId,
							"openIdType": 1
						}
						// #endif
						wechatPay(params).then(res => {
							if (res.return_code == '000000') {
								// #ifdef MP
								uni.showLoading({
									title: '支付中...'
								})
								uni.requestPayment({
									"appId": res.return_data.appId,
									"nonceStr": res.return_data.nonceStr,
									"package": res.return_data.package,
									"paySign": res.return_data.sign,
									"signType": "MD5",
									"timeStamp": res.return_data.timeStamp,
									success: function(res) {
										uni.hideLoading();
										uni.showToast({
											icon: 'none',
											title: '支付成功',
											duration: 2000,
											success() {
												setTimeout(() => {
													if (that.typevas ==
														'Hlt') {
														uni.navigateTo({
															url: '../union-card-success/union-card-success?price=' +
																that.inputAmount
														})
													} else {
														uni.navigateBack({})
													}
												}, 1000)
											}
										});
									},
									fail: function(err) {
										uni.hideLoading();
										console.log('fail:' + JSON.stringify(err));
									}
								});
								// #endif

								//判断是否是公众号
								// #ifdef H5
								//判断微信浏览器
								this.payRequest(res);
								// #endif
							} else {
								uni.showToast({
									title: '支付失败',
									duration: 2000,
									icon: 'none'
								})
							}
						})


					} else {
						uni.showToast({
							title: res.return_msg,
							icon: 'none',
							duration: 2000
						});
					}
				})
			},
			payRequest: function(self) {
				uni.showLoading({
					title: '支付中...'
				})
				jweixin.config({
					// debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
					appId: self.return_data.appId, // 必填，公众号的唯一标识
					timestamp: self.return_data.timeStamp, // 必填，生成签名的时间戳
					nonceStr: self.return_data.nonceStr, // 必填，生成签名的随机串
					signature: self.return_data.sign, // 必填，签名，见附录1
					jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
				});
				uni.hideLoading();
				jweixin.ready(function() {
					jweixin.checkJsApi({
						jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表，所有JS接口列表见附录2,
						success: function(res) {},
						fail: function(res) {}
					});
					jweixin.chooseWXPay({
						appId: self.return_data.appId,
						timestamp: self.return_data
							.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
						nonceStr: self.return_data.nonceStr, // 支付签名随机串，不长于 32 位
						package: self.return_data
							.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
						signType: 'MD5', // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
						paySign: self.return_data.sign, // 支付签名
						success: function(res) {
							// 支付成功后的回调函数
							uni.showToast({
								icon: 'none',
								title: '支付成功',
								duration: 2000,
								success() {
									setTimeout(() => {
										uni.navigateBack({

										})
									}, 1000)
								}
							});
						},
						cancel: function(r) {},
						fail: function(res) {}
					});
				});

				jweixin.error(function(res) {
					uni.showToast({
						icon: 'none',
						title: '支付失败了',
						duration: 4000
					});
				});
			},
		},

	}
</script>

<style lang="scss">
	.block {
		width: 94%;
		padding: 20upx 3%;

		.title {
			width: 100%;
			font-size: 34upx;
		}

		.content {
			.my {
				width: 100%;
				height: 100upx;
				display: flex;
				align-items: center;
				font-size: 34upx;
			}

			.amount {
				width: 100%;

				.list {
					display: flex;
					justify-content: space-between;
					padding: 20upx 0;

					.box {
						width: 30%;
						height: 120upx;
						display: flex;
						justify-content: center;
						align-items: center;
						border-radius: 10upx;
						box-shadow: 0upx 5upx 20upx rgba(0, 0, 0, 0.05);
						font-size: 36upx;
						background-color: #f1f1f1;
						color: 333;

						&.on {
							background-color: #0083f5;
							color: #fff;
						}
					}
				}

				.num {
					margin-top: 10upx;
					display: flex;
					justify-content: flex-end;
					align-items: center;

					.text {
						padding-right: 10upx;
						font-size: 30upx;
					}

					.input {
						width: 28.2vw;
						border-bottom: solid 2upx #999;

						justify-content: flex-end;
						align-items: center;

						input {
							margin: 0 20upx;
							height: 60upx;
							font-size: 30upx;
							color: #0083f5;
							justify-content: flex-end;
							align-items: center;
						}
					}
				}
			}

			.pay-list {
				width: 100%;
				border-bottom: solid 1upx #eee;

				.row {
					width: 100%;
					height: 120upx;
					display: flex;
					align-items: center;

					.left {
						width: 100upx;
						flex-shrink: 0;
						display: flex;
						align-items: center;

						image {
							width: 80upx;
							height: 80upx;
						}
					}

					.center {
						width: 100%;
						font-size: 30upx;
					}

					.right {
						width: 100upx;
						flex-shrink: 0;
						display: flex;
						justify-content: flex-end;
					}
				}
			}
		}
	}

	.pay {
		margin-top: 20upx;
		width: 100%;
		display: flex;
		justify-content: center;
		flex-wrap: wrap;

		.btn {
			width: 70%;
			height: 80upx;
			border-radius: 80upx;
			display: flex;
			justify-content: center;
			align-items: center;
			color: #fff;
			background-color: #0083f5;
			box-shadow: 0upx 5upx 10upx rgba(0, 0, 0, 0.2);
		}

		.tis {
			margin-top: 10upx;
			width: 100%;
			font-size: 24upx;
			display: flex;
			justify-content: center;
			align-items: baseline;
			color: #999;

			.terms {
				color: #5a9ef7;
			}
		}
	}
</style>
