成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > php實(shí)現(xiàn)微信支付之退款功能

php實(shí)現(xiàn)微信支付之退款功能

熱門標(biāo)簽:智能外呼電銷系統(tǒng) 電銷機(jī)器人-快迭智能 高識(shí)別電銷機(jī)器人 沈陽(yáng)人工智能電銷機(jī)器人公司 h5 地圖標(biāo)注 哈爾濱400電話辦理到易號(hào)網(wǎng) 拉薩打電話機(jī)器人 寶安400電話辦理 合肥外呼系統(tǒng)app

網(wǎng)上的很多PHP微信支付接入教程都頗為復(fù)雜,且需要配置和引入較多的文件,本人通過整理后給出一個(gè)單文件版的,希望可以給各位想接入微信支付的帶來(lái)些許幫助和借鑒意義。

直接運(yùn)行該文件即可給指定的微信用戶退款。

需要注意的事項(xiàng):

1.微信退款到零錢要求必傳證書,需要到這里賬戶中心->賬戶設(shè)置->API安全->下載證書,然后修改代碼中的證書路徑
2.該文件需放到支付授權(quán)目錄下,可以在微信支付商戶平臺(tái)->產(chǎn)品中心->開發(fā)配置中設(shè)置。
3.如提示簽名錯(cuò)誤可以通過微信支付簽名驗(yàn)證工具進(jìn)行驗(yàn)證:微信公眾平臺(tái)支付接口調(diào)試工具
4.錯(cuò)誤碼參照:參照地址

代碼如下:

?php
/**
 * 關(guān)于微信退款的說明
 * 1.微信退款要求必傳證書,需要到https://pay.weixin.qq.com 賬戶中心->賬戶設(shè)置->API安全->下載證書,證書路徑在第119行和122行修改
 * 2.錯(cuò)誤碼參照 :https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4
 */
header('Content-type:text/html; Charset=utf-8');
$mchid = 'xxxxx';     //微信支付商戶號(hào) PartnerID 通過微信支付商戶資料審核后郵件發(fā)送
$appid = 'xxxxx'; //微信支付申請(qǐng)對(duì)應(yīng)的公眾號(hào)的APPID
$apiKey = 'xxxxx';  //https://pay.weixin.qq.com 帳戶設(shè)置-安全設(shè)置-API安全-API密鑰-設(shè)置API密鑰
$orderNo = '';           //商戶訂單號(hào)(商戶訂單號(hào)與微信訂單號(hào)二選一,至少填一個(gè))
$wxOrderNo = '';           //微信訂單號(hào)(商戶訂單號(hào)與微信訂單號(hào)二選一,至少填一個(gè))
$totalFee = 0.01;          //訂單金額,單位:元
$refundFee = 0.01;         //退款金額,單位:元
$refundNo = 'refund_'.uniqid();    //退款訂單號(hào)(可隨機(jī)生成)
$wxPay = new WxpayService($mchid,$appid,$apiKey);
$result = $wxPay->doRefund($totalFee, $refundFee, $refundNo, $wxOrderNo,$orderNo);
if($result===true){
  echo 'refund success';exit();
}
echo 'refund fail';
class WxpayService
{
  protected $mchid;
  protected $appid;
  protected $apiKey;
  public $data = null;
  public function __construct($mchid, $appid, $key)
  {
    $this->mchid = $mchid; //https://pay.weixin.qq.com 產(chǎn)品中心-開發(fā)配置-商戶號(hào)
    $this->appid = $appid; //微信支付申請(qǐng)對(duì)應(yīng)的公眾號(hào)的APPID
    $this->apiKey = $key;  //https://pay.weixin.qq.com 帳戶設(shè)置-安全設(shè)置-API安全-API密鑰-設(shè)置API密鑰
  }
  /**
   * 退款
   * @param float $totalFee 訂單金額 單位元
   * @param float $refundFee 退款金額 單位元
   * @param string $refundNo 退款單號(hào)
   * @param string $wxOrderNo 微信訂單號(hào)
   * @param string $orderNo 商戶訂單號(hào)
   * @return string
   */
  public function doRefund($totalFee, $refundFee, $refundNo, $wxOrderNo='',$orderNo='')
  {
    $config = array(
      'mch_id' => $this->mchid,
      'appid' => $this->appid,
      'key' => $this->apiKey,
    );
    $unified = array(
      'appid' => $config['appid'],
      'mch_id' => $config['mch_id'],
      'nonce_str' => self::createNonceStr(),
      'total_fee' => intval($totalFee * 100),    //訂單金額  單位 轉(zhuǎn)為分
      'refund_fee' => intval($refundFee * 100),    //退款金額 單位 轉(zhuǎn)為分
      'sign_type' => 'MD5',      //簽名類型 支持HMAC-SHA256和MD5,默認(rèn)為MD5
      'transaction_id'=>$wxOrderNo,        //微信訂單號(hào)
      'out_trade_no'=>$orderNo,    //商戶訂單號(hào)
      'out_refund_no'=>$refundNo,    //商戶退款單號(hào)
      'refund_desc'=>'商品已售完',   //退款原因(選填)
    );
    $unified['sign'] = self::getSign($unified, $config['key']);
    $responseXml = $this->curlPost('https://api.mch.weixin.qq.com/secapi/pay/refund', self::arrayToXml($unified));
    $unifiedOrder = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);
    if ($unifiedOrder === false) {
      die('parse xml error');
    }
    if ($unifiedOrder->return_code != 'SUCCESS') {
      die($unifiedOrder->return_msg);
    }
    if ($unifiedOrder->result_code != 'SUCCESS') {
      die($unifiedOrder->err_code);
    }
    return true;
  }
  public static function curlGet($url = '', $options = array())
  {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    if (!empty($options)) {
      curl_setopt_array($ch, $options);
    }
    //https請(qǐng)求 不驗(yàn)證證書和host
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
  }
  public function curlPost($url = '', $postData = '', $options = array())
  {
    if (is_array($postData)) {
      $postData = http_build_query($postData);
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置cURL允許執(zhí)行的最長(zhǎng)秒數(shù)
    if (!empty($options)) {
      curl_setopt_array($ch, $options);
    }
    //https請(qǐng)求 不驗(yàn)證證書和host
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    //第一種方法,cert 與 key 分別屬于兩個(gè).pem文件
    //默認(rèn)格式為PEM,可以注釋
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/cert/apiclient_cert.pem');
    //默認(rèn)格式為PEM,可以注釋
    curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/cert/apiclient_key.pem');
    //第二種方式,兩個(gè)文件合成一個(gè).pem文件
//    curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
  }
  public static function createNonceStr($length = 16)
  {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $str = '';
    for ($i = 0; $i  $length; $i++) {
      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
  }
  public static 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;
  }
  public static function getSign($params, $key)
  {
    ksort($params, SORT_STRING);
    $unSignParaString = self::formatQueryParaMap($params, false);
    $signStr = strtoupper(md5($unSignParaString . "key=" . $key));
    return $signStr;
  }
  protected static 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;
  }
}
?>

github下載地址

相關(guān)文章:

php實(shí)現(xiàn)微信支付之企業(yè)付款

php實(shí)現(xiàn)微信支付之現(xiàn)金紅包

php實(shí)現(xiàn)微信原生支付(掃碼支付)功能

php微信支付之公眾號(hào)支付功能

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • ThinkPHP框架實(shí)現(xiàn)的微信支付接口開發(fā)完整示例
  • ThinkPHP框架整合微信支付之刷卡模式圖文詳解
  • ThinkPHP框架整合微信支付之Native 掃碼支付模式二圖文詳解
  • ThinkPHP框架整合微信支付之Native 掃碼支付模式一圖文詳解
  • ThinkPHP框架整合微信支付之JSAPI模式圖文詳解
  • PHP微信支付功能示例
  • php實(shí)現(xiàn)微信支付之企業(yè)付款
  • PHP微信支付開發(fā)實(shí)例
  • 微信支付PHP SDK之微信公眾號(hào)支付代碼詳解
  • PHP 微信支付類 demo
  • 微信公眾平臺(tái)開發(fā)教程③ PHP實(shí)現(xiàn)微信公眾號(hào)支付功能圖文詳解

標(biāo)簽:梅州 巴中 林芝 泰州 威海 山東 張家口 成都

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php實(shí)現(xiàn)微信支付之退款功能》,本文關(guān)鍵詞  php,實(shí)現(xiàn),微信,支付,之,退款,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php實(shí)現(xiàn)微信支付之退款功能》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php實(shí)現(xiàn)微信支付之退款功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本精品国语自产拍在线观看| 欧美日韩一区在线播放| 欧美激情导航| 欧美人成在线观看网站高清| 国产亚洲欧洲高清| 欧美孕妇与黑人巨交| 老熟妇仑乱一区二区av| 国产成人无码一区二区在线播放| 欧美福利视频导航| 国产精品久久久久久久av大片| 98视频精品全部国产| 手机av免费观看| 久久久久无码精品国产sm果冻| 国产人妖在线观看| 给我免费播放片在线观看| 亚洲精品国产精品国| 久久一综合视频| 美女免费黄色| 亚洲77777| 中文字幕中文在线不卡住| 国产小视频在线免费观看| 欧美一区二区三区不卡| 九九爱在线视频观看免费视频| 亚洲视频分类| 欧美成人免费视频a| 日韩电影免费观看高清完整版在线观看| 国产亚洲综合精品| 日韩欧美不卡| 久久精品97| 日韩视频中文字幕| 欧美日韩视频免费看| 在线播放一区| 一区二区三区视频观看| 国产精品日本精品| 美国精品一区二区| 国产精品久久久久久久久免费高清| 久久久久成人网| 无码h黄肉3d动漫在线观看| 国产精品电影网站| 一区二区精品| 免费成人性网站| 欧美日韩一二三四区| 婷婷五月综合久久中文字幕| 国内自拍欧美| 久久青草国产手机看片福利盒子| 男人天堂999| 99色精品视频| 国产毛片久久久久久久| 亚洲s码欧洲m码国产av| 男女啪啪免费观看| free性欧美高清另类| 亚洲第一会所001| 日韩一级片网址| 国产高清av片| 粉嫩老牛aⅴ一区二区三区| 国产成人亚洲精品青草天美| 亚洲亚裔videos黑人hd| www.wu福利视频18| 国产日韩欧美综合精品| 在线免费观看成人| 噜噜噜在线视频| 午夜爽爽爽男女免费观看影院| 日韩新的三级电影| 亚洲国产成人精品女人久久久| 韩国欧美亚洲国产| 北岛玲一区二区三区| 日本中文字幕视频| 在线一区二区视频| 亚洲人成免费| 中日韩美女免费视频网址在线观看| 中韩乱幕日产无线码一区| 成人黄色一级视频| 麻豆成人在线观看| 欧美三级小视频| 青青操视频在线观看| 国产精品久久亚洲7777| 久久综合丝袜日本网| 无码日韩人妻精品久久蜜桃| 粉色视频免费看| 欧美日韩国产成人高清视频| 77777影视视频在线观看| 中国一级片在线观看| 国产欧美一区二区三区米奇| 国产精品性做久久久久久| 国产亚洲欧洲在线| 在线视频亚洲欧美| 国产精品久久久久免费a∨大胸| 国产精品视频永久免费播放| 国产成人在线免费看| 免费激情视频网站| 激情婷婷久久| 成人国产视频在线观看| 久久伊人精品| 偷拍国模大尺度视频在线播放| 欧美另类videos黑人极品| 国产欧美日韩成人| 国产va免费精品观看精品视频| 欧美精品一区二区高清在线观看| 亚洲一区av在线播放| 少妇愉情理伦三级| 在线一区二区日韩| 人妻丰满熟妇av无码久久洗澡| 污视频免费在线观看网站| 在线中文av| 99精品视频国产| www.com久久久| 亚洲网站免费| 天天做日日爱夜夜爽| 992tv快乐视频| 欧美日韩高清在线观看| 艹b视频在线观看| 黄色av网站免费观看| 久久综合久久久久| 超碰caoporn久久| 国产精品精品久久久久久| 欧美视频精品| h狠狠躁死你h高h| 日本中文字幕影院| 午夜免费电影一区在线观看| 四虎国产精品永久地址998| 高潮精品一区videoshd| 精品一区二区在线看| 亚洲av成人片色在线观看高潮| 亚洲在线一区二区三区| 2024亚洲男人天堂| 午夜在线视频播放| 国产真实乱全部视频| 91精品久久久久久久久久| 久久免费观看视频| 99精品在线观看| 黄页免费在线观看视频| 精品国产一区二区三区四区四| 四虎永久在线观看| 欧美日韩一级片网站| 成人短视频下载| 第一会所亚洲原创| 欧美国产视频一区| 成人免费观看www在线| 亚洲精品观看| 国产欧美精品一区二区三区四区| 91麻豆精品国产自产在线| 麻豆视频传媒入口| 亚洲一区二区三区观看| 一本一本久久a久久精品牛牛影视| 91女神在线视频| 青青草手机在线视频| 波多野结衣91| 久久久久一区二区| 日韩电影免费看| 日韩av一区二区在线| 国产影视一区二区| 国产+成+人+亚洲欧洲自线| 国产精品手机在线| 黄色小视频大全| www.麻豆av.com| 国产乱子伦三级在线播放| 国产伦理久久久久久妇女| 色妞ww精品视频7777| 日韩亚洲欧美中文高清在线| 黄色片视频免费| 国产又粗又长又大的视频| 国产电影一区二区在线观看| 黄色一级片网址| 黄页网站在线看| 成人av片在线观看| 国产精品三区在线观看| 九九九热999| 黄色片免费在线| 国产探花一区在线观看| 日韩国产精品久久| 国产一伦一伦一伦| 国产精品男人的天堂| 国产精品丝袜在线| 国内精品美女av在线播放| 中文字幕一精品亚洲无线一区| 亚洲护士老师的毛茸茸最新章节| 蜜臂av日日欢夜夜爽一区| 欧美日本中文字幕| 亚洲热在线观看| 九九热视频在线免费观看| 91在线高清免费观看| 97精品人妻一区二区三区蜜桃| 欧美日韩国产美| 久久夜色精品国产噜噜av小说| 51精品视频一区二区三区| 九九久久久久午夜精选| www.cao超碰| 免费自拍视频| 亚洲一区二区三区在线免费| 蜜臀av性久久久久蜜臀av麻豆| 亚洲小少妇裸体bbw| 欧美在线精品一区| 精品少妇一区二区三区在线视频| 蜜臀久久99精品久久久久久| 欧美~级网站不卡| 欧美一区二区免费在线观看| 精品免费视频.| 粉嫩一区二区三区四区公司1| 亚洲靠逼com| 国产精品资源| 91性高湖久久久久久久久_久久99| 好吊的妞视频这里都有| 女子免费在线观看视频www| 欧美国产日本高清在线| 在线播放亚洲激情| 欧美日韩综合一区| 午夜欧美性电影| 成人免费无码av| 老司机久久99久久精品播放免费| 国产精品久久久久久五月尺| 在线看片福利| 久久亚洲精品无码va白人极品| www.好吊色| av免费在线观看网站| 久久综合色8888| 久久精品视频在线| 亚洲青色在线| 欧美丝袜足交| 日韩一区二区三区久久| 国产在线久久久| 日本免费视频www| av黄色一级| 国产成人精品18| 欧美黄色一级大片| 香蕉国产精品偷在线观看不卡| 亚洲一区二区久久久久久| 色综合导航网站| 69精品视频| 日本视频在线观看| 亚洲精品国产高清久久伦理二区| 国产黄视频网站| 免费av毛片在线看| 韩国三级成人在线| 国产精品亚洲成人| 麻豆影视在线观看| 成人精品高清在线视频| 国产精品日韩一区二区三区| 美女裸体自慰在线观看| 久久精品久久久久久久| 国产亚洲一区字幕| 日韩在线视频观看正片免费网站| 欧美性猛交xxxxx水多| 亚洲欧美综合国产精品一区| yes4444视频在线观看| 日日草天天草| 91精品国产手机| 亚洲欧美久久婷婷爱综合一区天堂| 麻豆精品一区二区av白丝在线| 高清国产一区二区三区四区五区| 污视频在线免费观看一区二区三区| 北条麻妃一区二区三区中文字幕| 亚洲日本三级| 亚洲午夜视频在线观看| 午夜影院一区| av人人综合网| 2017亚洲天堂1024| 色天使久久综合网天天| 欧美人妇做爰xxxⅹ性高电影| 成人精品在线看| 亚洲欧美综合久久久久久v动漫| 亚洲一区二区三区四区五区xx| 亚洲色图欧美自拍| 色综合久久av| 国产精品无圣光一区二区| 男女啪啪免费体验区| 国产精品国产精品| 欧美自拍资源在线| 香港三级韩国三级日本三级| 1级黄色大片儿| 成人免费无码大片a毛片| 免费在线观看麻豆视频| 亚洲黄色高清| 亚洲精品久久久久久| 国产av不卡一区二区| 亚洲肉体裸体xxxx137| gogo高清在线播放免费| 污污的视频免费观看| 亚洲男同性恋视频| 一区二区三区国产精品| 午夜av噜噜噜噜噜噜| 欧美超碰在线| 日韩在线观看网站| 男插女视频网站| 日本午夜在线视频| 国产麻豆午夜三级精品| 亚洲日本aⅴ片在线观看香蕉| 国产精品变态另类虐交| 久久久久久久国产精品毛片| 日韩在线二区| 肉色欧美久久久久久久免费看| 国产91在线看| 国产亚洲欧美日韩在线观看一区二区| 国语对白在线视频| 国产自产视频| www天堂网| 日韩激情图片| 黄色录像一级片| 欧美激情视频网站| 成人黄色免费短视频| 精品国产一区二区三区四| 亚洲视频一区二区三区| 青青艹在线视频| 99国产精品久久久久久久成人热| 亚州av乱码久久精品蜜桃| 色香欲www7777综合网| 国产欧美一区二| 国内在线精品| 国产av 一区二区三区| 中文字幕亚洲欧洲| 亚洲精选久久| 精品一区二区三区影院在线午夜| 夜夜夜久久久| 国产精品秘入口18禁麻豆免会员| 奇米色777欧美一区二区| av在线一区不卡| 欧美日韩一区综合| 99久精品国产| 国产精品av一区二区三区| 欧美激情欧美激情| 成人网在线免费看| 亚洲免费av网址| 无人码人妻一区二区三区免费| 99视频免费观看蜜桃视频| h视频免费高清在线观看| 国产精品毛片无遮挡高清| 欧美国产欧美亚洲国产日韩mv天天看完整| 爽爽影院免费观看视频| 色在线视频观看|