欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實(shí)現(xiàn)微信退款的方法示例

 更新時(shí)間:2019年03月26日 09:52:36   作者:php_zzy  
這篇文章主要介紹了PHP實(shí)現(xiàn)微信退款的方法,結(jié)合實(shí)例形式分析了php微信退款功能操作類與相關(guān)使用技巧,需要的朋友可以參考下

本文實(shí)例講述了PHP實(shí)現(xiàn)微信退款的方法。分享給大家供大家參考,具體如下:

$obj = new WXRefund('參數(shù)');
$obj->refundApi();

直接能用 公眾號(hào)的參數(shù) 自己加上吧 只能幫你們到這了!

<?php
namespace Wechat;
/**
 * 微信退款
 * @author    zzy
 * @version   $V1.0.0$
 * @date    2018-11-9
 */
class WXRefund
{
  protected $SSLCERT_PATH ='';//證書
  protected $SSLKEY_PATH = '';//證書
  protected $opUserId = '';//商戶號(hào)
  protected $key = '';//API密鑰
  protected $appId = '';//appId
  function __construct($outTradeNo, $totalFee, $outRefundNo, $refundFee)
  {
    //初始化退款類需要的變量
    $this->totalFee = $totalFee;//訂單金額
    $this->refundFee = $refundFee;//退款金額
    $this->outTradeNo = $outTradeNo;//訂單號(hào)
    $this->outRefundNo = $outRefundNo;//退款訂單
  }
  /**
   * 通過(guò)微信api進(jìn)行退款流程 唯一對(duì)外接口
   * @return string
   */
  public function refundApi()
  {
    $parma = array(
      'appid' => $this->appId,
      'mch_id' => $this->opUserId,
      'nonce_str' => randoms(32),//這個(gè)是隨機(jī)數(shù) 自己封裝去吧。。。
      '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;
  }
  /**
   * 數(shù)組轉(zhuǎn)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;
  }
  /**
   * 需要使用證書的請(qǐng)求
   * @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出錯(cuò),錯(cuò)誤碼:$error" . "<br>";
      curl_close($ch);
      return false;
    }
  }
}

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP微信開(kāi)發(fā)技巧匯總》、《php curl用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP中json格式數(shù)據(jù)操作技巧匯總》及《PHP針對(duì)XML文件操作技巧總結(jié)

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • php結(jié)合ACCESS的跨庫(kù)查詢功能

    php結(jié)合ACCESS的跨庫(kù)查詢功能

    有時(shí)候我們?cè)陂_(kāi)發(fā)一些小程序或簡(jiǎn)單功能的管理系統(tǒng),又沒(méi)有mysql數(shù)據(jù)庫(kù)的情況下,就可以使用access了,另外有時(shí)需要在兩個(gè)或三個(gè)數(shù)據(jù)庫(kù)的表中也可通過(guò)ACCESS的跨庫(kù)查詢功能實(shí)現(xiàn)
    2015-06-06
  • 如何利用PHP實(shí)現(xiàn)上傳圖片功能詳解

    如何利用PHP實(shí)現(xiàn)上傳圖片功能詳解

    這篇文章主要給大家介紹了關(guān)于如何利用PHP實(shí)現(xiàn)上傳圖片功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • PHP簡(jiǎn)單選擇排序算法實(shí)例

    PHP簡(jiǎn)單選擇排序算法實(shí)例

    這篇文章主要介紹了PHP簡(jiǎn)單選擇排序算法實(shí)例,本文直接給出實(shí)現(xiàn)代碼,并以類的方式實(shí)現(xiàn),需要的朋友可以參考下
    2015-01-01
  • PHP實(shí)現(xiàn)廣度優(yōu)先搜索算法(BFS,Broad First Search)詳解

    PHP實(shí)現(xiàn)廣度優(yōu)先搜索算法(BFS,Broad First Search)詳解

    這篇文章主要介紹了PHP實(shí)現(xiàn)廣度優(yōu)先搜索算法(BFS,Broad First Search),簡(jiǎn)單描述了廣度優(yōu)先搜索算法的原理并結(jié)合具體實(shí)例分析了php實(shí)現(xiàn)廣度優(yōu)先搜索算法的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • php批量上傳的實(shí)現(xiàn)代碼

    php批量上傳的實(shí)現(xiàn)代碼

    本篇文章是對(duì)php批量上傳的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php自定義分頁(yè)類完整實(shí)例

    php自定義分頁(yè)類完整實(shí)例

    這篇文章主要介紹了php自定義分頁(yè)類,以完整實(shí)例形式分析了php實(shí)現(xiàn)分頁(yè)功能的原理與具體實(shí)現(xiàn)技巧,代碼中有詳細(xì)的注釋便于理解,需要的朋友可以參考下
    2015-12-12
  • php 接口類與抽象類的實(shí)際作用

    php 接口類與抽象類的實(shí)際作用

    很多人搞不清楚接口和抽象類的區(qū)別!下面我把我的理解與大家共享!
    2009-11-11
  • Laravel中如何輕松容易的輸出完整的SQL語(yǔ)句

    Laravel中如何輕松容易的輸出完整的SQL語(yǔ)句

    這篇文章主要給大家介紹了關(guān)于Laravel中如何輕松容易的輸出完整的SQL語(yǔ)句的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • php日志函數(shù)error_log用法實(shí)例分析

    php日志函數(shù)error_log用法實(shí)例分析

    這篇文章主要介紹了php日志函數(shù)error_log用法,結(jié)合實(shí)例形式分析了php日志函數(shù)error_log相關(guān)的配置文件設(shè)置、函數(shù)功能、用法與使用注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • 用PHP來(lái)計(jì)算某個(gè)目錄大小的方法

    用PHP來(lái)計(jì)算某個(gè)目錄大小的方法

    這篇文章主要介紹了用PHP來(lái)計(jì)算某個(gè)目錄大小的方法,需要的朋友可以參考下
    2014-04-04

最新評(píng)論