Skip to content

服务端

微信支付的服务端推送和公众号基本一样,请参考:公众号-服务端

内置事件处理器

SDK 内置了两个便捷方法以便于开发者快速处理支付推送事件:

支付成功事件

🚨 切记:推送信息不一定靠谱,可能是伪造的,所以拿到推送通知,只取订单号等必要信息,其它信息忽略,拿订单号重新查询微信支付订单的最新状态再做处理。

js
const server = app.getServer();

server.handlePaid(async (message, next) => {
  // message.out_trade_no 获取商户订单号
  // message.payer.openid 获取支付者 openid

  // 🚨🚨🚨 注意:推送信息不一定靠谱哈,请务必验证
  // 建议是拿订单号调用微信支付查询接口,以查询到的订单状态为准

  return next(message);
});

const response = await server.serve();
// reseponse.getBody();

退款成功事件

js
const server = app.getServer();

server.handleRefunded(async (message, next) => {
  // message.out_trade_no 获取商户订单号

  return next(message);
});

const response = await server.serve();
// reseponse.getBody();

其它事件处理

js
const server = app.getServer();

server.with(async (message, next) => {
  // message.out_trade_no 获取商户订单号
  // message.event_type 事件类型

  return next(message);
});

const response = await server.serve();
// reseponse.getBody();

自助处理推送消息

你可以通过下面的方式获取来自微信服务器的推送消息:

js
const server = app.getServer();

const message = await server.getRequestMessage();

你可以在处理完逻辑后自行创建一个响应,当然,在不同的框架里,响应写法也不一样,请自行实现。

基于 MIT 许可发布