1.我封裝好的乙個支付類檔案,多餘的東西都去除掉了,並且把配置引數放到了這個支付類中,只需要修改weixinpayandroid方法內的幾個引數就可以直接複製使用:
class wxpayandroidelse
}//介面輸出
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就能進入支...