<template>
	<view>
		<oct-pay
			:price="price"
			:payNo="payNo"
			color="#34CE98"
			price-color="#e6576b"
			:payPlatform="platform"
			@onPay="pay"
		/>
	</view>
</template>

<script>
	import { wxPAY, alPAY } from '@/apis/interfaces/pay'
	export default {
		data() {
			return {
				payNo	: "",
				price	: "",
				platform: ['wxpay', 'alipay']
			}
		},
		mounted() {
			this.payNo = this.$Route.query.orderNo
			this.price = Number(this.$Route.query.price).toFixed(2)
		},
		methods: {
			pay(e){
				uni.getProvider({
					service: 'payment',
					success: res => {
						if(res.provider.findIndex(val => val === e.platform) < 0){
							switch (e.platform){
								case 'wxpay':
									uni.showToast({
										title: '支付失败，您暂未安装微信',
										icon : 'none'
									})
									break;
								case 'alipay':
									uni.showToast({
										title: '支付失败，您暂未安装支付宝',
										icon : 'none'
									})
									break;
							}
							return
						}
						if(e.platform === 'wxpay') this.getWXPAY(e.platform)
						if(e.platform === 'alipay') this.getALPAY(e.platform)
					}
				})
			},
			getALPAY(payType){
				alPAY(this.payNo).then(res => {
					this.callPay(res, payType)
				})
			},
			getWXPAY(payType){
				wxPAY(this.payNo).then(res => {
					let config = JSON.parse(res)
					this.callPay(config, payType)
				})
			},
			callPay(orderInfo, payType){
				uni.requestPayment({
					provider: payType,
					orderInfo,
					success: payRes => {
						uni.showModal({
							title: '支付成功',
							content: '订单已支付，我们将尽快为您安排发货，可在订单管理查询订单动态',
							showCancel:false,
							success:onRes => {
								if(onRes.confirm){
									if(this.$Route.query.oepnType === 'order'){
										this.$store.commit('setRefresh', 1)
									}
									this.$Router.back()
								}
							}
						})
					},
					fail: payErr =>  {
						if(payErr.errCode == '-100'){
							uni.showToast({
								title: '支付被取消',
								icon : 'none'
							})
						}else{
							uni.showToast({
								title: payErr.errMsg,
								icon : 'none'
							})
						}
					}
				})
			}
		}
	}
</script>

<style>

</style>
