其实这样就可以了,一开始在数据集上被坑了很久,以为是自己写的签名有问题,去换了MD5的key,也用了RSA加密就是不行,后来发现数据集不能用平台的订单号,必须要用支付宝交易号,其主要是用户支付的时候没有保存支付宝的交易号,我看文档的时候原来是数据集出错导致退款不成功,以前的人开发留的坑,后面的人真的会被坑死。
public function refund($batch_num,$detail_data){
//构建原始数据
$params = [
'service' => 'refund_fastpay_by_platform_pwd' , //接口名称
'partner' => $this->partner ,//合作伙伴ID
'_input_charset' => 'UTF-8' ,//字符集
'sign_type' => 'MD5' ,//签名方式
'seller_user_id' => $this->partner ,
'refund_date' => date('Y-m-d H:i:s') , //退款请求时间
'batch_no' => date('Ymd') . '003' ,//退款批次号 格式为:退款日期(8位)+流水号(3~24位)
'batch_num' => $batch_num, //总笔数
'detail_data' => $detail_data, //单笔数据集 格式: 支付宝交易号^金额^退款理由
];
//加入签名
$signParams = $this->setSign($params);
//请求接口
$url = $this->alipay_gateway_new .'?'. $this->getUrl($signParams);
header("location:" . $url);
}
//获取签名MD5
public function getSign($arr){
return md5($this->getStr($arr) . $this->keys);
}