首页 / PHP / PHP实现微信退款的方法示例
PHP实现微信退款的方法示例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP实现微信退款的方法示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3374字,纯文字阅读大概需要5分钟。
内容图文
![PHP实现微信退款的方法示例](/upload/InfoBanner/zyjiaocheng/275/105a6055508646788c8df5432f1bb127.jpg)
本文实例讲述了PHP实现微信退款的方法。分享给大家供大家参考,具体如下:
$obj = new WXRefund('参数'); $obj->refundApi();
直接能用 公众号的参数 自己加上吧 只能帮你们到这了!
<?php namespace Wechat; /** * 微信退款 * @author zzy * @version $V1.0.0$ * @date 2018-11-9 */ class WXRefund { protected $SSLCERT_PATH ='';//证书 protected $SSLKEY_PATH = '';//证书 protected $opUserId = '';//商户号 protected $key = '';//API密钥 protected $appId = '';//appId function __construct($outTradeNo, $totalFee, $outRefundNo, $refundFee) { //初始化退款类需要的变量 $this->totalFee = $totalFee;//订单金额 $this->refundFee = $refundFee;//退款金额 $this->outTradeNo = $outTradeNo;//订单号 $this->outRefundNo = $outRefundNo;//退款订单 } /** * 通过微信api进行退款流程 唯一对外接口 * @return string */ public function refundApi() { $parma = array( 'appid' => $this->appId, 'mch_id' => $this->opUserId, 'nonce_str' => randoms(32),//这个是随机数 自己封装去吧。。。 'out_refund_no' => $this->outRefundNo, 'out_trade_no' => $this->outTradeNo, 'total_fee' => intval($this->totalFee * 100), 'refund_fee' => intval($this->refundFee * 100), ); $parma['sign'] = $this->getSign($parma, $this->key); $xmldata = $this->arrayToXml($parma); $xmlresult = $this->postXmlSSLCurl($xmldata, 'https://api.mch.weixin.qq.com/secapi/pay/refund'); $result = $this->arrayToXml($xmlresult); return $result; } /** * 数组转xml * @param $arr * @return string */ protected function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key => $val) { if (is_numeric($val)) { $xml .= "<" . $key . ">" . $val . "</" . $key . ">"; } else { $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">"; } } $xml .= "</xml>"; return $xml; } /** * 签名加密 * @param $params * @param $key */ protected function getSign($params, $key) { ksort($params, SORT_STRING); $unSignParaString = $this->formatQueryParaMap($params, false); return $signStr = strtoupper(md5($unSignParaString . "&key=" . $key)); } /** * 排序 * @param $paraMap * @param bool $urlEncode * @return bool|string */ protected function formatQueryParaMap($paraMap, $urlEncode = false) { $buff = ""; ksort($paraMap); foreach ($paraMap as $k => $v) { if (null != $v && "null" != $v) { if ($urlEncode) { $v = urlencode($v); } $buff .= $k . "=" . $v . "&"; } } $reqPar = ''; if (strlen($buff) > 0) { $reqPar = substr($buff, 0, strlen($buff) - 1); } return $reqPar; } /** * 需要使用证书的请求 * @param $xml * @param $url * @param int $second * @return bool|mixed */ protected function postXmlSSLCurl($xml, $url, $second = 30) { $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, $second); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM'); curl_setopt($ch, CURLOPT_SSLCERT, $this->SSLCERT_PATH); curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM'); curl_setopt($ch, CURLOPT_SSLKEY, $this->SSLKEY_PATH); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); $data = curl_exec($ch); if ($data) { curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "curl出错,错误码:$error" . "<br>"; curl_close($ch); return false; } } }
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
内容总结
以上是互联网集市为您收集整理的PHP实现微信退款的方法示例全部内容,希望文章能够帮你解决PHP实现微信退款的方法示例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。