# 微信支付 - 通过商户退款单号查询单笔退款
该接口方法需要安装 小程序微信支付能力,如未安装需要前往安装才可以使用
# 接口英文名
wxpay_refund_query
注意:该接口仅支持在服务端调用
# 调用方式
# 1. 使用云函数在服务端调用查询退款接口
模板已内置了云函数代码,可以直接在微信开发者工具中下载到本地修改后使用。 也可以手动创建云函数来完成,点击在线代码示例,可以查看云函数示例代码。
- 下载模板云函数代码到本地
打开微信开发者工具界面,在cloudfunctions
目录点击右键,选择同步云函数列表
,同步模板中的云函数wxpayFunctions
到本地;然后在云函数wxpayFunctions
目录右键,选择下载
,即可下载模板内置的云函数代码到本地。如下图所示:
- 编辑下单云函数
修改云函数wxpayFunctions
下的wxpay_refund_query/index.js
代码,参数更新为业务实际参数。云函数编辑后,需要重新部署。
# 2. 小程序端调用云函数查询退款
小程序端调用云函数时,需要先在小程序端初始化云能力。修改app.js
,在 App
的 onLaunch
生命周期方法中添加云能力初始化代码,参数传入用户的云开发环境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: 退款异常 |