微信支付:请求参数与订单信息不一致

问题描述

​ 在小程序支付退款调用api(https://api.mch.weixin.qq.com/secapi/pay/refund)时出现您的请求参数与订单信息不一致的问题

解决方案
  1. 常见错误是total_feerefund_fee金额设定错误,这两个参数单位为,并且只能为整数,total_fee的值需与原始的订单支付的金额相对应,refund_fee的值不能超过可退款的余额

  2. appid 需与小程序id对应

  3. 退款单out_refund_no不能重复

  4. 商户号id与订单生成时的商户号id不一致

  5. 我们项目的错误出在这种较为少见的情况:

    1. 我们是通过云开发的CloudPay.unifiedOrder()的api创建的支付单,传入参数列表包含子商户号id[subMchId] 在这里插入图片描述

      然后在后台调用的时候通过调用退款接口进行退款处理,但是调用的时候传入的商户号是商户号id[mch_id],并且通过微信订单号[transaction_id]查询,就出现了您的请求参数与订单信息不一致的情况,后来想在退款接口传入子商户号,发现并不满足条件,则通过云开发api的CloudPay.refund()解决
      在这里插入图片描述

备注
  1. 云开发的退款功能需要授权,在微信开发者工具->云开发->设置->全局设置页的微信支付配置中,即
    在这里插入图片描述

    再通过授权网址进行通过授权即可

  2. 示例代码

    const result = await cloud.cloudPay.refund({
        nonceStr,  // 随机字符串 可通过Math.random().toString(36).substr(2, 13)生成
        total_fee,  // 订单总额
        refund_fee, // 退款金额
        sub_mch_id, // 需授权退款且与订单生成时一致的商户号id
        out_trade_no, // 与transaction_id二选一
        out_refund_no // 商户自建退款订单号,退款单不能重复  
    })
    
  3. 触发云函数

在这里插入图片描述

总结

​ 这次错误其实有预兆,因为我们在通过商户订单号[out_trade_no]查询不到订单,但是通过微信订单号[transaction_id]能查询到订单时直接忽略了,以为微信支付不能通过商户订单号[out_trade_no]查询,在接下来的退款操作时就出现了以上参数与订单信息不一致的错误,纠错了半天,殊不知是子商户号商户号填写错误的问题

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java小程序可以使用微信支付接口实现支付功能。对接微信支付接口的步骤如下: 1. 获取微信支付接口的开发者账号,并进行账号绑定和认证。 2. 在Java小程序的后端代码中,引入微信支付的SDK,可以使用第三方的开源SDK,如微信官方提供的java-sdk或者其他优秀的支付SDK。 3. 在小程序中,创建一个支付请求页面,用户选择商品并点击支付按钮。将用户购买的商品信息传递到后台。 4. 后台接收到支付请求后,调用微信支付接口,传递必要的支付参数,包括商户号、商户订单号、支付金额、支付方式等。 5. 微信支付接口会返回一个预支付交易会话标识prepay_id,后台将该值返回给前端,前端将该值存储到小程序的支付参数中。 6. 前端根据prepay_id、商户号、商户订单号等参数,调用微信支付的API,通过微信支付页面生成支付订单。 7. 用户在小程序中看到生成的支付订单,选择支付方式(如微信支付或其他支付方式),输入支付密码等信息完成支付。 8. 支付成功后,微信支付接口会向后台发送支付结果通知,后台需要对接收到的结果进行验证,包括验证订单是否支付成功、验证订单金额是否一致等。 9. 后台验证通过后,向前端返回支付成功的信息,前端展示支付成功页面,并修改相关订单状态。 10. 后台同时需要记录支付相关的信息,如支付时间、支付方式等,供后续的订单查询和统计使用。 以上就是Java小程序对接微信支付接口的一般步骤,具体实现过程还需要根据具体的业务需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值