易支付小程序方案 - 微信/支付宝/百度小程序全覆盖
为解决多平台小程序收款分散开发、合规难适配的问题,易支付多小程序方案通过 “统一网关层 + 分平台适配层 + 全流程闭环设计”,实现微信、支付宝、百度三大平台的支付功能全覆盖,兼顾开发效率与平台审核合规性,适配虚拟商品(课程、激活码)、服务预订(设计、咨询)、实物电商等多场景。
一、方案核心架构:三层设计实现多平台统一管控
整体架构分为 “前端适配层、支付网关层、后端服务层”,通过分层解耦,让一套核心逻辑适配不同小程序平台,同时满足各平台的专属规则:
微信/支付宝/百度小程序(前端适配层)→ 易支付统一支付网关(参数转发+签名验证+分平台路由)→ 后端服务层(订单管理+回调处理+权益交付) ↓ 微信支付/支付宝支付/百度钱包(分平台支付渠道)
各层核心职责
| 层级 | 核心功能 | 关键作用 |
|---|---|---|
| 前端适配层 | 分平台 UI 适配、支付参数收集、支付结果展示 | 适配各平台小程序原生组件(如微信 |
| 支付网关层 | 统一接口封装、分平台参数转换、签名验证 | 屏蔽各平台支付接口差异,开发者调用统一接口即可适配多平台;验证请求合法性,防篡改 |
| 后端服务层 | 订单创建、回调处理、权益交付、数据统计 | 实现 “支付 - 订单 - 交付” 全流程闭环;统一管理多平台订单数据,支持对账与风控 |
二、分平台适配:核心配置与支付流程(合规优先)
不同小程序平台的支付规则、接口要求差异较大,需针对性适配,确保符合平台审核标准,以下是各平台的关键配置与完整流程:
(一)微信小程序:易支付适配方案(企业 / 个人均支持)
微信小程序是流量核心场景,需区分企业主体(直连微信支付)与个人主体(通过易支付个人合规渠道),确保无违规跳转。
1. 核心配置(企业主体为例)
2. 支付完整流程(虚拟课程购买场景)
// 微信小程序前端代码:创建订单
wx.request({
url: 'https://api.yipay.com/create-order',
method: 'POST',
data: {
platform: 'wechat', // 标识平台为微信
outTradeNo: 'WX' + Date.now(), // 自定义订单号(唯一)
totalFee: 9900, // 金额(分)
body: 'Python入门课(3节视频+课件)', // 商品描述(需清晰,审核必看)
attach: JSON.stringify({ courseId: 'C001', openid: 'o6_bmjrPTlm6_2sgVt7hMZOPfL2M' }), // 附加信息
notifyUrl: 'https://yourdomain.com/wx/notify'
},
header: {
'Content-Type': 'application/json',
'sign': getSign(data) // 按易支付规则生成签名(防篡改)
},
success: (res) => {
if (res.data.code === 0) {
// 唤起微信原生支付
wx.requestPayment({
timeStamp: res.data.data.timeStamp,
nonceStr: res.data.data.nonceStr,
package: res.data.data.package,
signType: 'MD5',
paySign: res.data.data.paySign,
success: () => {
wx.showToast({ title: '支付成功' });
wx.navigateTo({ url: '/pages/course/learn?courseId=C001' }); // 跳转课程学习页
},
fail: (err) => {
wx.showToast({ title: `支付失败:${err.errMsg}`, icon: 'none' });
}
});
}
}
});// 后端回调处理代码(Node.js示例)
app.post('/wx/notify', (req, res) => {
const notifyData = req.body;
// 验证易支付签名
if (yipay.verifySign(notifyData)) {
if (notifyData.tradeStatus === 'SUCCESS') {
const attach = JSON.parse(notifyData.attach);
// 更新订单状态为已支付
updateOrder(notifyData.outTradeNo, 'PAID');
// 开通课程权限
grantCourseAccess(attach.openid, attach.courseId);
}
res.send('success'); // 必须返回“success”,否则微信会重复回调
} else {
res.send('fail');
}
});3. 审核要点
(二)支付宝小程序:易支付适配方案(企业 / 个人均支持)
支付宝小程序对个人主体开放支付权限,易支付适配需符合支付宝 “小程序支付” 规范,重点关注参数格式与回调验证。
1. 核心配置
2. 支付流程差异点(与微信对比)
// 支付宝小程序前端:唤起支付
my.requestPayment({
orderStr: res.data.data.orderStr, // 易支付返回的支付宝订单字符串
success: () => {
my.showToast({ content: '支付成功' });
},
fail: (err) => {
my.showToast({ content: `支付失败:${err.errorMessage}`, type: 'none' });
}
});3. 审核要点
(三)百度小程序:易支付适配方案(侧重企业主体)
百度小程序支付依赖 “百度钱包”,易支付适配需关注百度 “智能小程序支付” 的签名规则与订单同步要求。
1. 核心配置
2. 支付流程关键差异
// 百度小程序前端:唤起支付
swan.requestPayment({
appKey: '百度小程序AppKey',
bizInfo: JSON.stringify({
orderInfo: res.data.data.orderInfo, // 易支付返回的百度订单信息
goodsName: 'Python入门课',
totalFee: 9900
}),
success: () => {
swan.showToast({ title: '支付成功' });
},
fail: (err) => {
swan.showToast({ title: `支付失败:${err.errMsg}`, icon: 'none' });
}
});3. 审核要点
三、统一开发优化:降低多平台适配成本
1. 前端统一封装:复用核心逻辑
将多平台支付的共性逻辑(如订单创建、签名生成、支付结果处理)封装为 “支付工具类”,差异逻辑(如支付唤起接口)按平台分支处理,示例如下:
// 前端统一支付工具类
class YipayUtil {
// 创建订单(统一逻辑)
static async createOrder(platform, goodsInfo) {
const data = {
platform,
outTradeNo: `${platform.toUpperCase()}_${Date.now()}`,
totalFee: goodsInfo.price * 100,
body: goodsInfo.name,
notifyUrl: 'https://yourdomain.com/' + platform + '/notify'
};
data.sign = this.generateSign(data);
const res = await wx.request({ url: 'https://www.101epay.com/create-order', data });
return res.data;
}
// 唤起支付(分平台逻辑)
static launchPayment(platform, payParams) {
return new Promise((resolve, reject) => {
if (platform === 'wechat') {
wx.requestPayment({ ...payParams, success: resolve, fail: reject });
} else if (platform === 'alipay') {
my.requestPayment({ orderStr: payParams.orderStr, success: resolve, fail: reject });
} else if (platform === 'baidu') {
swan.requestPayment({ ...payParams, success: resolve, fail: reject });
}
});
}
}2. 后端统一订单管理:多平台数据聚合
使用统一的订单表,通过
| 字段名 | 类型 | 说明 |
|---|---|---|
| out_trade_no | VARCHAR | 自定义订单号(含平台标识) |
| platform | VARCHAR | 所属平台(wechat/alipay/baidu) |
| total_fee | INT | 订单金额(分) |
| status | VARCHAR | 订单状态(UNPAID/PAID/REFUNDED) |
| create_time | DATETIME | 订单创建时间 |
| pay_time | DATETIME | 支付时间(NULL 表示未支付) |
四、全流程保障:合规与风控设计
1. 平台合规保障
2. 风控与异常处理
五、方案优势与落地建议
1. 核心优势
2. 落地建议
通过以上方案,可实现易支付在微信、支付宝、百度小程序的全覆盖,兼顾合规性、开发效率与用户体验,适配个人开发者、中小企业的多场景收款需求。
下一篇:没有了!
