最近主機(jī)吧在修改博客的時(shí)候,發(fā)現(xiàn)微信支付出現(xiàn)了異常,無法正常出微信二維碼。
主機(jī)吧以找春哥查了下,則開始以為是微付支付平臺(tái)設(shè)置出了問題,后來一查原來并不是。
經(jīng)過多方查詢后,原來是問題出在使用的百度CDN上,我們都知道一般使用CDN后程序都是無法識(shí)別真實(shí)用戶IP的,而微信支付HTTPS是需要識(shí)別真實(shí)用戶IP,才可以正常付款的,也這也導(dǎo)致程序報(bào)錯(cuò):invalid spbill_create_ip錯(cuò)誤。
要怎么解決呢?要么取消CDN? 取消CDN肯定不行,因?yàn)檫@樣服務(wù)器就裸奔了,肯定會(huì)被一些無聊的人攻擊的。
經(jīng)過查詢后,CDN想要識(shí)別訪客IP是可以實(shí)現(xiàn)的,一般CDN都是通過轉(zhuǎn)發(fā)的HTTP頭信息中增加 X-Forwarded-For 信息,用于記錄客戶端的真實(shí)IP,那么問題就好解決了,直接在wordpress文件functions.php
寫入代碼:
function b2_get_user_ip() {
if ( ! empty( $_SERVER[‘HTTP_CLIENT_IP’] ) ) {$ip = $_SERVER[‘HTTP_CLIENT_IP’];
} elseif ( ! empty( $_SERVER[‘HTTP_X_FORWARDED_FOR’] ) ) {$ip = $_SERVER[‘HTTP_X_FORWARDED_FOR’];
} else {
$ip = $_SERVER[‘REMOTE_ADDR’];
}if(strpos($ip,’,’) !== false){
$ips = explode(‘,’,$ip);
$ip = $ips[0];
}return $ip;
}
即可完成,經(jīng)測試后微信支付正常了!果然有大牛就是不一樣,解決效率很高,各位同學(xué)可以根據(jù)這個(gè)原因解決HTTPS使用微信支付問題,主機(jī)吧這里只是作個(gè)參考。
其他網(wǎng)站使用 也會(huì)出現(xiàn)這種情況嗎?
恩 微信支付會(huì)有問題,用CDN的都會(huì)出現(xiàn)支付不了情況 這種情況只出現(xiàn)在HTTPS的網(wǎng)站上 HTTP沒問題