微信JSSDK封裝

源碼:php

/**
* 微信 接口
*/

//微信debug模式開關 true | false
var WeiXinDebugMode = false;

var WeiXinSDK =
{
    version : 'default'
};

// Config_data格式 :
// Config_data =
// {
//      appId:appId,
//      timestamp:timestamp,
//      nonceStr:nonceStr,
//      signature:signature
// }
WeiXinSDK.setConfig = function(Config_data)
{

    var data = Config_data;

    wx.config({
        debug: WeiXinDebugMode,   // 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。
        appId: data.appId,        // 必填,公衆號的惟一標識
        timestamp: data.timestamp,// 必填,生成簽名的時間戳
        nonceStr: data.nonceStr,  // 必填,生成簽名的隨機串
        signature: data.signature,// 必填,簽名,見附錄1
        jsApiList: [
            'checkJsApi',
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'onMenuShareQQ',
            'onMenuShareWeibo',
            'hideMenuItems',
            'showMenuItems',
            'hideAllNonBaseMenuItem',
            'showAllNonBaseMenuItem',
            'getNetworkType',
            'openLocation',
            'getLocation',
            'hideOptionMenu',
            'showOptionMenu',
            'closeWindow',
            'scanQRCode',
            'chooseWXPay',
            'openProductSpecificView'
        ] // 必填,須要使用的JS接口列表

    });
};

//ready回調
WeiXinSDK.ready = function(callback)
{
    wx.ready(function()
    {
        var Api = this;

        if(typeof callback == 'function')
        {
            callback.call(this,Api);
        }
    });

};

WeiXinSDK.ShareToFriend = function(Share_data)
{
    var data = Share_data;

    console.log(Share_data);

    wx.onMenuShareAppMessage
    ({
        title: Share_data.title, // 分享標題
        desc: Share_data.desc, // 分享描述
        link: Share_data.link, // 分享連接
        imgUrl: Share_data.imgUrl, // 分享圖標
        type: Share_data.type, // 分享類型,music、video或link,不填默認爲link
        dataUrl: Share_data.dataUrl, // 若是type是music或video,則要提供數據連接,默認爲空
        success: function () {
            // 用戶確認分享後執行的回調函數
            if(Share_data.success && typeof Share_data.success === 'function')Share_data.success();
        },
        cancel: function () {
            // 用戶取消分享後執行的回調函數
            if(Share_data.cancel && typeof Share_data.cancel === 'function')Share_data.cancel();
        }
    })
};

WeiXinSDK.ShareTimeLine = function(Share_data)
{
    var data = Share_data;

    wx.onMenuShareTimeline({
        title: Share_data.title, // 分享標題
        link: Share_data.link, // 分享連接
        imgUrl: Share_data.imgUrl, // 分享圖標
        success: function () {
            // 用戶確認分享後執行的回調函數
            if(Share_data.success && typeof Share_data.success === 'function')Share_data.success();
        },
        cancel: function () {
            // 用戶取消分享後執行的回調函數
            if(Share_data.cancel && typeof Share_data.cancel === 'function')Share_data.cancel();
        }
    });
};

WeiXinSDK.ShareQQ = function(Share_data)
{
    var data = Share_data;

    wx.onMenuShareQQ({
        title: Share_data.title, // 分享標題
        desc: Share_data.desc, // 分享描述
        link: Share_data.link, // 分享連接
        imgUrl: Share_data.imgUrl, // 分享圖標
        success: function () {
            // 用戶確認分享後執行的回調函數
            if(Share_data.success && typeof Share_data.success === 'function')Share_data.success();
        },
        cancel: function () {
            // 用戶取消分享後執行的回調函數
            if(Share_data.cancel && typeof Share_data.cancel === 'function')Share_data.cancel();
        }
    });
};

WeiXinSDK.isWeiXin = function ()
{
    return /MicroMessenger/i.test(navigator.userAgent);
};

WeiXinSDK.hideOptionMenu = function()
{
    wx.hideOptionMenu();
};

WeiXinSDK.showOptionMenu = function()
{
    wx.showOptionMenu();

};

WeiXinSDK.getLocation = function(options)
{
    wx.getLocation({
        success: function (res) {
            //alert("success" + JSON.stringify(res))
            if(options.success && typeof options.success === 'function')options.success(res);
        },
        cancel: function (res) {
            //alert("cancel" + JSON.stringify(res))
            if(options.cancel && typeof options.cancel === 'function')options.cancel(res);
        },
        fail : function(res){
            //alert("fail" + JSON.stringify(res))
            if(options.fail && typeof options.fail === 'function')options.fail(res);
        }
    });
};

/**
 * 調起微信Native的圖片播放組件。
 * 這裏必須對參數進行強檢測,若是參數不合法,直接會致使微信客戶端crash
 *
 * @param {String} curSrc 當前播放的圖片地址
 * @param {Array} srcList 圖片地址列表
 */
WeiXinSDK.imagePreview = function (curSrc, srcList)
{

    if (!curSrc || !srcList || srcList.length == 0) {
        return;
    }
    wx.previewImage
    ({
        current: curSrc, // 當前顯示圖片的http連接
        urls: srcList // 須要預覽的圖片http連接列表
    });
};

WeiXinSDK.chooseWXPay = function(data,success,fail)
{
    if(data.appId)
    {
        delete data.appId;
    }

    data.timestamp = data.timeStamp;

    var callback =
    {
        success: function(res)
        {
           

            var code = 0;

            var err_log_src = 'http://www.yueus.com/mobile_app/log/save_log.php?err_level=1&url='+encodeURIComponent(window.location.href);

            var img = new Image();

            if( res.errMsg == 'chooseWXPay:ok' )
            {
                //支付成功
                code = 1;
            }
            else if( res.errMsg == 'chooseWXPay:cancel' )
            {
                //支付過程當中
                code = 10;
            }
            else if( res.errMsg == 'chooseWXPay:fail' )
            {
                //支付失敗
                code = -3;

                img.src = err_log_src+'&err_str='+encodeURIComponent(res.errMsg);

                console.log('url='+window.location.href+'&err_str='+res.errMsg);

                alert("支付失敗:"+res.err_msg);

            }
            else
            {
                img.src = err_log_src+'&err_str='+encodeURIComponent(res.errMsg);

                console.log('url='+window.location.href+'&err_str='+res.errMsg);

                alert("支付失敗,因爲網絡問題提交失敗,請點擊左上角關閉並從新進入");
            }


            if (typeof success == "function")
            {
                success.call(this, {code : code});
            }
        },
        fail: function(res)
        {
            console.log(res);



            if (typeof fail == "function")
            {
                fail.call(this, res);
            }
        },complete : function(res)
        {

            debugger;
        },
        cancel : function(res)
        {

            debugger;
        }
    };

    data = $.extend({},data,callback);

    wx.chooseWXPay(data);

};


module.exports = WeiXinSDK;
相關文章
相關標籤/搜索