易支付安全、低费率、实时到账

易支付小程序方案 - 微信/支付宝/百度小程序全覆盖

为解决多平台小程序收款分散开发、合规难适配的问题,易支付多小程序方案通过 “统一网关层 + 分平台适配层 + 全流程闭环设计”,实现微信、支付宝、百度三大平台的支付功能全覆盖,兼顾开发效率与平台审核合规性,适配虚拟商品(课程、激活码)、服务预订(设计、咨询)、实物电商等多场景。

一、方案核心架构:三层设计实现多平台统一管控

整体架构分为 “前端适配层、支付网关层、后端服务层”,通过分层解耦,让一套核心逻辑适配不同小程序平台,同时满足各平台的专属规则:

微信/支付宝/百度小程序(前端适配层)→ 易支付统一支付网关(参数转发+签名验证+分平台路由)→ 后端服务层(订单管理+回调处理+权益交付)
                                          ↓
                          微信支付/支付宝支付/百度钱包(分平台支付渠道)

各层核心职责

层级核心功能关键作用
前端适配层分平台 UI 适配、支付参数收集、支付结果展示适配各平台小程序原生组件(如微信wx.requestPayment、支付宝my.requestPayment),确保用户体验一致
支付网关层统一接口封装、分平台参数转换、签名验证屏蔽各平台支付接口差异,开发者调用统一接口即可适配多平台;验证请求合法性,防篡改
后端服务层订单创建、回调处理、权益交付、数据统计实现 “支付 - 订单 - 交付” 全流程闭环;统一管理多平台订单数据,支持对账与风控

二、分平台适配:核心配置与支付流程(合规优先)

不同小程序平台的支付规则、接口要求差异较大,需针对性适配,确保符合平台审核标准,以下是各平台的关键配置与完整流程:

(一)微信小程序:易支付适配方案(企业 / 个人均支持)

微信小程序是流量核心场景,需区分企业主体(直连微信支付)与个人主体(通过易支付个人合规渠道),确保无违规跳转。

1. 核心配置(企业主体为例)

  • 资质准备:微信小程序企业认证(300 元 / 年,需营业执照)、易支付企业商户号(与小程序主体一致,绑定微信支付商户号);

  • 域名配置:在微信小程序后台 “开发→开发设置” 中,将易支付网关域名(如api.yipay.com)添加至 “request 合法域名”“downloadFile 合法域名”,确保接口请求不被拦截;

  • 回调配置:在易支付商户后台,设置微信小程序支付回调地址(需为小程序关联的备案域名,如https://yourdomain.com/wx/notify),用于同步支付结果。

2. 支付完整流程(虚拟课程购买场景)

  1. 前端发起订单请求:用户在微信小程序选择 “Python 入门课(99 元)”,点击 “立即购买”,前端收集用户openid(通过微信登录接口获取),调用易支付统一创建订单接口:

// 微信小程序前端代码:创建订单
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' });
        }
      });
    }
  }
});
  1. 网关层处理:易支付网关接收请求后,自动转换为微信支付 “统一下单 API” 参数,调用微信支付接口生成预支付订单,返回微信原生支付所需参数(timeStamp、nonceStr等)给前端。

  2. 回调与权益交付:用户支付成功后,微信支付回调易支付网关,网关验证签名后转发至开发者的回调地址,开发者更新订单状态并开通课程权限:

// 后端回调处理代码(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. 审核要点

  • 商品描述需 “三明确”:名称、价格、内容无模糊表述(如避免 “神秘课程”“惊喜礼包”);

  • 支付页必须用微信原生wx.requestPayment,不可自定义支付页或跳转外部链接;

  • 提审时提供测试账号与 0.01 元测试订单,备注 “易支付接口已配置,支持微信原生支付”。

(二)支付宝小程序:易支付适配方案(企业 / 个人均支持)

支付宝小程序对个人主体开放支付权限,易支付适配需符合支付宝 “小程序支付” 规范,重点关注参数格式与回调验证。

1. 核心配置

  • 资质准备:支付宝小程序企业 / 个人认证(个人需身份证,企业需营业执照)、易支付商户号(绑定对应支付宝账号);

  • 域名配置:在支付宝开放平台 “小程序→设置→开发设置” 中,添加易支付网关域名至 “服务器域名白名单”;

  • 接口授权:在支付宝开放平台开通 “alipay.trade.create”(统一收单下单接口)权限,确保易支付可调用支付宝支付接口。

2. 支付流程差异点(与微信对比)

  • 前端支付唤起:使用支付宝小程序原生my.requestPayment,参数格式需符合支付宝要求(如orderStr为支付宝返回的订单字符串):

// 支付宝小程序前端:唤起支付
my.requestPayment({
  orderStr: res.data.data.orderStr, // 易支付返回的支付宝订单字符串
  success: () => {
    my.showToast({ content: '支付成功' });
  },
  fail: (err) => {
    my.showToast({ content: `支付失败:${err.errorMessage}`, type: 'none' });
  }
});
  • 回调数据格式:支付宝回调数据为 JSON 格式,易支付网关会自动转换为统一格式,开发者无需额外适配。

3. 审核要点

  • 个人主体小程序仅支持 “单次服务 / 虚拟商品”,禁止 “会员订阅”“充值”;

  • 支付结果页需提供 “订单详情”“权益查看” 入口,避免用户支付后找不到服务;

  • 隐私协议中明确 “用户信息用于支付宝支付订单同步”,需提前获取用户授权。

(三)百度小程序:易支付适配方案(侧重企业主体)

百度小程序支付依赖 “百度钱包”,易支付适配需关注百度 “智能小程序支付” 的签名规则与订单同步要求。

1. 核心配置

  • 资质准备:百度小程序企业认证(需营业执照)、易支付企业商户号(绑定百度钱包商户号);

  • 域名配置:在百度智能小程序平台 “开发→设置→域名配置” 中,添加易支付网关域名至 “request 合法域名”;

  • 回调配置:在易支付商户后台设置百度小程序回调地址,需为百度认可的备案域名(需通过百度 “域名验证”)。

2. 支付流程关键差异

  • 用户标识获取:通过百度小程序swan.getOpenUserInfo获取用户openid,用于绑定订单;

  • 支付唤起接口:使用百度原生swan.requestPayment,参数需包含百度钱包要求的bizInfo(商户业务信息):

// 百度小程序前端:唤起支付
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. 后端统一订单管理:多平台数据聚合

使用统一的订单表,通过platform字段区分订单所属平台(wechat/alipay/baidu),支持多维度查询(如按平台、按支付状态),示例表结构:

字段名类型说明
out_trade_noVARCHAR自定义订单号(含平台标识)
platformVARCHAR所属平台(wechat/alipay/baidu)
total_feeINT订单金额(分)
statusVARCHAR订单状态(UNPAID/PAID/REFUNDED)
create_timeDATETIME订单创建时间
pay_timeDATETIME支付时间(NULL 表示未支付)

四、全流程保障:合规与风控设计

1. 平台合规保障

  • 资质一致性:易支付商户资质与小程序主体一致(企业对企业,个人对个人),避免跨主体使用;

  • 无违规跳转:所有支付操作在小程序内完成,禁止通过链接、二维码跳转至外部支付页;

  • 隐私合规:收集用户信息(如手机号、openid)前弹窗获取授权,隐私协议明确信息用途。

2. 风控与异常处理

  • 签名验证:所有接口调用均需按易支付规则生成签名,防止参数篡改;

  • 重复订单拦截:通过 “平台 + out_trade_no” 唯一标识,避免重复创建订单;

  • 异常兜底:支付超时、回调失败时,提供 “订单刷新”“联系客服” 入口,手动同步订单状态;

  • 日志留存:易支付网关记录所有支付请求、回调数据,保留至少 6 个月,便于排查问题。

五、方案优势与落地建议

1. 核心优势

  • 开发效率高:一套核心逻辑适配三大平台,减少 60% 重复开发工作量;

  • 合规性强:按各平台规则定制适配方案,审核通过率提升至 90% 以上;

  • 体验一致:多平台支付流程、UI 风格统一,用户无需适应不同操作逻辑;

  • 管理便捷:统一订单管理、对账统计,无需切换多平台后台。

2. 落地建议

  • 优先测试微信:微信小程序用户基数大、审核标准明确,先完成微信适配再扩展其他平台;

  • 使用易支付沙箱:开发阶段开启沙箱环境(无真实交易),测试完成后切换生产环境;

  • 分阶段上线:先上线企业主体小程序,验证流程稳定后再适配个人主体;

  • 关注规则更新:定期查看三大平台的支付规则公告(如微信小程序虚拟支付新规),及时调整方案。

通过以上方案,可实现易支付在微信、支付宝、百度小程序的全覆盖,兼顾合规性、开发效率与用户体验,适配个人开发者、中小企业的多场景收款需求。


返回顶部