以下是基于Java的微信小程序支付和退款开发文档及关键开发指引:
一、官方文档入口
- 微信小程序支付文档
URL:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml 1 - 微信小程序退款文档
URL:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_9.shtml 1 - 退款API接口文档
URL:https://api.mch.weixin.qq.com/v3/refund/domestic/refunds 5
二、核心开发流程
支付功能实现
- 参数准备
- 小程序
appid
、商户号mch_id
、支付密钥key
14。 - 商户订单号
out_trade_no
(需唯一)4。
- 小程序
- 统一下单
- 调用微信支付API生成预支付交易单,需传递商品描述、金额(单位:分)、回调通知地址等参数 16。
- 调起支付
- 前端通过
wx.requestPayment
调起支付,需传递timeStamp
、nonceStr
、package
(预支付ID)、signType
等参数 1。
- 前端通过
- 异步通知
- 支付成功后,微信会通过回调地址发送异步通知,需验证签名并更新订单状态 16。
退款功能实现
- 查询订单状态
- 调用订单查询接口确认订单是否支付成功 6。
- 发起退款请求
- 使用
POST
请求调用/v3/refund/domestic/refunds
接口,需传递以下参数:transaction_id
(微信支付订单号)或out_trade_no
(商户订单号)5。out_refund_no
(商户退款单号,需唯一)45。total_fee
(原订单金额,单位:分)、refund_fee
(退款金额)45。
- 使用
- 处理退款结果
- 接收微信异步通知或主动查询退款状态,更新业务系统 36。
三、Java开发注意事项
- 环境要求
- 使用 JDK 1.8 以上版本,避免证书编译时出现密钥长度异常 1。
- 参数处理
- 金额必须为整数(单位:分),退款金额不可超过原订单金额 45。
- 退款单号需唯一,避免重复退款 35。
- 签名与加密
- 使用微信提供的签名算法生成请求参数签名(如HMAC-SHA256)57。
- 需加载商户API证书进行HTTPS双向认证 57。
- 频率限制
- 退款请求错误频率限制为6次/秒,历史订单退款频率限制为5000次/分钟 35。
四、其他重要提示
- 交易时间限制
- 超过一年的订单无法发起退款 35。
- 分次退款
- 单笔订单最多分50次退款,每次退款需间隔1分钟 35。
- 异步处理
- 退款结果需通过异步通知或主动查询接口获取,不可依赖同步返回 36。
建议结合微信官方文档与示例代码进行调试,确保接口兼容性及参数准确性 15。