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

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

    var h5wxhost = 'http://lsz1.28ms.com/service/balance/';

    var h5alipayhost = 'http://lsz1.28ms.com/service/balance/';



    //调用微信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);
        window.location.href = sign.mwebUrl;
    }


    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;
    }

    return {
        /**
         * 租车付款
         */
        callRentPay: function (orderId, amount) {
            return callUnifiedOrderApi(host + '/bill/wx/' + orderId, {
                amount : amount,
                body : "租车租金",
                type : 101
            });
        },
        /**
         * 保证金充值
         * @param amount
         */
        callDepositPay : function(amount){
            return callUnifiedOrderApi(host + "/bail/wx", {
                amount : amount,
                body : "保证金充值",
                type : 101
            });
        },
        /**
         * 钱包充值
         * @param amount
         */
        callBalanceRecharge : function(amount,way){
            var host = (way == 100 ? h5alipayhost+ "alipay/h5" : h5wxhost+ "wx/h5");
            return callUnifiedOrderApi(host, {
                amount : amount,
                body : "钱包充值",
                type : parseInt(way)
            });
        }
    }
}]);