拉卡拉API支付接口支持小程序支付吗?微信小程序支付接入与参数配置
微信小程序已成为移动互联网的重要应用形态,电商、服务、内容等各类业务纷纷上线小程序,小程序支付是小程序商业化的核心能力。拉卡拉API支付接口是否支持小程序支付?微信小程序支付怎么接入?需要哪些参数?前端如何调起?与JSAPI支付有什么区别?本文将详细解析拉卡拉API支付接口的小程序支付能力、接入流程、接口参数、前端wx.requestPayment调起方法、openid获取、回调处理、与其他支付方式的区别,以及常见问题和最佳实践。
|
核心结论:拉卡拉API支付接口完全支持微信小程序支付,通过统一的下单接口获取小程序支付参数(paySign、timeStamp、nonceStr、package、signType),小程序前端使用wx.requestPayment API调起微信支付完成付款。接入流程为:小程序wx.login获取code→后端用code换取用户openid→调用拉卡拉统一下单API(传入openid和支付类型miniprogram)→获取支付参数→前端wx.requestPayment调起支付→用户确认→同步返回结果+异步回调确认。小程序支付基于微信JSAPI支付能力,需在微信支付平台关联小程序并配置支付授权目录。拉卡拉统一API一次接入可同时支持小程序、H5、APP、扫码等多种支付方式,开发效率高。 |
1. 拉卡拉API支持小程序支付吗?
微信小程序内支付全流程:用户下单→小程序请求后端→后端调用拉卡拉API→返回支付参数→wx.requestPayment调起支付→用户确认→返回结果→后端回调确认
支持。拉卡拉API支付接口提供微信小程序支付能力,商户通过统一API即可接入小程序支付。
1.1 什么是小程序支付?
小程序支付是微信支付为小程序场景提供的支付方式,用户在微信小程序内下单后,小程序调起微信支付收银台,用户输入密码或指纹完成支付,资金实时到账。小程序支付体验流畅,无需跳转,用户在小程序内即可完成全流程。
1.2 小程序支付的特点
• 体验流畅:在小程序内直接调起微信支付,无需跳转外部页面
• 用户基数大:微信月活超13亿,小程序支付用户覆盖广
• 转化率高:支付路径短,用户熟悉微信支付,转化率高于H5支付
• 基于JSAPI:小程序支付底层基于微信JSAPI支付,需用户openid
• 统一API:拉卡拉统一支付API支持,与其他支付方式共用接口
1.3 小程序支付与其他支付方式对比
|
支付方式 |
使用场景 |
是否需要openid |
|
小程序支付 |
微信小程序内 |
需要(wx.login获取) |
|
JSAPI支付 |
微信内置浏览器(公众号H5) |
需要(网页授权获取) |
|
H5支付 |
移动端浏览器(非微信内) |
不需要 |
|
APP支付 |
商户自有APP内 |
不需要 |
|
扫码支付 |
用户扫码/被扫 |
不需要 |
2. 小程序支付接入流程
小程序支付API接入架构:小程序前端wx.login→后端code换openid→调用拉卡拉统一下单→返回paySign等参数→wx.requestPayment调起→同步返回+异步回调
2.1 完整接入流程
1. 开通小程序支付:在拉卡拉商户后台开通小程序支付,关联微信小程序
2. 配置小程序:在微信公众平台配置小程序服务器域名、支付授权目录
3. 获取用户openid:小程序前端wx.login获取code,后端用code换取openid
4. 调用统一下单API:后端调用拉卡拉下单接口,传入openid和支付类型miniprogram
5. 获取支付参数:拉卡拉返回小程序支付参数(paySign、timeStamp、nonceStr、package、signType)
6. 前端调起支付:小程序前端使用wx.requestPayment传入支付参数,调起微信支付
7. 用户确认支付:用户在微信支付收银台输入密码/指纹确认
8. 同步返回结果:微信支付结果通过wx.requestPayment的success/fail回调返回小程序
9. 异步回调通知:拉卡拉异步通知商户后端支付结果
10. 订单查询确认:商户后端主动查询订单状态,确保结果可靠
2.2 第一步:开通与配置
2.2.1 拉卡拉侧配置
• 开通拉卡拉商户,完成企业资质审核
• 开通小程序支付产品,关联微信小程序AppID
• 配置支付回调地址(notify_url)
• 获取API密钥(app_key、app_secret)
2.2.2 微信侧配置
• 注册微信小程序,获取AppID和AppSecret
• 小程序认证(企业主体需认证,300元/年)
• 在微信支付平台关联小程序(需已有微信支付商户号或通过拉卡拉服务商模式)
• 配置小程序服务器域名(request合法域名、socket合法域名)
• 配置支付授权目录(小程序支付的页面路径)
2.3 第二步:获取用户openid
小程序支付需要用户的openid(用户在当前小程序下的唯一标识),获取流程:
1. 小程序前端调用wx.login(),获取临时登录凭证code
2. 将code发送到商户后端
3. 后端使用code + AppID + AppSecret调用微信auth.code2Session接口
4. 微信返回openid、session_key、unionid等
5. 后端保存openid与用户的关联关系
注意:
• code只能使用一次,有效期5分钟
• openid是用户在当前小程序下的唯一标识,不同小程序openid不同
• 如需跨应用统一用户标识,可使用unionid(需绑定微信开放平台)
• 建议用户登录时获取并缓存openid,支付时直接使用
2.4 第三步:调用统一下单API
商户后端调用拉卡拉统一下单接口,传入小程序支付参数。
2.4.1 关键请求参数
|
参数名 |
必填 |
说明 |
|
merchant_no |
是 |
拉卡拉商户号 |
|
out_trade_no |
是 |
商户订单号,唯一 |
|
total_amount |
是 |
支付金额,单位分 |
|
subject |
是 |
商品标题 |
|
pay_type |
是 |
支付类型,固定为miniprogram(小程序支付) |
|
openid |
是 |
用户openid,通过wx.login获取 |
|
appid |
是 |
微信小程序AppID |
|
notify_url |
是 |
异步通知地址,公网HTTPS |
|
client_ip |
是 |
用户端IP |
|
extend_params |
否 |
扩展参数,如分账参数 |
2.4.2 响应参数(小程序支付参数)
下单成功后,拉卡拉返回调起微信支付所需的参数:
• timeStamp:时间戳,秒级
• nonceStr:随机字符串
• package:订单详情扩展字符串,格式为prepay_id=xxx
• signType:签名方式,一般为MD5或RSA
• paySign:签名,用于wx.requestPayment验证
这些参数直接传给小程序前端,用于调起微信支付。
2.5 第四步:前端调起支付
小程序前端使用wx.requestPayment API调起微信支付。
2.5.1 代码示例
// 小程序前端代码
wx.requestPayment({
timeStamp: res.timeStamp, // 后端返回的时间戳
nonceStr: res.nonceStr, // 后端返回的随机串
package: res.package, // 后端返回的prepay_id
signType: res.signType, // 签名方式
paySign: res.paySign, // 后端返回的签名
success(res) {
// 支付成功,显示成功页面
console.log('支付成功', res);
},
fail(res) {
// 支付失败或用户取消
console.log('支付失败', res);
}
})
2.5.2 注意事项
• timeStamp必须是字符串类型(秒级时间戳)
• package必须以"prepay_id="开头
• paySign由后端生成,前端不要自己生成签名
• 用户取消支付会进入fail回调,errMsg包含"cancel"
• 支付成功的同步回调不可靠,必须以后端异步回调为准
2.6 第五步:支付结果处理
2.6.1 同步返回(前端)
• wx.requestPayment的success回调表示用户完成支付操作
• fail回调表示支付失败或用户取消
• 同步返回仅用于前端UI展示,不作为订单状态变更依据
• 前端收到success后,应请求后端查询订单确认状态
2.6.2 异步回调(后端)
• 支付完成后,拉卡拉异步POST通知商户notify_url
• 通知含订单号、支付状态、金额、支付时间、签名等
• 后端验证签名,更新订单状态,处理发货/分账等业务逻辑
• 处理成功返回"success",否则拉卡拉重试通知
• 回调需做幂等处理,防止重复通知导致重复发货
2.6.3 主动查询(后端)
• 如未收到回调,后端可主动调用订单查询API确认支付状态
• 前端支付成功页可轮询后端查询接口(每3秒一次,最多10次)
• 查询结果与回调结果一致时更新订单状态
3. 小程序支付与分账联动
小程序支付可与拉卡拉分账功能联动,实现支付后自动分账:
• 下单时在extend_params中传入分账参数(分账接收方、比例/金额)
• 支付成功后自动触发分账,资金分配给各接收方
• 支持平台手续费+多方分账同时实现
• 分账结果通过分账回调通知商户
这特别适合小程序电商平台、小程序服务平台等需要多方分账的业务。
4. 常见问题解答
Q:小程序支付必须要openid吗?
A:是的。小程序支付基于微信JSAPI支付,必须传入用户openid。openid通过wx.login获取code,后端用code换取。建议在用户登录小程序时就获取并缓存openid,支付时直接使用,避免支付流程中额外请求。
Q:小程序支付和公众号JSAPI支付有什么区别?
A:两者底层都是微信JSAPI支付,都需要openid,但获取openid的方式不同:小程序通过wx.login获取code换取,公众号JSAPI通过网页授权(OAuth2.0)获取。调起支付的API不同:小程序用wx.requestPayment,公众号H5用WeixinJSBridge.invoke。支付场景不同:小程序在小程序内,公众号在微信内置浏览器网页中。拉卡拉统一API支持两种方式,通过pay_type区分(miniprogram/jsapi)。
Q:小程序支付报错"支付验证签名失败"怎么办?
A:签名失败通常是参数问题:1)检查paySign是否由后端正确生成(前端不要自己签名);2)确认timeStamp是字符串类型(不是数字);3)确认package格式为"prepay_id=xxx";4)确认signType与签名时使用的一致;5)确认小程序AppID与下单时传入的一致。建议后端严格按微信签名规则生成,使用SDK可避免签名错误。
Q:小程序支付需要微信支付商户号吗?
A:通过拉卡拉接入小程序支付,使用拉卡拉的微信支付商户号(服务商模式),商户无需自己申请微信支付商户号。拉卡拉作为微信支付服务商,为商户发起小程序支付,资金结算到商户账户。商户只需提供小程序AppID并完成关联配置即可。如商户已有自己的微信支付商户号,也可使用直连模式。
Q:小程序支付的费率是多少?
A:小程序支付的费率与微信支付普通费率一致,一般为0.6%(不同行业可能不同)。通过拉卡拉接入的具体费率根据商户行业、交易量确定,可与拉卡拉商务团队沟通。小程序支付不额外收费,与其他微信支付方式费率相同。
Q:小程序支付可以退款吗?
A:可以。通过拉卡拉退款API发起退款,支持全额退款和部分退款。退款资金原路退回用户微信支付账户,一般1-3个工作日到账。退款时如已分账,需同步处理分账退回(从各接收方扣回对应金额)。小程序支付退款流程与其他支付方式相同。
Q:用户在小程序中支付后,怎么确认支付成功?
A:三重确认机制:1)前端wx.requestPayment的success回调(用户操作完成);2)后端异步回调通知(支付机构主动通知,最权威);3)后端主动查询订单状态(兜底)。建议以后端异步回调为准更新订单状态,前端success后请求后端查询确认,未收到回调时主动查询。不要仅凭前端success就认为支付成功。
Q:小程序支付有金额限制吗?
A:小程序支付受微信支付限额和用户银行卡限额限制。一般单笔限额5万元,单日限额根据用户银行卡不同。商户侧无特殊限额(除非风控设置)。大额支付建议提醒用户使用支持大额的银行卡。具体限额以微信支付和用户发卡行规定为准。
拉卡拉API支付接口完全支持微信小程序支付,通过统一的下单接口获取小程序支付参数(paySign、timeStamp、nonceStr、package、signType),小程序前端使用wx.requestPayment调起微信支付,用户在小程序内即可完成付款,体验流畅转化率高。接入流程清晰:开通小程序支付并配置→wx.login获取code→后端换取openid→调用拉卡拉统一下单API(pay_type=miniprogram,传入openid和appid)→获取支付参数→前端wx.requestPayment调起→同步返回+异步回调+主动查询三重确认。小程序支付基于微信JSAPI支付,需用户openid,与公众号JSAPI支付的区别在于openid获取方式和调起API不同。通过拉卡拉统一API一次接入可同时支持小程序、H5、APP、扫码等多种支付方式,还可与分账功能联动,实现支付后自动多方分账。建议使用官方SDK避免签名错误,建立回调+查询双重结果确认机制,确保支付结果可靠。对于拥有微信小程序的企业,拉卡拉小程序支付是接入简单、体验优秀、功能完整的支付解决方案。
本文小程序支付接口参数和流程基于拉卡拉API支付接口和微信支付公开信息整理,具体接口名称、参数名、签名方式、配置要求以实际接入的API文档和微信支付官方文档为准。建议接入前下载最新版API文档,在沙箱环境完成联调,并特别注意openid获取和支付参数传递。



