4-7 作业支付专题小结
课程知识脉络回顾
第一部分:企业注册与税务
整个支付专题从企业注册讲起,因为当前所有支付平台都要求企业主体。主要内容:
| 步骤 | 说明 |
|---|---|
| 准备工作 | 场地、人员、企业名称 |
| 提交资料 | 公司章程、住所证明及其他工商材料 |
| 办理税务 + 银行开户 | 拿到营业执照后开通金税盘(280 元)或税务 UK(免费),银行开户有开户费和月手续费 |
对于有条件的开发者,注册企业不仅能学习支付功能,还可以承接项目、享受国家和地方对小微企业的扶持政策。
第二部分:微信支付必要条件
| 条件 | 说明 |
|---|---|
| 企业主体 | 微信/支付宝认证必须 |
| HTTPS + ICP 备案域名 | 支付平台硬性要求 |
| 云服务器 | 购买 3 个月以上才能 ICP 备案,建议买低配置即可 |
| SSL 证书 | Let's Encrypt 免费申请 |
第三部分:小程序支付开发完整闭环
从用户下单到接收微信通知,整个支付流程已经完整实现了一遍:
用户下单 → 后端 JSAPI 下单 → RSA 签名 → 获取 prepay_id
→ 生成支付参数 → 小程序调起支付 → 用户完成支付
→ 微信通知商户 → AES-256-GCM 解密 → 更新订单状态
text
课后作业
课程中未涉及的支付接口,作为作业自行完成:
必做:申请退款
接口信息:
| 项目 | 值 |
|---|---|
| URL | https://api.mch.weixin.qq.com/v3/refund/domestic/refunds |
| 方法 | POST |
核心参数包括:商户订单号(out_trade_no)或微信订单号(transaction_id,二选一)、商户退款单号(out_refund_no)、退款原因(reason)、退款结果回调地址(notify_url)、退款金额(amount 对象)。
退款流程中需要考虑的业务逻辑:
- 直接退款:用户发起退款,直接调用退款接口
- 审核退款:用户发起退款申请,商户后台审核通过后再调用退款接口
必做:查询退款
微信提供查询单笔退款 API,通过商户退款单号查询退款状态。
必做:退款结果通知
退款通知与支付通知机制相同,区别在于 event_type 不同。通知数据同样使用 AES-256-GCM 加密,复用已有的 decryptApiV3 方法即可解密。
选做:账单相关
- 申请交易账单
- 申请资金账单
- 下载账单
这些接口在大多数业务场景中用不上,了解即可。
第三方支付 SDK 推荐
课程中我们手写了完整的支付流程,目的是理解整个签名和交互机制。实际项目中可以使用第三方 SDK 简化开发。
wechatpay-node-v3
NPM 包名:wechatpay-node-v3-ts,主要特点:
| 特点 | 说明 |
|---|---|
| 兼容 APIv2 和 APIv3 | 适合老项目迁移 |
| 链式写法 | 代码可读性好 |
| 功能完整 | 下单、查询、关闭、合单、H5 支付等 |
安装方式:
pnpm add wechatpay-node-v3-ts
bash
基本使用:
import WxPay from 'wechatpay-node-v3-ts';
const pay = new WxPay({
appid: 'your_appid',
mchid: 'your_mchid',
publicKey: Buffer.from('...'), // 平台证书
privateKey: Buffer.from('...'), // 商户私钥
});
// JSAPI 下单(链式调用)
const result = await pay.transactions_jsapi({
description: '测试商品',
out_trade_no: 'ORDER_001',
amount: { total: 1 },
payer: { openid: 'user_openid' },
notify_url: 'https://your.domain.com/api/v1/pay/notify',
});
typescript
学习成果检验清单
| 检验项 | 是否掌握 |
|---|---|
| 企业注册流程及费用 | |
| ICP 备案与 SSL 证书申请 | |
| 微信商户平台 API 密钥和证书配置 | |
| APIv3 签名机制(SHA256-RSA) | |
| Authorization 请求头生成 | |
| JSAPI 下单获取 prepay_id | |
| 小程序调起支付参数签名 | |
| AES-256-GCM 通知密文解密 | |
| FRP 内网穿透调试通知接口 | |
| DTO 参数校验(class-validator) |
参考资源
- 微信支付开发指引 - 完整开发文档
- wechatpay-node-v3 - 第三方 Node.js SDK
- 微信支付 APIv3 - 接口文档
↑