拉卡拉API支持小程序支付吗?微信小程序支付参数配置
微信小程序是商家变现的核心场景,但直接对接微信支付门槛高、周期长。拉卡拉API能不能支持小程序支付?需要配置哪些参数?服务端怎么下单?前端怎么调起?本文详细解析拉卡拉聚合支付API的微信小程序支付能力、参数配置、完整接入流程和常见问题。
微信小程序通过拉卡拉API对接支付架构示意
1. 拉卡拉API支持小程序支付吗
|
明确回答:支持。拉卡拉聚合支付API一站式支持微信小程序、APP、公众号、H5全场景收款。小程序支付通过JSAPI渠道类型实现,服务端调用拉卡拉统一下单接口传入小程序用户openid,获取支付参数后小程序前端调起微信支付,底层走微信官方支付通道。 |
支持能力概览:
• 支付场景:微信小程序支付(JSAPI)、微信APP支付、微信公众号支付、微信H5支付、微信扫码支付、支付宝全场景
• 接入方式:原生JSAPI调起(推荐)、聚合收银台web-view加载(兼容方案)
• 底层通道:拉卡拉是"聚合收银"方案,底层走微信和支付宝官方通道,资金安全合规
• 前置条件:需有已认证的微信小程序和关联的微信商户号(拉卡拉可协助申请)
• 对接周期:3-5个工作日完成开发联调,比直接对接微信支付节省76%技术成本
2. 两种接入方式对比
|
对比项 |
原生JSAPI调起(推荐) |
聚合收银台web-view |
|
实现原理 |
拉卡拉下单返回微信支付参数,小程序wx.requestPayment直接调起 |
拉卡拉返回收银台URL,小程序web-view加载收银台页面 |
|
用户体验 |
原生支付弹窗,体验流畅,无页面跳转 |
需加载H5收银台,多一次页面跳转 |
|
开发量 |
需服务端下单+前端调起,代码量适中 |
只需获取URL并加载,开发量最小 |
|
域名配置 |
只需配置request合法域名 |
需配置request和web-view业务域名 |
|
支付方式 |
仅微信支付(小程序内只能微信支付) |
收银台可支持微信+支付宝(小程序内实际仅微信) |
|
推荐场景 |
绝大多数小程序支付场景 |
快速验证、无开发资源、兼容多渠道 |
3. 前置准备
3.1 1. 微信侧准备
• 已认证的微信小程序:在微信公众平台注册并完成企业认证(300元/年)
• 微信商户号:在微信支付商户平台申请,主体需与小程序一致
• 关联小程序:在微信商户平台→产品中心→APPID账号管理中,关联小程序APPID
• 获取小程序AppID:微信公众平台→开发→开发设置→AppID
• 获取用户openid:小程序端通过wx.login获取code,服务端用code换取openid
3.2 2. 拉卡拉侧准备
• 开通拉卡拉商户:联系95016或商务团队,提交企业资质开通聚合支付
• 获取API凭证:拉卡拉开放平台(o.lakala.com)获取商户号(MID)、终端号(TID)、AppKey、API Secret
• 配置回调地址:在开放平台配置支付结果异步通知URL(必须公网可访问的HTTPS地址)
• 开通JSAPI支付:确认商户号已开通微信JSAPI支付权限
• 配置小程序AppID:将小程序AppID提交给拉卡拉,绑定到商户号下
3.3 3. 小程序后台配置
• request合法域名:微信公众平台→开发→开发设置→服务器域名,添加拉卡拉API域名
○ 测试环境:https://test.wsmsd.cn
○ 生产环境:https://s2.lakala.com
• web-view业务域名(仅收银台方式需要):添加拉卡拉收银台域名
• IP白名单:将服务端出口IP添加到微信商户平台IP白名单
4. 小程序支付核心参数配置
4.1 服务端下单请求核心参数
|
参数名 |
类型 |
必填 |
说明 |
|
merchantNo |
String |
是 |
拉卡拉商户号(MID) |
|
termNo |
String |
是 |
拉卡拉终端号(TID) |
|
outTradeNo |
String |
是 |
商户订单号,每次请求唯一,不可重复 |
|
totalAmount |
String |
是 |
订单总金额,单位为分(如100元传10000) |
|
payMode |
String |
是 |
支付方式,微信支付传 WECHAT |
|
channelType |
String |
是 |
渠道类型,小程序支付传 JSAPI |
|
subAppId |
String |
是 |
微信小程序AppID(获取openid所用的appid) |
|
openId |
String |
是 |
用户在小程序appid下的唯一标识(微信openid) |
|
body |
String |
是 |
商品描述,如"小程序订单支付" |
|
notifyUrl |
String |
是 |
支付结果异步回调地址,公网HTTPS |
|
attach |
String |
否 |
附加数据,回调时原样返回,可传业务标识 |
|
orderTime |
String |
是 |
订单时间,格式yyyyMMddHHmmss |
4.2 下单响应参数(前端调起支付用)
下单成功后,拉卡拉返回微信小程序调起支付所需的参数:
• appId:小程序AppID(与请求中subAppId一致)
• timeStamp:时间戳,当前秒级时间
• nonceStr:随机字符串,32位以内
• package:预支付交易会话ID,格式为 prepay_id=xxxxxx
• signType:签名方式,通常为RSA或MD5
• paySign:支付签名,拉卡拉已用微信商户密钥签好
|
关键提示:openid是小程序支付的必填参数,必须是用户在当前小程序AppID下的openid。通过wx.login获取code后,服务端调用微信auth.code2Session接口换取openid。openid与AppID绑定,不同小程序的openid不通用。 |
5. 服务端下单完整流程
5.1 步骤1:小程序端获取code
小程序前端调用wx.login()获取临时登录凭证code,将code发送给商户服务端。
5.2 步骤2:服务端用code换取openid
商户服务端调用微信接口:
• 请求地址:https://api.weixin.qq.com/sns/jscode2session
• 参数:appid(小程序AppID)、secret(小程序AppSecret)、js_code(前端传来的code)、grant_type=authorization_code
• 返回:openid(用户唯一标识)、session_key(会话密钥)
• 建议:将openid与用户账号绑定,后续支付直接使用,无需每次重新获取
5.3 步骤3:服务端调用拉卡拉统一下单
商户服务端组装下单参数(见上方参数表),使用拉卡拉API Secret对请求参数签名后,调用拉卡拉统一下单接口。拉卡拉系统调用微信支付创建预支付订单,生成prepay_id。
5.4 步骤4:返回支付参数给小程序
拉卡拉返回调起支付所需的6个参数(appId、timeStamp、nonceStr、package、signType、paySign),商户服务端将这些参数透传给小程序前端。
6. 小程序前端调起支付
6.1 wx.requestPayment调用
小程序前端收到支付参数后,调用wx.requestPayment()调起微信支付:
• timeStamp:拉卡拉返回的时间戳(注意是字符串类型)
• nonceStr:拉卡拉返回的随机字符串
• package:拉卡拉返回的prepay_id=xxx
• signType:拉卡拉返回的签名方式(RSA/MD5)
• paySign:拉卡拉返回的支付签名
6.2 支付结果回调处理
• success回调:用户支付成功,小程序端可跳转到支付成功页,但不能以此作为支付成功依据,必须以服务端异步回调为准
• fail回调:用户取消支付或支付失败,提示用户重新支付
• complete回调:支付流程结束(无论成功失败),可做清理操作
|
重要:小程序端的success回调仅表示用户完成了支付操作,实际支付结果必须以拉卡拉异步回调(notifyUrl)为准。前端收到success后应主动调用服务端查询接口确认订单状态,防止因网络问题导致回调丢失。 |
7. 支付回调处理
7.1 异步回调通知
用户支付成功后,拉卡拉会向商户配置的notifyUrl发送POST请求,通知支付结果。
7.2 回调处理规范
1. 验证签名:使用拉卡拉公钥验证回调签名,确保回调来源可信,防止伪造
2. 幂等处理:同一订单可能收到多次回调,根据outTradeNo做幂等判断,避免重复更新订单
3. 更新订单状态:验签通过后,将订单状态更新为"已支付",触发后续业务逻辑(发货、开通服务等)
4. 返回成功响应:处理完成后返回指定的成功响应(通常是SUCCESS或特定JSON),否则拉卡拉会重试推送
5. 记录回调日志:记录原始回调报文,便于对账和排查问题
7.3 回调重试机制
• 拉卡拉收到非成功响应或超时未响应时,会按间隔重试推送
• 建议同时有定时任务主动查询"待支付"订单状态,防止回调丢失
• 主动查询可调用拉卡拉订单查询接口,传入outTradeNo获取最新支付状态
8. 接入六步流程
微信小程序支付接入六步流程示意
8.1 第一步:微信商户号申请与关联
• 注册微信小程序并完成企业认证
• 申请微信支付商户号(拉卡拉可协助申请)
• 在微信商户平台关联小程序AppID
• 获取小程序AppID和AppSecret
8.2 第二步:拉卡拉API配置
• 开通拉卡拉聚合支付商户
• 获取商户号(MID)、终端号(TID)、AppKey、API Secret
• 配置支付回调地址notifyUrl
• 提交小程序AppID给拉卡拉绑定
8.3 第三步:域名白名单配置
• 微信公众平台配置request合法域名(拉卡拉测试和生产域名)
• 微信商户平台配置IP白名单(服务端出口IP)
• 如用收银台方式,额外配置web-view业务域名
8.4 第四步:服务端下单开发
• 实现wx.login code换取openid逻辑
• 集成拉卡拉SDK或自行封装签名和请求
• 调用统一下单接口,传入JSAPI渠道和openid
• 获取支付参数并返回给小程序前端
8.5 第五步:前端调起支付
• 小程序端调用wx.requestPayment,传入拉卡拉返回的支付参数
• 处理success/fail/complete回调
• 支付成功后调用服务端确认订单状态
• 跳转支付结果页面
8.6 第六步:回调验签与联调上线
• 实现异步回调接收、验签、幂等处理
• 在测试环境跑通完整支付流程
• 切换生产环境,小流量验证
• 正式上线,监控支付成功率和回调到达率
9. 常见问题解答
9.1 没有微信商户号能用拉卡拉小程序支付吗?
可以。拉卡拉可以协助商户申请微信支付商户号,商户只需提供企业资质,拉卡拉走快速入驻通道。但小程序本身必须是已认证的企业主体小程序,个人小程序无法开通微信支付。如果已有微信商户号,直接关联小程序AppID即可,拉卡拉支持使用商户自有微信商户号。
9.2 openid获取失败怎么办?
openid获取失败常见原因:①AppID或AppSecret配置错误;②code已过期(code有效期5分钟,只能使用一次);③小程序未在微信公众平台配置服务器域名;④网络问题。建议:将openid与用户账号绑定缓存,避免每次支付都重新获取;服务端做好错误处理和重试机制。
9.3 小程序支付提示"商户号该产品权限未开通"怎么办?
这是因为微信商户号未开通JSAPI/小程序支付权限。解决方法:登录微信商户平台→产品中心→我的产品,确认JSAPI支付已开通;在APPID账号管理中确认小程序AppID已关联且授权确认;联系拉卡拉客服确认商户号已绑定小程序支付权限。通常开通后10分钟左右生效。
9.4 支付成功了但回调没收到怎么办?
首先检查:①notifyUrl是否为公网可访问的HTTPS地址;②回调地址是否在拉卡拉开放平台正确配置;③服务端是否返回了成功响应(非成功会重试);④服务器防火墙是否拦截了拉卡拉回调IP。如果确认配置正确但仍未收到,使用拉卡拉订单查询接口主动查询订单状态,同时联系技术支持排查。建议业务系统必须有主动查询补单机制。
9.5 拉卡拉小程序支付费率是多少?
微信小程序支付费率与微信官方标准一致,通常为0.6%(不同行业可能有差异,如非营利组织、公立医院等有优惠费率)。拉卡拉作为聚合支付机构,不额外加收费率,商户按微信官方标准费率结算。具体费率以签约时的协议为准,可联系95016或客户经理确认。
9.6 uni-app或Taro开发的小程序怎么对接?
uni-app和Taro等跨端框架都封装了微信小程序的支付API,调用方式与原生小程序一致。uni-app使用uni.requestPayment(),Taro使用Taro.requestPayment(),参数与wx.requestPayment完全相同。需要注意在manifest.json中配置小程序AppID,服务端下单逻辑与原生小程序无差异。
9.7 小程序支付能同时对接分账吗?
可以。拉卡拉统一下单接口支持同时传入分账参数,用户支付成功后自动触发分账。在下单请求中添加分账接收方列表(RecvDatas)和分账计算类型(CalType),即可实现"支付+分账"一步完成。适合电商平台、外卖平台、内容平台等需要多方分成的小程序场景。
9.8 测试环境怎么测试小程序支付?
拉卡拉提供测试环境(test.wsmsd.cn)和测试商户号,开发者可在测试环境完成联调。微信小程序测试支付需要使用微信支付沙箱环境,或使用小额真实支付测试(建议0.01元)。测试时注意:①测试环境域名需添加到小程序request合法域名;②测试环境返回的支付参数可能需要使用微信沙箱钱包;③联调通过后切换生产环境密钥和域名。
总结:拉卡拉聚合支付API明确支持微信小程序支付,通过JSAPI渠道类型实现。两种接入方式:原生JSAPI调起(推荐,体验流畅)和聚合收银台web-view(开发量小)。前置准备包括:微信小程序认证+微信商户号+关联AppID、拉卡拉商户开通+API凭证+回调配置、小程序后台域名白名单。服务端下单核心参数:merchantNo、termNo、outTradeNo、totalAmount(单位分)、payMode=WECHAT、channelType=JSAPI、subAppId(小程序AppID)、openId(用户openid)、notifyUrl。下单返回appId、timeStamp、nonceStr、package、signType、paySign六个参数,小程序前端wx.requestPayment调起支付。支付结果以异步回调为准,回调需验签+幂等+返回成功响应,配合主动查询防丢失。接入六步:微信商户号申请→拉卡拉API配置→域名白名单→服务端下单开发→前端调起支付→回调验签联调上线。对接周期3-5个工作日,费率与微信官方一致0.6%,支持同时对接分账功能。



