发起订单退款接口(可选)


发起退款接口URL:
正式环境:https://api.xunhupay.com/payment/refund.html
备用平台:https://api.dpweixin.com/payment/refund.html
特殊:https://api.diypc.com.cn/payment/refund.html
传参方式:POST

说明:用curl的post方式传参数,并直接获取json返回值。


请求参数:
# 参数名 含义 类型 说明
1 appid APP ID string(32) 必填。应用ID
2 trade_order_id 商户网站订单号 string(32) trade_order_id,open_order_id 二选一。请确保在您的网站内是唯一订单号
3 open_order_id 虎皮椒内部订单号 string(32) trade_order_id,open_order_id 二选一。在支付时,或支付成功时会返回此数据给商户网站
4 reason 退款原因 string(80) 可选,若传入,微信会在下发给用户的退款消息中体现退款原因
5 time 当前时间戳 int(11) 必填。PHP示例:time()
6 nonce_str 随机值 string(32) 必填。作用:1.避免服务器页面缓存,2.防止安全密钥被猜测出来
7 hash 签名 string(32) 必填。
请求返回:
# 参数名 含义 类型 说明
1 trade_order_id 商户网站订单号 string(32)
2 transaction_id 交易号 string(32)
3 out_refund_no 退款单号 string(32)
4 refund_fee 退款金额 decimal(9,2)
5 reason 退款原因 string(80)
6 refund_status 退款状态 string(2) OD已支付,CD已退款,RD退款中,UD退款失败
7 refund_time 退款时间 string(16)
8 errcode 错误码 int
9 errmsg 错误信息 string(8) 错误信息具体值
10 hash 签名 string(32) 数据签名,参考下面签名算法
HASH生成的步骤如下:

第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

特别注意以下重要规则:

  1. ◆ 参数名ASCII码从小到大排序(字典序);
  2. ◆ 如果参数的值为空不参与签名;
  3. ◆ 参数名区分大小写;
  4. ◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
  5. ◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段

第二步,在stringA最后拼接上APPSECRET得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到hash值。

HASH生成示例(PHP):
function generate_xh_hash(array $datas,$hashkey){
                    ksort($datas);
                    reset($datas);

                    $pre =array();
                    foreach ($datas as $key => $data){
                        if(is_null($data)||$data===''){continue;}

                        if($key=='hash'){
                            continue;
                        }

						//stripslashes 去除php POST请求自带的多余斜杠(其他语言可以不处理)
                        $pre[$key]=stripslashes($data);
                    }

                    $arg  = '';
                    $qty = count($pre);
                    $index=0;

                    foreach ($pre as $key=>$val){
                        $arg.="$key=$val";
                        if($index++<($qty-1)){
                            $arg.="&";
                        }
                    }

                    return md5($arg.$hashkey);
                }
在线客服系统