正式环境:https://api.xunhupay.com/payment/refund.html
备用平台:https://api.dpweixin.com/payment/refund.html
特殊:https://api.diypc.com.cn/payment/refund.html
说明:用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) | 数据签名,参考下面签名算法 |
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
第二步,在stringA最后拼接上APPSECRET
得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到hash值。
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); }