婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php實現微信支付之退款功能

php實現微信支付之退款功能

熱門標簽:智能外呼電銷系統 電銷機器人-快迭智能 高識別電銷機器人 沈陽人工智能電銷機器人公司 h5 地圖標注 哈爾濱400電話辦理到易號網 拉薩打電話機器人 寶安400電話辦理 合肥外呼系統app

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

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

需要注意的事項:

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

代碼如下:

?php
/**
 * 關于微信退款的說明
 * 1.微信退款要求必傳證書,需要到https://pay.weixin.qq.com 賬戶中心->賬戶設置->API安全->下載證書,證書路徑在第119行和122行修改
 * 2.錯誤碼參照 :https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4
 */
header('Content-type:text/html; Charset=utf-8');
$mchid = 'xxxxx';     //微信支付商戶號 PartnerID 通過微信支付商戶資料審核后郵件發送
$appid = 'xxxxx'; //微信支付申請對應的公眾號的APPID
$apiKey = 'xxxxx';  //https://pay.weixin.qq.com 帳戶設置-安全設置-API安全-API密鑰-設置API密鑰
$orderNo = '';           //商戶訂單號(商戶訂單號與微信訂單號二選一,至少填一個)
$wxOrderNo = '';           //微信訂單號(商戶訂單號與微信訂單號二選一,至少填一個)
$totalFee = 0.01;          //訂單金額,單位:元
$refundFee = 0.01;         //退款金額,單位:元
$refundNo = 'refund_'.uniqid();    //退款訂單號(可隨機生成)
$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 產品中心-開發配置-商戶號
    $this->appid = $appid; //微信支付申請對應的公眾號的APPID
    $this->apiKey = $key;  //https://pay.weixin.qq.com 帳戶設置-安全設置-API安全-API密鑰-設置API密鑰
  }
  /**
   * 退款
   * @param float $totalFee 訂單金額 單位元
   * @param float $refundFee 退款金額 單位元
   * @param string $refundNo 退款單號
   * @param string $wxOrderNo 微信訂單號
   * @param string $orderNo 商戶訂單號
   * @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),    //訂單金額  單位 轉為分
      'refund_fee' => intval($refundFee * 100),    //退款金額 單位 轉為分
      'sign_type' => 'MD5',      //簽名類型 支持HMAC-SHA256和MD5,默認為MD5
      'transaction_id'=>$wxOrderNo,        //微信訂單號
      'out_trade_no'=>$orderNo,    //商戶訂單號
      'out_refund_no'=>$refundNo,    //商戶退款單號
      '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請求 不驗證證書和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); //設置cURL允許執行的最長秒數
    if (!empty($options)) {
      curl_setopt_array($ch, $options);
    }
    //https請求 不驗證證書和host
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    //第一種方法,cert 與 key 分別屬于兩個.pem文件
    //默認格式為PEM,可以注釋
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/cert/apiclient_cert.pem');
    //默認格式為PEM,可以注釋
    curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/cert/apiclient_key.pem');
    //第二種方式,兩個文件合成一個.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下載地址

相關文章:

php實現微信支付之企業付款

php實現微信支付之現金紅包

php實現微信原生支付(掃碼支付)功能

php微信支付之公眾號支付功能

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • ThinkPHP框架實現的微信支付接口開發完整示例
  • ThinkPHP框架整合微信支付之刷卡模式圖文詳解
  • ThinkPHP框架整合微信支付之Native 掃碼支付模式二圖文詳解
  • ThinkPHP框架整合微信支付之Native 掃碼支付模式一圖文詳解
  • ThinkPHP框架整合微信支付之JSAPI模式圖文詳解
  • PHP微信支付功能示例
  • php實現微信支付之企業付款
  • PHP微信支付開發實例
  • 微信支付PHP SDK之微信公眾號支付代碼詳解
  • PHP 微信支付類 demo
  • 微信公眾平臺開發教程③ PHP實現微信公眾號支付功能圖文詳解

標簽:梅州 巴中 林芝 泰州 威海 山東 張家口 成都

巨人網絡通訊聲明:本文標題《php實現微信支付之退款功能》,本文關鍵詞  php,實現,微信,支付,之,退款,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php實現微信支付之退款功能》相關的同類信息!
  • 本頁收集關于php實現微信支付之退款功能的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    午夜精品一区二区三区三上悠亚| 精品99久久久久久| 欧美日韩日日夜夜| 夜夜夜精品看看| 欧美在线观看一二区| 夜夜爽夜夜爽精品视频| 欧美日韩亚洲综合| 日韩精品一级二级| 久久久av毛片精品| 99国产一区二区三精品乱码| 亚洲免费看黄网站| 欧美一级搡bbbb搡bbbb| 国产成人精品午夜视频免费| 亚洲欧洲中文日韩久久av乱码| 色综合久久久久网| 毛片不卡一区二区| 专区另类欧美日韩| 精品免费视频.| 91一区二区三区在线观看| 亚洲自拍偷拍欧美| 久久午夜色播影院免费高清| 91国产福利在线| 青青草伊人久久| 亚洲视频在线一区二区| 欧美一个色资源| kk眼镜猥琐国模调教系列一区二区 | 久久色在线观看| 成人av在线资源网站| 亚洲成人先锋电影| 国产精品三级久久久久三级| 91福利视频久久久久| 国内精品国产三级国产a久久 | 亚洲激情成人在线| 久久久91精品国产一区二区精品 | 亚洲成a人片综合在线| 精品国产精品网麻豆系列| 色欲综合视频天天天| 国产精品亚洲一区二区三区在线| 亚洲一区二区三区四区五区中文| 久久婷婷久久一区二区三区| 欧洲亚洲精品在线| 不卡电影免费在线播放一区| 麻豆一区二区在线| 三级一区在线视频先锋| 综合久久一区二区三区| 久久只精品国产| 日韩你懂的在线观看| 欧美色图免费看| 色婷婷亚洲精品| 色综合婷婷久久| caoporm超碰国产精品| 国产一区二区三区国产| 美美哒免费高清在线观看视频一区二区| 亚洲欧美二区三区| 亚洲欧洲成人精品av97| 欧美国产日韩在线观看| 日韩精品一区二区在线观看| 51精品国自产在线| 777奇米四色成人影色区| 91精彩视频在线观看| 成人激情小说乱人伦| 久久精工是国产品牌吗| 另类的小说在线视频另类成人小视频在线 | www.欧美日韩国产在线| 国产精品一级在线| 日韩电影在线免费| 无码av免费一区二区三区试看| 一卡二卡三卡日韩欧美| 国产欧美综合在线观看第十页| 欧美日韩五月天| 4438x成人网最大色成网站| 欧美色图免费看| 91精品综合久久久久久| 欧美一区二区三区人| 欧美日韩在线不卡| 欧美日韩一区二区三区高清| 欧美日韩国产天堂| 欧美一区二区精品在线| 国产情人综合久久777777| 亚洲图片另类小说| 日精品一区二区| 国产精品888| 日韩福利电影在线观看| 亚洲成人自拍一区| 日本美女视频一区二区| 久久精工是国产品牌吗| 国产成a人亚洲精品| 粉嫩高潮美女一区二区三区| 成人小视频免费在线观看| 国产一区在线不卡| 懂色av一区二区夜夜嗨| 风间由美性色一区二区三区| 欧美优质美女网站| 欧美日韩视频在线第一区 | 国产麻豆一精品一av一免费| 国产不卡视频一区二区三区| 粉嫩av一区二区三区在线播放| 色综合天天天天做夜夜夜夜做| 在线日韩国产精品| 久久久国产综合精品女国产盗摄| 亚洲国产经典视频| 亚洲精品水蜜桃| 国产乱码精品一区二区三| 欧美亚洲国产bt| 日韩一区二区视频| 亚洲精品菠萝久久久久久久| 免费av网站大全久久| 成人小视频在线观看| 欧美亚洲综合色| 国产亚洲综合在线| 一区二区三区精品视频在线| 久久国产精品99精品国产| 91在线观看高清| 久久久精品国产免费观看同学| 亚洲综合区在线| 国产成人午夜电影网| 日韩欧美一二区| 亚洲毛片av在线| 另类小说欧美激情| 欧美理论电影在线| 夜夜爽夜夜爽精品视频| 成人激情视频网站| 国产农村妇女毛片精品久久麻豆| 亚洲成年人网站在线观看| 成人免费电影视频| 久久久久久夜精品精品免费| 久久精品国产澳门| 日韩欧美一级二级三级久久久| 午夜一区二区三区在线观看| 日本黄色一区二区| 亚洲欧美另类综合偷拍| 成av人片一区二区| 国产精品素人视频| 国产一区二区三区国产| 久久在线观看免费| 韩日av一区二区| 91麻豆精品国产自产在线| 亚洲欧洲日本在线| 国产v综合v亚洲欧| 中文字幕在线免费不卡| 成人动漫视频在线| 亚洲欧美日本在线| 欧美亚洲国产一卡| 亚洲成人精品一区二区| 欧美日韩一级大片网址| 午夜激情一区二区三区| 日韩视频一区二区三区在线播放 | 欧美喷潮久久久xxxxx| 亚洲国产aⅴ天堂久久| 欧美午夜不卡视频| 免费成人美女在线观看.| 欧美精品一区二区三| 国产麻豆成人传媒免费观看| 日本一区二区免费在线观看视频| 成人美女视频在线看| 一区二区三区四区亚洲| 日韩视频一区在线观看| 成人久久久精品乱码一区二区三区| 日韩毛片在线免费观看| 6080国产精品一区二区| 国产麻豆精品95视频| 亚洲另类春色国产| 91精品欧美综合在线观看最新| 国产一区二区伦理| 亚洲一区在线视频观看| 6080日韩午夜伦伦午夜伦| 国产精品亚洲а∨天堂免在线| 亚洲视频中文字幕| 日韩一区二区免费在线电影| 国产高清精品网站| 午夜精品福利在线| 国产欧美精品一区aⅴ影院 | 中文字幕高清一区| 欧美羞羞免费网站| 国产精品亚洲第一区在线暖暖韩国| 一区二区三区国产精品| 精品精品欲导航| 在线视频国内一区二区| 国产成人精品午夜视频免费| 亚洲福利一区二区三区| 国产网红主播福利一区二区| 在线免费观看成人短视频| 激情综合网激情| 婷婷久久综合九色国产成人 | 国产大陆a不卡| 日韩电影在线一区二区| 亚洲女与黑人做爰| 欧美激情一区在线| 精品毛片乱码1区2区3区| 色综合中文字幕| 成人免费毛片aaaaa**| 激情综合色综合久久综合| 亚洲国产一区视频| 亚洲免费观看高清完整版在线| 久久久欧美精品sm网站| 日韩一区二区精品葵司在线| 色婷婷激情一区二区三区| 成人免费av网站| 成人精品国产一区二区4080| 韩国av一区二区|