微信支付退款--原生PHP实现代码 20230513

后端

$appid='wx1234567890'; //这是公众号的appid
$mch_id='1500000000'; //商户号(登录 pay.weixin.qq.com,在【产品中心】-【开发配置】里会看到)
$nonce_str='abcdddddddddddd';//随机字符串,随便一串字母即可
$out_refund_no='r'.time(); //退款单号,不重复即可
$total_fee=1000; //原订单金额,单位不是元,而是分
$refund_fee=200; //退款金额,单位是分,<=$total_fee
$transaction_id="4200000299201905147901111111";//原微信支付交易号
$key="abcde12345";//在pay.weixin.qq.com里设定的密钥

//拼接字段
$stringA='appid='.$appid.'&mch_id='.$mch_id.'&nonce_str='.$nonce_str.'&out_refund_no='.$out_refund_no.'&refund_fee='.$refund_fee.'&total_fee='.$total_fee.'&transaction_id='.$transaction_id;
//加上key
$stringSignTemp=$stringA."&key=".$key;
//MD5
$signValue=MD5($stringSignTemp);
//转大写
$sign=strtoupper($signValue);

$data="xml字符串";//xml格式在html里显示不出,请看最后附图
//var_dump($data);
$url="https://api.mch.weixin.qq.com/secapi/pay/refund";

$ch = curl_init();
//超时时间
curl_setopt($ch,CURLOPT_TIMEOUT,30);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
//设置header
curl_setopt($ch,CURLOPT_HEADER,FALSE);
//要求结果为字符串且输出到屏幕上
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
//设置证书
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, 'D:/cert/apiclient_cert.pem'); //证书在服务器上的绝对路径
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY,'D:/cert/apiclient_key.pem'); //证书在服务器上的绝对路径
//post提交方式
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$res = curl_exec($ch);
curl_close($ch);
var_dump($res);

注意事项
更换证书路径
1 替换参数
2. 替换证书文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值