wechatPaymentService.js 7.97 KB
angular.module('myApp.services')
.service('wechatPayment',['$http', '$q', '$rootScope','$location','$state',function($http, $q, $rootScope,$location, $state) {

    // var host = 'http://finance.api.dingdachuxing.com/service';
    // var host = 'http://finance.dy.dingdatech.com/service';

    // var host = 'http://lsz1.28ms.com/service'
    // var host = 'http://47.99.81.49:50413/service'
    var host = 'https://finance.dy.dingdatech.com/service'

    var h5wxhost = 'http://h5api.dy.dingdachuxing.com/service/balance/';

    var h5alipayhost = 'http://h5api.dy.dingdachuxing.com/service/balance/';

    console.log('search:',$location.search());

    //调用微信JS api 支付
    var jsApiCall = function (sign, q) {
        WeixinJSBridge.invoke(
            'getBrandWCPayRequest', {
                appId : sign.appId,
                timeStamp : sign.timeStamp,
                nonceStr : sign.nonceStr,
                package : sign.packageStr,
                signType : sign.signType,
                paySign : sign.paySign
            },
            function (res) {
                if (res.err_msg == 'get_brand_wcpay_request:ok') {
                    layer.open({
                         content: '支付成功!',
                         time:1
                    });
                    q.resolve(res.err_msg);
                    return;
                } else if (res.err_msg == 'get_brand_wcpay_request:fail') {
                    alert("支付失败:" + JSON.stringify(res))
                    layer.open({
                         content: '支付失败!',
                         time:1
                    });
                } else if (res.err_msg == 'get_brand_wcpay_request:cancel') {
                    layer.open({
                         content: '支付取消!',
                         time:1
                    });
                } else {
                    layer.open({
                         content: '支付异常,'+res.err_msg,
                         time:1
                    });
                }
                q.reject(res.err_msg);
//                WeixinJSBridge.log(res.err_msg);
//                console.error(res.err_msg);
            }
        );
    }

    var wxh5ApiCall = function (sign, q) {
        // console.log('sign', sign);
        // $state.go('bond');
        var redirect_url= ''
        if(isiOS){
            redirect_url = "&redirect_url=dcxing.com://" + window.location.origin + window.location.pathname
        }
        window.location.href = sign.mwebUrl + redirect_url;

    }


    var callUnifiedOrderApi = function(url, data){
        var q = $q.defer();
        $http.post(url, data)
            .success(function (data) {
                if(data.meta.code == 200) {
//                    alert('支付签名返回:' + JSON.stringify(data));
                    wxh5ApiCall(data.data.wechatDto, q);
                }else{
                    layer.open({
                         content:'支付失败:code '+data.meta.code+","+ data.meta.message,
                         time:1
                    });
                    q.reject(data.meta.message)
                }
            })

        return q.promise;
    }
    var callUnifiedOrderApiAliPay = function(msg){
        var q = $q.defer();
        q.reject(msg)
        return q.promise;
    }


    return {
        /**
         * 租车付款
         */
        callRentPay: function (orderId, amount) {
            var param = Object.assign($location.search(),{
                amount : amount,
                body : "租车租金",
                type : 101
            });
            return callUnifiedOrderApi(host + '/bill/wx/' + orderId, param);
        },
        /**
         * 租车付款
         */
        callRentTypePay: function (orderId, amount, type) {
            var user = JSON.parse(localStorage.getItem("ls.user"))
            if(user){
                var token = user.token
            }

            switch (type) {
                case 100:
                    var html = ' <form action="'+ host + '/h5/alipay/bill/'+ orderId + '/'+ token
                        +'" method="post">' +
                        '        <input type="text" name="amount" value="'+amount+'" />' +
                        '        <input type="text" name="body" value="租车租金"/>' +
                        '        <input type="text" name="type" value="100" />' +
                        '        <input type="submit" id="ok">' +
                        '        </input>' +
                        '        </form>'
                    var form = document.createElement('div')
                    form.innerHTML = html
                    // form.querySelector('#ok').click()
                    document.body.appendChild(form)
                    document.querySelector('#ok').click()
                    return callUnifiedOrderApiAliPay('支付')
                case 101:
                    var param = Object.assign($location.search(),{
                        amount : amount,
                        body : "租车租git金",
                        type : 101
                    });
                    return callUnifiedOrderApi(host + "/bill/wx/h5/" + orderId, param);

                default:
                    return null
            }
        },
        /**
         * 保证金充值
         * @param amount
         */
        callDepositPay : function(amount){
            var param = Object.assign($location.search(),{
                amount : amount,
                body : "保证金充值",
                type : 101
            });
            return callUnifiedOrderApi(host + "/bail/wx", param);
        }, /**
         * 保证金充值
         * @param amount
         */
        callDepositTypePay : function(amount, type){
            var user = JSON.parse(localStorage.getItem("ls.user"))
            if(user){
                var token = user.token
            }
            switch (type) {
                case 100:
                    // $http.post(host +  '/bill/alipay/h5',{
                    //     'amout': amount,
                    //     'body': '保证金充值',
                    //     'type': 100,
                    // }).success(function (res) {
                    //     console.log(res)
                    // })

                    var html = ' <form action="'+ host + '/h5/alipay/balance/'+token
                    +'" method="post">' +
                        '        <input type="text" name="amount" value="'+amount+'" />' +
                        '        <input type="text" name="body" value="保证金充值"/>' +
                        '        <input type="text" name="type" value="100" />' +
                        '        <input type="submit" id="ok">\n' +
                        '            余额充值\n' +
                        '        </input>\n' +
                        '        </form>'
                    var form = document.createElement('div')
                    form.innerHTML = html
                // form.querySelector('#ok').click()
                    document.body.appendChild(form)
                    document.querySelector('#ok').click()
                    return callUnifiedOrderApiAliPay('支付')
                case 101:
                    var param = Object.assign($location.search(),{
                        amount : amount,
                        body : "保证金充值",
                        type : type
                    });
                    return callUnifiedOrderApi(host + "/balance/wx/h5", param);

                default:
                    return null
            }

        },
        /**
         * 钱包充值
         * @param amount
         */
        callBalanceRecharge : function(amount,way){
            var host = (way == 100 ? h5alipayhost+ "alipay/h5" : h5wxhost+ "wx/h5");
            var param = Object.assign($location.search(),{
                amount : amount,
                body : "钱包充值",
                type : parseInt(way)
            });
            return callUnifiedOrderApi(host, param);
        }
    }
}]);