Nodejs 封装实现支付宝

Nodejs 封装实现支付宝

那位大神接通过支付宝啊,跪求指教一二,万分感谢!

3 回复

当然可以。以下是如何使用 Node.js 封装实现支付宝支付功能的详细步骤。我们将使用 alipay-sdk 这个 npm 包来简化开发过程。

安装依赖

首先需要安装 alipay-sdk

npm install alipay-sdk

配置支付宝参数

你需要从支付宝开发者平台获取以下参数:

  • appId: 应用ID
  • merchantPrivateKey: 商户私钥
  • alipayPublicKey: 支付宝公钥
  • gatewayUrl: 支付网关URL(默认为 https://openapi.alipay.com/gateway.do

创建支付宝客户端实例

接下来创建一个支付宝客户端实例:

const Alipay = require('alipay-sdk').default;

const alipay = new Alipay({
  appId: 'your-app-id',
  merchantPrivateKey: 'your-merchant-private-key',
  alipayPublicKey: 'your-alipay-public-key',
  gatewayUrl: 'https://openapi.alipay.com/gateway.do'
});

发起支付请求

我们可以通过调用 alipay.trade.pagePay 方法发起一个支付请求:

app.get('/pay', async (req, res) => {
  const result = await alipay.trade.pagePay({
    outTradeNo: '123456789', // 订单号
    totalAmount: '0.01', // 订单金额
    subject: '测试商品', // 商品名称
    body: '测试商品描述' // 商品描述
  });

  res.send(result);
});

处理支付结果通知

支付宝会异步通知支付结果,因此我们需要设置一个接口来接收这些通知:

app.post('/notify', async (req, res) => {
  const notifyResult = await alipay.verify(req.body); // 验证通知是否来自支付宝

  if (notifyResult) {
    console.log('支付成功:', req.body);

    // 更新订单状态等逻辑

    res.send({ code: 'success' }); // 必须返回 success,否则支付宝会认为通知失败并重新发送
  } else {
    console.error('支付通知验证失败');
    res.send({ code: 'fail' });
  }
});

总结

以上就是使用 Node.js 实现支付宝支付的基本流程。通过封装支付宝 SDK,我们可以轻松地处理支付请求和支付结果通知。希望这些示例代码对你有所帮助!

如果有任何问题或需要进一步的帮助,请随时提问!


为了封装实现支付宝功能,我们可以使用 alipay-sdk-nodejs 这个官方的 Node.js SDK。以下是如何进行基本的支付接口封装的示例。

首先安装 alipay-sdk-nodejs

npm install alipay-sdk-nodejs

然后创建一个文件 alipay.js,在这个文件中封装支付宝的各种接口:

const Alipay = require('alipay-sdk-nodejs');

const alipay = new Alipay({
  appId: 'your-app-id',
  merchantPrivateKey: 'your-merchant-private-key',
  alipayPublicKey: 'your-alipay-public-key',
  notifyUrl: 'your-notify-url', // 可选,异步通知地址
  returnUrl: 'your-return-url', // 可选,同步跳转地址
});

// 创建支付订单
exports.createOrder = async (params) => {
  const order = await alipay.tradePagePay(params);
  return order;
};

// 查询订单状态
exports.queryOrder = async (outTradeNo) => {
  const result = await alipay.tradeQuery({ out_trade_no: outTradeNo });
  return result;
};

以上代码中,你需要替换 your-app-id, your-merchant-private-key, your-alipay-public-key, your-notify-urlyour-return-url 为实际的值。createOrder 方法用于生成支付页面的 URL,而 queryOrder 方法用于查询订单状态。

在你的应用中使用这个封装:

const { createOrder, queryOrder } = require('./alipay');

app.post('/pay', async (req, res) => {
  const params = {
    out_trade_no: '123456789', // 商户订单号
    product_code: 'FAST_INSTANT_TRADE_PAY', // 销售产品码
    total_amount: '0.01', // 订单金额
    subject: '测试商品', // 订单标题
  };
  try {
    const orderUrl = await createOrder(params);
    res.redirect(orderUrl);
  } catch (error) {
    console.error(error);
    res.status(500).send('支付失败');
  }
});

app.get('/order/query', async (req, res) => {
  const outTradeNo = req.query.outTradeNo; // 商户订单号
  try {
    const result = await queryOrder(outTradeNo);
    res.json(result);
  } catch (error) {
    console.error(error);
    res.status(500).send('查询失败');
  }
});

这样,你就完成了基本的支付宝支付功能的封装,并且可以在你的应用中调用这些接口来处理支付和查询操作。

回到顶部