PHP APP端微信支付

2022-08-18 19:54:12 字數 3534 閱讀 2652

1.我封裝好的乙個支付類檔案,多餘的東西都去除掉了,並且把配置引數放到了這個支付類中,只需要修改weixinpayandroid方法內的幾個引數就可以直接複製使用:

class wxpayandroid

else

}//介面輸出

function echoresult($errorcode = 0, $errormsg = 'success', $responsedata = array())

function getverifysign($data, $key)

function formatparameters($paramap, $urlencode)

if ($urlencode)

$buff .= $k . "=" . $v . "&";

}$reqpar;

if (strlen($buff) > 0)

return $reqpar;

}/**

* 得到簽名

* @param object $obj

* @param string $api_key

* @return string

*/function getsign($obj, $api_key)

//簽名步驟一:按字典序排序引數

ksort($parameters);

$string = $this->formatbizqueryparamap($parameters, false);

//簽名步驟二:在string後加入key

$string = $string."&key=".$api_key;

//簽名步驟三:md5加密

$result = strtoupper(md5($string));

return $result;

}/**

* 獲取指定長度的隨機字串

* @param int $length

* @return ambigous */

function getrandchar($length)

return $str;

}/**

* 陣列轉xml

* @param array $arr

* @return string

*/function arraytoxml($arr)

else

$xml.="<".$key.">";

}$xml.="";

return $xml;

}/**

* 以post方式提交xml到對應的介面url

** @param string $xml 需要post的xml資料

* @param string $url url

* @param bool $usecert 是否需要證書,預設不需要

* @param int $second url執行超時時間,預設30s

* @throws wxpayexception

*/function postxmlcurl($xml, $url, $second=30, $usecert=false, $sslcert_path='', $sslkey_path='')

//post提交方式

curl_setopt($ch, curlopt_post, true);

curl_setopt($ch, curlopt_postfields, $xml);

//執行curl

$data = curl_exec($ch);

//返回結果

if($data) else

}/**

* 獲取當前伺服器的ip

* 將陣列轉成uri字串

* @param array $paramap

* @param bool $urlencode

* @return string

*/function formatbizqueryparamap($paramap, $urlencode)

$buff .= strtolower($k) . "=" . $v . "&";

}$reqpar;

if (strlen($buff) > 0)

return $reqpar;

}/**

* xml轉陣列

* @param unknown $xml

* @return mixed

*/function xmltoarray($xml)

public function chkparam()

//商品描述

if (empty($this->body))

if (empty($this->time_expire))

//檢測支付金額

if (empty($this->total_fee) || !is_numeric($this->total_fee))

//非同步通知url

* 執行第二次簽名,才能返回給客戶端使用

* @param int $prepayid:預支付交易會話標識

* @return array

*/public function getorder($prepayid)

/*** 非同步通知資訊驗證

* @return boolean|mixed

*/public function verifynotify()

$wx_back = $this->xmltoarray($xml);

if(empty($wx_back))

$checksign = $this->getverifysign($wx_back, $this->config['api_key']);

if($checksign=$wx_back['sign'])else

}}

2.建立控制器定義統一下單介面和支付後的非同步**介面:

vendor('wxpayandroid');//引入支付類

class wxpayandroid extends controller

exit('');

}else

}public function wxpayandroid(request $request)

}

PHP app 喚起微信支付 獲取鏈結 專案例項

public function weixin params data wxpayconfig array mchid 123456 key key out trade no data out trade no 訂單號 訂單名稱,必填 付款金額,必填 total amount 1 100 一分 100...

微信支付 微信JSAPI支付

pay.php baby extend wx pay.php namespace wx class pay 通過redirecturi獲取授權資訊 return mixed public function getauthinfo 通過code換取網頁授權資訊 res this curlgetreq ...

PC端支付 微信支付與支付寶支付

pc端的掃碼頁面需要自己編寫,統一下單之後,需要設定定時器查詢訂單狀態,當訂單狀態為支付成功,按需求跳轉頁面。wechatpay function this.http.post 介面 data then r else pc端的支付寶支付中,支付介面返回的是一段表單 觸發表單中的submit就能進入支...