npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-wchat

v0.1.1

Published

utils for wechat dev

Downloads

1

Readme

wechat

微信公众/开放平台开发工具

准备

  1. 添加ticket,token的存储策略 (可参考RedisProvider)
  2. 配置平台信息

var mp = require('node-wchat').mp;
var open = require('node-wchat').open;
var _mp = mp({
    appid:  '',
    secret: '',
    token:  '',
    aeskey: '',
    mchid:  '',
    paykey: ''
},provider);

var _open = open({
    appid:  '',
    aeskey: '',
    secret: '',
    token:  ''
},provider);

DEMO

  • 获取微信jssdk支付配置

app.get('/option/pay',parse_open_id,function(req,res){
    var query = req.query;
    var content = req.content;
    var price = parseInt(query.price);
    if(!price){
        return res.status(400).end();
    }
    var userip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
    var openid = req.openid
    var option = {
        body: content
        ,out_trade_no: "demo"+Date.now()
        ,total_fee: price
        ,spbill_create_ip: userip
        ,openid: openid
        ,trade_type: 'JSAPI'
        ,notify_url: ''//notify url
    }
    _mp.get_pay_option(option,function(err,poption){
        if(err){
            console.error(err);
            return res.status(400).end();
        }
        res.json(poption);
    });
});
  • 第三方平台接收component_verify_ticket
app.post('/bind',_open.bind);
  • 用户授权页
app.get('/authpage',function(req,res){
    _open.get_auth_code(function(err,code){
        if(err){
            console.trace(err.stack);
            return res.status(400).end();
        }
        var redirect = ''//回调URL
        var url = 'https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid='+appid+'&pre_auth_code='+code+'&redirect_uri='+redirect;
        res.redirect(url);
    });
});
  • 回调获取授权码

app.get('/platform',function(req,res){
    var auth = req.query;
    async.waterfall([function(callback){
        _open.get_auth_token(auth.auth_code,callback);
    },function(resp,callback){
        //保存refreshtoken
        callback();
    }],function(){
        res.end();
    });
});

查看 demo

功能列表

公众平台

  • 用户管理
  • 消息管理 (待开发)
  • 微信支付
  • 自定义菜单 (待开发)
  • 扫一扫 (待开发)
  • 摇一摇 (待开发)
  • 微信卡券 (待开发)
  • 统计信息 (待开发)

第三方开发平台

  • 授权和绑定