import React, {Component} from 'react'
import './index.scss'
import {api, getParam, http, browser} from "@/utils";
import {Toast} from 'antd-mobile';
import {Link} from "react-router-dom";


class Single extends Component {
    constructor(props) {
        super(props)
        this.state = {
            status: 1,
            orderId: '',
            nowPrice: '',
            laterPrice: '',
            payType: '0',  // 1支付宝 0微信
        }
    }

    componentDidMount() {
        if (getParam('is_class') === 1 || getParam('weixinpay')) {
            this.payCallback()
        }
        if (browser.isWeixin) {
            this.isweixinPay()
        }
    }

    // 选择支付方式
    check = (type) => {
        this.setState({
            payType: type
        })
    }

    // 确定购买
    toBuy = () => {
        http.get(`${api.home}/sys/createClassOrder/${this.props.data.video_id}`).then((res) => {
            if (res.data.code === 200) {
                this.setState({
                    orderId: res.data.data.order_id
                })
                this.state.payType === '1' ? this.alipayPay(this.state.orderId) : this.weixinPay(this.state.orderId)
            } else {
                Toast.info(res.data.msg, 2)
            }
        })
    }
    // 微信支付
    weixinPay = (orderId) => {
        // 微信内部-支付
        if (browser.isWeixin) {
            window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=" + encodeURIComponent(window.location.href + "&aa=bb").toLowerCase() + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        } else {
            // 微信外部-支付
            http.get(`${api['pay-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {
                if (res.data.errno === 0) {
                    window.location.href = res.data.data.url + "&redirect_url=" + encodeURIComponent(window.location.href + "&weixinpay=1").toLowerCase();
                } else {
                    Toast.info(res.data.msg, 2)
                }
            })
        }
    }
    // 支付宝支付
    alipayPay = (orderId) => {
        http.get(`${api['pay-api']}/pay/alipay/wap_charge/oid/${orderId}`).then((res) => {
            if (res.data.errno === 0) {
                window.location = res.data.data.url;
            } else {
                Toast.info(res.data.msg, 2)
            }
        })
    }
    onBridgeReady = (data) => {
        WeixinJSBridge.invoke(
            'getBrandWCPayRequest', {
                "appId": data.appId,                //公众号名称,由商户传入
                "timeStamp": data.timeStamp,        //时间戳,自1970年以来的秒数
                "nonceStr": data.nonceStr,          //随机串
                "package": data.package,
                "signType": data.signType,          //微信签名方式:
                "paySign": data.paySign             //微信签名
            },
            function (res) {
                if (res.err_msg == "get_brand_wcpay_request:ok") {
                    this.payCallback()
                } else {
                    alert('支付失败')
                }
            }
        )
    }
    // 微信内部支付
    isweixinPay = () => {
        let weixin_code = getParam('code')
        if (weixin_code) {
            if (getParam('oid') === undefined) {
                return
            } else {
                http.get(`${api['pay-api']}/pay/wxpay/pub_charge/oid/${getParam('oid')}/code/${weixin_code}`).then((res) => {
                    if (res.data.errno === 0) {
                        const data = res.data.data
                        this.onBridgeReady(data)
                        if (typeof WeixinJSBridge == "undefined") {
                            if (document.addEventListener) {
                                document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady, false)
                            } else if (document.attachEvent) {
                                document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady)
                                document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady)
                            }
                        } else {
                            this.onBridgeReady()
                        }
                    } else {
                        Toast.info(res.data.msg, 2)
                    }
                })
            }
        }
    }

    // 支付完成之后获取状态
    payCallback = () => {
        http.get(`${api.home}/sys/orderStatus/${getParam('oid')}`).then((res) => {
            if (res.data.data.errno == '200') {
                // 正常购买单集成功
                this.setState({
                    status: 6
                })
            } else if (res.data.data.errno == '201') {
                // 0元参团
                this.setState({
                    status: 4
                })
            } else if (res.data.data.errno == '202') {
                // 0元购
                this.setState({
                    status: 3
                })
            } else if (res.data.data.errno == '203') {
                // 三天内特价
                this.setState({
                    nowPrice: res.data.data.data.now_price,
                    laterPrice: res.data.data.data.three_day_later_price,
                    status: 2
                })
            } else {
                Toast.info(res.data.data.msg, 2)
            }
        })
    }


    // 特价购买全集
    toBuyAll = () => {

    }
    // 0元购买全集
    zerobuyReceive = () => {
        Toast.success('购买全集成功', 3)
        this.colse()
    }
    // 0元参团
    zerogroupBuy = () => {
        this.setState({
            status: 7
        })
    }

    // 关闭弹窗
    colse = () => {
        this.props.boxHide(false);
        this.setState({
            status: 1
        })
    }

    render() {
        return (
            <div>
                {
                    this.props.singleBox &&
                    <div className='popup-box'>
                        {
                            this.state.status === 1 &&
                            <div className='content singleset-payment'>
                                <div className='price-box'>
                                    <span>实付款:</span>
                                    <p>{this.props.data.class_price}元</p>
                                </div>
                                <div className='course-info'>
                                    <p className='text-overflow-1'><span>课程:</span>
                                        {this.props.title}
                                    </p>
                                    <p className='text-overflow-1'><span>课时:</span>
                                        {this.props.data.name}
                                    </p>
                                </div>
                                <div className='payment-type'>
                                    <label>支付方式:</label>
                                    {
                                        !browser.isWeixin &&
                                        <p onClick={this.check.bind(this, '1')}>
                                            <i className='iconfont iconzhifubaox-'></i>
                                            <span>支付宝</span>
                                            <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '1' ? 'redioed' : ''}`}></i>
                                        </p>
                                    }

                                    <p onClick={this.check.bind(this, '0')}>
                                        <i className='iconfont iconweixinzhifu buy'></i>
                                        <span>微信支付</span>
                                        <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '0' ? 'redioed' : ''}`}></i>
                                    </p>
                                </div>
                                <div className='btn btn-18B4ED' onClick={this.toBuy}>确认购买</div>
                            </div>
                        }
                        {
                            this.state.status === 2 &&
                            <div className='content payment-success'>
                                <div className="header">
                                    <i className='iconfont icondanseshixintubiao-5'></i>
                                    <span>购买成功</span>
                                </div>
                                <div className="dec">· 3天内购买全集,可直接抵扣该集费用,{this.state.nowPrice}元购买。</div>
                                <div className="dec">· 超过3天,按照未够集数/全部集数等比例计费,{this.state.laterPrice}元购买全集。</div>
                                <div className='btn btn-18B4ED'>开始学习</div>
                                <div className='btn btn-FF4000' onclick={this.toBuyAll()}>¥{this.state.nowPrice}购买全集
                                </div>
                            </div>
                        }
                        {
                            this.state.status === 3 &&
                            <div className='content zero'>
                                <div className="header">
                                    <i className='iconfont icondanseshixintubiao-5'></i>
                                    <span>购买成功</span>
                                </div>
                                <div className="dec">· 恭喜您获得0元拼团购买剩余课时的机会。</div>
                                <div className='btn btn-FF4000' onClick={this.zerogroupBuy}>0元参团</div>
                            </div>
                        }
                        {
                            this.state.status === 4 &&
                            <div className='content zero'>
                                <div className="header">
                                    <i className='iconfont icondanseshixintubiao-5'></i>
                                    <span>购买成功</span>
                                </div>
                                <div className="dec">· 恭喜您获得0元购买剩余课时的机会。</div>
                                <div className='btn btn-FF4000' onClick={this.zerobuyReceive}>0元购</div>
                            </div>
                        }
                        {
                            this.state.status === 6 &&
                            <div className='content zero'>
                                <div className="header">
                                    <i className='iconfont icondanseshixintubiao-5'></i>
                                    <span>购买成功</span>
                                </div>
                                <Link to={`/play?id=${getParam('id')}`} className='btn btn-18B4ED'>去学习</Link>
                            </div>
                        }
                        {
                            this.state.status === 7 &&
                            <div className='content group'>
                                <div className="header">
                                    <i className='iconfont icondanseshixintubiao-5'></i>
                                    <span>参团成功</span>
                                </div>
                                <div className='group-img'>
                                    <img
                                        src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/vu/image_head/Sv3Vz4B8Tp.jpg'
                                        alt=""/>
                                    <img
                                        src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/vu/image_head/CwJoTNA21g.jpg'
                                        alt=""/>
                                    <img
                                        src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/vu/image_head/Sv3Vz4B8Tp.jpg'
                                        alt=""/>
                                </div>
                                <div className='btn-l btn-FF4000'>剩余23:59:23 邀请好友参团</div>
                            </div>
                        }
                        <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>
                    </div>
                }
            </div>

        );
    }

}

export default Single