Giter Club home page Giter Club logo

egg-mp's Introduction

egg-mp

npm version

微信公众平台常规的后端服务,献给了不起的EggJS

特性

微信小程序

  • 小程序登录
  • 小程序授权
  • 小程序支付
  • 推送模板消息
  • 检测是否含有敏感词
  • 生成二维码/小程序码
  • 接入在线客服消息

微信服务号

  • 网页授权
  • 发送模板消息
  • 获取用户基础信息
  • 获取用户列表
  • 服务号网页支付
  • 前端调用JSSDK

安装

$ npm i egg-mp --save

启用插件

// {app_root}/config/plugin.js
exports.mp = {
  enable: true,
  package: 'egg-mp',
};

应用配置

// {app_root}/config/config.default.js
exports.mp = {
  appId: '', // 公众平台应用编号
  appSecret: '', // 公众平台应用密钥
  mchId: '', // 商户平台商家编号
  apiKey: '', // 商户支付密钥
  notifyUrl: '' // 支付结果回调地址
};

请查看官网的 config/config.default.js 获取更详细说明.

简单实例

async login() {
    const { ctx, service } = this;
    const { code } = ctx.request.query;
    let res = await service.mp.login(code);
    // {
    //   session_key: "Sop9yRVgqnCFjsqANnNE2Q==",
    //   openid: "oo17M4gnwK3iQd6dxcA5mLDkoHA8"
    // };
}

基础教程

  • 配置项如何找到?
  • 如何搭建环境?
  • 如何本地调试?
  • 登录与授权(获取用户信息)
  • 微信支付(小程序、服务号)
  • 推送消息(服务通知、模板消息)
  • 生成二维码(或小程序码)

问题与建议

请在这里向我提出问题

开源协议

MIT

egg-mp's People

Contributors

dependabot[bot] avatar szy0syz avatar unclexiao avatar xiaohui1510 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

egg-mp's Issues

小程序能正常支付吗?

作者你好,想问下小程序是否能正常使用,签名是否有问题。目前遇到正常获取到prepay_id,不过在小程序端支付显示支付验证签名错误~

你好,能不能在支付下单的时候增加一个attach参数

attach这个参数有时再说明不同的订单支付回调的时候可以自定义一些有效信息
我们自己加的话npm install你这个包又没有了,能不能麻烦加一个参数到插件里面,多谢
// 生成支付签名
_firstSignOrder(openid, order) {
const {
app,
ctx,
service,
} = this;
const {
appId,
mchId,
notifyUrl,
} = app.config.mp;
const params = {
openid: openid || '',
appid: appId,
mch_id: mchId,
attach:order.attach,
nonce_str: service.sign.createNonceStr(),
body: order.body || '我是测试商品',
out_trade_no: order.tradeNo || new Date().getTime(), // 内部订单号
total_fee: order.totalFee || 1, // 单位为分的标价金额
spbill_create_ip: ctx.ip || '127.0.0.1', // 支付提交用户端ip
notify_url: notifyUrl, // 异步接收微信支付结果通知
trade_type: 'JSAPI',
};
params.sign = service.sign.getPaySign(params); // 订单签名,用于验证支付通知
return params;
}

小程序支付代码有误

async createOrder(openid, data) {
    const {
      ctx,
      helper,
    } = this;
    const signedParams = this._firstSignOrder(openid, data);
    const successXml = await ctx.curl(payUri, {
      method: 'POST',
      data: helper.json2xml(signedParams),
    });
    const json = helper.xml2json(successXml.data);
    if (json.return_code === 'FAIL') {
      return {
        code: -1,
        msg: json.return_msg,
      };
    }
    return this._secondSignOrder(json);
  }

这里的helper 应该是ctx.helper,另外在_firstSignOrder函数里也漏了使用body字段

支付接口能否带上其他非必选参数,目前是不支持的。

看了一下源码,目前只支持携带必填参数,不支持带上非必填参数。目前我有个需求是,不同类型的支付,接收通知的接口不一样,现在是只能配置一个回调接口。于是想通过attach 附加字段,带上类型在一个接口处理,但是发现也不支持携带非必填数据。希望能支持一下

一个关于access_token 的问题

async getToken() { const { appId, appSecret, } = this.app.config.mp; const url =${tokenUri}?grant_type=client_credential&appid=${appId}&secret=${appSecret}; const res = await this.ctx.curl(url, { dataType: 'json', }); return res.data; }
直接这么粗暴的吗,每次获取直接刷新,不做持久化?调用上限满了怎么搞?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.