# 微信支付 - 通过商户退款单号查询单笔退款

该接口方法需要安装 小程序微信支付能力,如未安装需要前往安装才可以使用

# 接口英文名

wxpay_refund_query

注意:该接口仅支持在服务端调用

# 调用方式

# 1. 使用云函数在服务端调用查询退款接口

模板已内置了云函数代码,可以直接在微信开发者工具中下载到本地修改后使用。 也可以手动创建云函数来完成,点击在线代码示例,可以查看云函数示例代码。

  • 下载模板云函数代码到本地

打开微信开发者工具界面,在cloudfunctions目录点击右键,选择同步云函数列表,同步模板中的云函数wxpayFunctions到本地;然后在云函数wxpayFunctions目录右键,选择下载,即可下载模板内置的云函数代码到本地。如下图所示:



  • 编辑下单云函数

修改云函数wxpayFunctions下的wxpay_refund_query/index.js代码,参数更新为业务实际参数。云函数编辑后,需要重新部署。

# 2. 小程序端调用云函数查询退款

小程序端调用云函数时,需要先在小程序端初始化云能力。修改app.js,在 ApponLaunch 生命周期方法中添加云能力初始化代码,参数传入用户的云开发环境ID。

App({
  onLaunch: function () {
    wx.cloud.init({
      // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源
      env: '{%TCB_ENV_ID%}',
      // 是否在将用户访问记录到用户管理中,在控制台中可见,默认为false
      traceUser: false,
    });
  },
});

小程序中调用步骤 1 中的云函数,查询订单。

// 小程序代码
wx.cloud.callFunction({
  // 云函数名称
  name: 'wxpayFunctions',
  data: {
    // 调用云函数中的退款查询方法
    type: 'wxpay_refund_query',
    // 业务其他参数...
  },
  success: (res) => {
    console.log('查询退款结果: ', res);
  },
});

# 更多说明

错误码请参考查询单笔退款

# 入参:

参数 类型 必填 描述
out_refund_no string 商户退款单号

# 出参:

参数 类型 描述
requestID string 请求唯一ID
result object
result.code integer 错误码
result.data object
result.data.transaction_id string 微信支付退款号
result.data.amount object
result.data.amount.payer_total integer 现金支付金额,单位为分,只能为整数
result.data.amount.settlement_total integer 应结订单金额=订单金额-免充值代金券金额,应结订单金额<=订单金额,单位为分
result.data.amount.total integer 订单总金额,单位为分
result.data.amount.payer_refund integer 退款给用户的金额,单位为分,不包含所有优惠券金额
result.data.amount.refund_fee integer 手续费退款金额,单位为分
result.data.amount.discount_refund integer 优惠退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金,说明详见代金券或立减优惠,单位为分
result.data.amount.from array of object 退款出资的账户类型及金额信息
result.data.amount.from[].account string 出资账户类型
result.data.amount.from[].amount number 出资金额
result.data.amount.currency string 符合ISO 4217标准的三位字母代码,目前只支持人民币:CNY。
result.data.amount.settlement_refund integer 去掉非充值代金券退款金额后的退款金额,单位为分,退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额
result.data.amount.refund integer 退款标价金额,单位为分,可以做部分退款
result.data.out_trade_no string 原支付交易对应的商户订单号
result.data.promotion_detail array of object 优惠退款信息
result.data.promotion_detail[].promotion_id string
result.data.promotion_detail[].scope string
result.data.promotion_detail[].type string
result.data.promotion_detail[].amount number
result.data.promotion_detail[].refund_amount number
result.data.promotion_detail[].goods_detail array of object
result.data.promotion_detail[].goods_detail[].merchant_goods_id string
result.data.promotion_detail[].goods_detail[].wechatpay_goods_id string
result.data.promotion_detail[].goods_detail[].goods_name string
result.data.promotion_detail[].goods_detail[].unit_price number
result.data.promotion_detail[].goods_detail[].refund_amount number
result.data.promotion_detail[].goods_detail[].refund_quantity number
result.data.create_time string 退款受理时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日13点29分35秒。
result.data.out_refund_no string 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-
result.data.funds_account string 退款所使用资金对应的资金账户类型。可选取值:UNSETTLED: 未结算资金,AVAILABLE: 可用余额,UNAVAILABLE: 不可用余额,OPERATION: 运营户,BASIC: 基本账户(含可用余额和不可用余额),ECNY_BASIC: 数字人民币基本账户
result.data.channel string 退款渠道。可选取值:ORIGINAL: 原路退款,BALANCE: 退回到余额,OTHER_BALANCE: 原账户异常退到其他余额账户,OTHER_BANKCARD: 原银行卡异常退到其他银行卡
result.data.success_time string 退款时间
result.data.user_received_account string 取当前退款单的退款入账方,有以下几种情况:1)退回银行卡:{银行名称}{卡类型}{卡尾号},2)退回支付用户零钱:支付用户零钱,3)退还商户:商户基本账户商户结算银行账户,4)退回支付用户零钱通:支付用户零钱通
result.data.refund_id string 微信支付退款号
result.data.status string 退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往商户平台(pay.weixin.qq.com)-交易中心,手动处理此笔退款。可选取值:SUCCESS: 退款成功,CLOSED: 退款关闭,PROCESSING: 退款处理中,ABNORMAL: 退款异常