抖音支付接入全流程实操指南

话题来源: 易支付最新版下载

  • 在“支付设置”里点“密钥管理”,点“生成新密钥”。系统会弹出两段字符:AppKeyAppSecret,记得复制到安全的记事本。
  • 打开“回调地址”页面,填入你服务器的 HTTPS 接口,最好加上 /douyin/pay/notify,别忘了在服务器上写好签名校验。
  • 把“支付网关域名”复制下来,后面调用 SDK 时要用到。

代码层面:下单&回调

我选的语言是 Node.js,官方 SDK 只要 npm i @douyin/pay,几行代码就搞定。核心代码大概是:

const DouyinPay = require('@douyin/pay');
const client = new DouyinPay({
  appKey: 'YOUR_APP_KEY',
  appSecret: 'YOUR_APP_SECRET',
  gateway: 'https://open.douyin.com/pay'
});

app.post('/order', async (req, res) => {
  const order = await client.createOrder({
    outOrderNo: `DD${Date.now()}`,
    totalAmount: req.body.amount,
    subject: '商品名称',
    notifyUrl: 'https://yourdomain.com/douyin/pay/notify'
  });
  res.json({payUrl: order.payUrl});
});

回调那块,我把签名校验写成了中间件,收到抖音的 POST 后,用appSecret做 HMAC‑SHA256,对比 sign 字段,一不匹配直接 403。别忘了把订单状态写进数据库,防止重复回调。

测试与上线

抖音提供了沙箱环境,URL 里多了 sandbox,我先在本地跑了两遍,发现支付成功后订单状态一直是“待支付”,原来是回调 URL 写成了 http,平台直接丢弃。改成 https,一切顺利。正式环境只要把 gateway 换成正式域名,重新生成密钥,提交审核。

整个过程最让我感慨的,是从“找不到文档”到“自己写了注释”,把每一步都写进团队 Wiki,后面新人接手时只要点开链接就能复现。抖音支付不再是遥不可及的黑盒子,而是可以像点外卖一样,几分钟搞定。

  • 在“支付设置”里点“密钥管理”,点“生成新密钥”。系统会弹出两段字符:AppKeyAppSecret,记得复制到安全的记事本。
  • 打开“回调地址”页面,填入你服务器的 HTTPS 接口,最好加上 /douyin/pay/notify,别忘了在服务器上写好签名校验。
  • 把“支付网关域名”复制下来,后面调用 SDK 时要用到。

代码层面:下单&回调

我选的语言是 Node.js,官方 SDK 只要 npm i @douyin/pay,几行代码就搞定。核心代码大概是:

const DouyinPay = require('@douyin/pay');
const client = new DouyinPay({
  appKey: 'YOUR_APP_KEY',
  appSecret: 'YOUR_APP_SECRET',
  gateway: 'https://open.douyin.com/pay'
});

app.post('/order', async (req, res) => {
  const order = await client.createOrder({
    outOrderNo: `DD${Date.now()}`,
    totalAmount: req.body.amount,
    subject: '商品名称',
    notifyUrl: 'https://yourdomain.com/douyin/pay/notify'
  });
  res.json({payUrl: order.payUrl});
});

回调那块,我把签名校验写成了中间件,收到抖音的 POST 后,用appSecret做 HMAC‑SHA256,对比 sign 字段,一不匹配直接 403。别忘了把订单状态写进数据库,防止重复回调。

测试与上线

抖音提供了沙箱环境,URL 里多了 sandbox,我先在本地跑了两遍,发现支付成功后订单状态一直是“待支付”,原来是回调 URL 写成了 http,平台直接丢弃。改成 https,一切顺利。正式环境只要把 gateway 换成正式域名,重新生成密钥,提交审核。

整个过程最让我感慨的,是从“找不到文档”到“自己写了注释”,把每一步都写进团队 Wiki,后面新人接手时只要点开链接就能复现。抖音支付不再是遥不可及的黑盒子,而是可以像点外卖一样,几分钟搞定。

  • 在“支付设置”里点“密钥管理”,点“生成新密钥”。系统会弹出两段字符:AppKeyAppSecret,记得复制到安全的记事本。
  • 打开“回调地址”页面,填入你服务器的 HTTPS 接口,最好加上 /douyin/pay/notify,别忘了在服务器上写好签名校验。
  • 把“支付网关域名”复制下来,后面调用 SDK 时要用到。

代码层面:下单&回调

我选的语言是 Node.js,官方 SDK 只要 npm i @douyin/pay,几行代码就搞定。核心代码大概是:

const DouyinPay = require('@douyin/pay');
const client = new DouyinPay({
  appKey: 'YOUR_APP_KEY',
  appSecret: 'YOUR_APP_SECRET',
  gateway: 'https://open.douyin.com/pay'
});

app.post('/order', async (req, res) => {
  const order = await client.createOrder({
    outOrderNo: `DD${Date.now()}`,
    totalAmount: req.body.amount,
    subject: '商品名称',
    notifyUrl: 'https://yourdomain.com/douyin/pay/notify'
  });
  res.json({payUrl: order.payUrl});
});

回调那块,我把签名校验写成了中间件,收到抖音的 POST 后,用appSecret做 HMAC‑SHA256,对比 sign 字段,一不匹配直接 403。别忘了把订单状态写进数据库,防止重复回调。

测试与上线

抖音提供了沙箱环境,URL 里多了 sandbox,我先在本地跑了两遍,发现支付成功后订单状态一直是“待支付”,原来是回调 URL 写成了 http,平台直接丢弃。改成 https,一切顺利。正式环境只要把 gateway 换成正式域名,重新生成密钥,提交审核。

整个过程最让我感慨的,是从“找不到文档”到“自己写了注释”,把每一步都写进团队 Wiki,后面新人接手时只要点开链接就能复现。抖音支付不再是遥不可及的黑盒子,而是可以像点外卖一样,几分钟搞定。

说真的,第一次把抖音支付塞进自家小程序,我那叫一个心惊肉跳——好像在给自己装上了个会偷钱的黑匣子。后来摸索出一套“从零到上线”的实操流程,决定把这段血泪史分享给和我一样想把流量变现的朋友们。

准备工作:账号与资质

先把抖音企业号升级到企业认证,别小看这一步,平台会在后台弹窗提醒你“请完善企业信息”,填错了公司全称或者营业执照照片不清晰,后面所有接口都卡死。我的经验是:把营业执照拍成PDF,压到200KB以下,直接拖进去,系统几秒钟就给绿灯。

抖音支付接入全流程实操指南

申请支付产品

登录抖音开放平台,左侧导航点“支付产品”,点进去会出现几款模板:普通支付、分账、预授权。我当时只想卖点小商品,选了普通支付,点“立即申请”。后台会让你填“收款主体”和“结算账户”。结算账户一定要是企业对公卡,个人卡会在审核时被拒。

获取接口密钥

  • 在“支付设置”里点“密钥管理”,点“生成新密钥”。系统会弹出两段字符:AppKeyAppSecret,记得复制到安全的记事本。
  • 打开“回调地址”页面,填入你服务器的 HTTPS 接口,最好加上 /douyin/pay/notify,别忘了在服务器上写好签名校验。
  • 把“支付网关域名”复制下来,后面调用 SDK 时要用到。
  • 代码层面:下单&回调

    我选的语言是 Node.js,官方 SDK 只要 npm i @douyin/pay,几行代码就搞定。核心代码大概是:

    const DouyinPay = require('@douyin/pay');
    const client = new DouyinPay({
      appKey: 'YOUR_APP_KEY',
      appSecret: 'YOUR_APP_SECRET',
      gateway: 'https://open.douyin.com/pay'
    });
    
    app.post('/order', async (req, res) => {
      const order = await client.createOrder({
        outOrderNo: `DD${Date.now()}`,
        totalAmount: req.body.amount,
        subject: '商品名称',
        notifyUrl: 'https://yourdomain.com/douyin/pay/notify'
      });
      res.json({payUrl: order.payUrl});
    });

    回调那块,我把签名校验写成了中间件,收到抖音的 POST 后,用appSecret做 HMAC‑SHA256,对比 sign 字段,一不匹配直接 403。别忘了把订单状态写进数据库,防止重复回调。

    测试与上线

    抖音提供了沙箱环境,URL 里多了 sandbox,我先在本地跑了两遍,发现支付成功后订单状态一直是“待支付”,原来是回调 URL 写成了 http,平台直接丢弃。改成 https,一切顺利。正式环境只要把 gateway 换成正式域名,重新生成密钥,提交审核。

    整个过程最让我感慨的,是从“找不到文档”到“自己写了注释”,把每一步都写进团队 Wiki,后面新人接手时只要点开链接就能复现。抖音支付不再是遥不可及的黑盒子,而是可以像点外卖一样,几分钟搞定。

    • 在“支付设置”里点“密钥管理”,点“生成新密钥”。系统会弹出两段字符:AppKeyAppSecret,记得复制到安全的记事本。
    • 打开“回调地址”页面,填入你服务器的 HTTPS 接口,最好加上 /douyin/pay/notify,别忘了在服务器上写好签名校验。
    • 把“支付网关域名”复制下来,后面调用 SDK 时要用到。

    代码层面:下单&回调

    我选的语言是 Node.js,官方 SDK 只要 npm i @douyin/pay,几行代码就搞定。核心代码大概是:

    const DouyinPay = require('@douyin/pay');
    const client = new DouyinPay({
      appKey: 'YOUR_APP_KEY',
      appSecret: 'YOUR_APP_SECRET',
      gateway: 'https://open.douyin.com/pay'
    });
    
    app.post('/order', async (req, res) => {
      const order = await client.createOrder({
        outOrderNo: `DD${Date.now()}`,
        totalAmount: req.body.amount,
        subject: '商品名称',
        notifyUrl: 'https://yourdomain.com/douyin/pay/notify'
      });
      res.json({payUrl: order.payUrl});
    });

    回调那块,我把签名校验写成了中间件,收到抖音的 POST 后,用appSecret做 HMAC‑SHA256,对比 sign 字段,一不匹配直接 403。别忘了把订单状态写进数据库,防止重复回调。

    测试与上线

    抖音提供了沙箱环境,URL 里多了 sandbox,我先在本地跑了两遍,发现支付成功后订单状态一直是“待支付”,原来是回调 URL 写成了 http,平台直接丢弃。改成 https,一切顺利。正式环境只要把 gateway 换成正式域名,重新生成密钥,提交审核。

    整个过程最让我感慨的,是从“找不到文档”到“自己写了注释”,把每一步都写进团队 Wiki,后面新人接手时只要点开链接就能复现。抖音支付不再是遥不可及的黑盒子,而是可以像点外卖一样,几分钟搞定。

    • 在“支付设置”里点“密钥管理”,点“生成新密钥”。系统会弹出两段字符:AppKeyAppSecret,记得复制到安全的记事本。
    • 打开“回调地址”页面,填入你服务器的 HTTPS 接口,最好加上 /douyin/pay/notify,别忘了在服务器上写好签名校验。
    • 把“支付网关域名”复制下来,后面调用 SDK 时要用到。

    代码层面:下单&回调

    我选的语言是 Node.js,官方 SDK 只要 npm i @douyin/pay,几行代码就搞定。核心代码大概是:

    const DouyinPay = require('@douyin/pay');
    const client = new DouyinPay({
      appKey: 'YOUR_APP_KEY',
      appSecret: 'YOUR_APP_SECRET',
      gateway: 'https://open.douyin.com/pay'
    });
    
    app.post('/order', async (req, res) => {
      const order = await client.createOrder({
        outOrderNo: `DD${Date.now()}`,
        totalAmount: req.body.amount,
        subject: '商品名称',
        notifyUrl: 'https://yourdomain.com/douyin/pay/notify'
      });
      res.json({payUrl: order.payUrl});
    });

    回调那块,我把签名校验写成了中间件,收到抖音的 POST 后,用appSecret做 HMAC‑SHA256,对比 sign 字段,一不匹配直接 403。别忘了把订单状态写进数据库,防止重复回调。

    测试与上线

    抖音提供了沙箱环境,URL 里多了 sandbox,我先在本地跑了两遍,发现支付成功后订单状态一直是“待支付”,原来是回调 URL 写成了 http,平台直接丢弃。改成 https,一切顺利。正式环境只要把 gateway 换成正式域名,重新生成密钥,提交审核。

    整个过程最让我感慨的,是从“找不到文档”到“自己写了注释”,把每一步都写进团队 Wiki,后面新人接手时只要点开链接就能复现。抖音支付不再是遥不可及的黑盒子,而是可以像点外卖一样,几分钟搞定。

    评论(0)

    以上评论仅代表用户个人观点

    您的邮箱地址不会被公开。 必填项已用 * 标注

    沙发空余