微信紅包店小程序開發過程中遇到的問題 php獲取附近周邊商家 顯示最近商家
最近公司在做一個項目就是微信紅包店。仿照的是微信官方在做的那個紅包店的模式。客戶搶紅包,搶到以後到店消費,消費以後就可以拿到商家的紅包了。
項目中的兩個難點:
1通過小程序來發紅包 這個之前在開發語音紅包的時候已經遇到這些坑了,已經成功的踩過了。在這裏也總結下,因為最近還是有不少人加我微信咨詢這個。在這裏我再給大家總結下。
小程序發紅包接口使用的是微信支付文檔裏的, 企業付款到零錢的功能, 只要不用紅包接口就行了, 改成企業付款到零錢的接口, 一切就迎刃而解了, 然後註意 接口裏的appid就填寫小程序的appid, 接口裏的openid就填寫小程序抓取到的用戶的openid就可以了
具體的說明參考他的文檔https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1
上面是發放紅包的坑,希望對大家有幫助。接著我們談第二點,就是每個商家入駐以後,客戶打開小程序需要顯示最近的商家。而且盡量顯示最近周邊的商家。比如你在深圳就不需要把北京的商家紅包列出來了。 這就是我們說的第二點問題了,如何顯示最近商家。
2、顯示紅包店最近商家,距離排序問題。
這個問題首先是商家在入駐的時候,記得獲取到商家的經緯度,將商家的經緯度存在數據庫裏。以便顯示最近商家的時候,需要這些數據。
綜合了網上的幾種方法,最後我使用的是,計算一個圓形,然後將圓形放在一個四方形裏,獲取這個四方形上下左右四個點的經緯度,然後使用sql代碼 獲取這周圍的商家數據
下面直接貼代碼了。
/** * 計算某個經緯度的周圍某段距離的正方形的四個點 * 地球半徑,平均半徑為6371km * @param lng float 經度 * @param lat float 緯度 * @param distance float 該點所在圓的半徑,該圓與此正方形內切,默認值為0.5千米 * @return array 正方形的四個點的經緯度坐標 */ function getAroundCoordinate($lng, $lat,$distance = 0.5){ $dlng = 2 * asin(sin($distance / (2 * 6371)) / cos(deg2rad($lat))); $dlng = rad2deg($dlng); $dlat = $distance/6371; $dlat = rad2deg($dlat); return array( ‘left-top‘=>array(‘lat‘=>$lat + $dlat,‘lng‘=>$lng-$dlng), ‘right-top‘=>array(‘lat‘=>$lat + $dlat, ‘lng‘=>$lng + $dlng), ‘left-bottom‘=>array(‘lat‘=>$lat - $dlat, ‘lng‘=>$lng - $dlng), ‘right-bottom‘=>array(‘lat‘=>$lat - $dlat, ‘lng‘=>$lng + $dlng) ); }
我們是使用的小程序前端獲取的經緯度,你如果不使用前端獲取,那就可以使用ip地址來獲取,使用百度的api接口來獲取,只是好像位置不是很精確。
//根據客戶當前的ip地址來獲取 經緯度 function getlatlngbyip(){ $getIp=$_SERVER["REMOTE_ADDR"]; $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=百度申請api填寫在這裏就可以了&ip={$getIp}&coor=bd09ll"); $json = json_decode($content); $ary[‘lat‘]=$json->{‘content‘}->{‘point‘}->{‘y‘};//按層級關系提取緯度數據 $ary[‘lng‘]=$json->{‘content‘}->{‘point‘}->{‘x‘};//按層級關系提取經度數據 $ary[‘status‘]=1;$ary[‘info‘]=‘操作成功‘; return $ary; }
下面就是使用sql語句去查詢商家了
$search[‘lat‘]=array(array(‘gt‘,$fourpoint[‘right-bottom‘][‘lat‘]),array(‘lt‘,$fourpoint[‘left-top‘][‘lat‘])); $search[‘lng‘]=array(array(‘lt‘,$fourpoint[‘left-top‘][‘lng‘]),array(‘gt‘,$fourpoint[‘right-bottom‘][‘lng‘]));
同時也參考了下其他的一些網站的方法,大家可以看看,使用這些方法就可以成功開發出一個紅包店小程序了。
我,秋峰,phper,目前創業,做項目系統開發 相互學習 共同提高 微信號:qiufeng2983
以下這些網址對大家有所幫助,大家可以看看。
PHP代碼獲取客戶端IP地址經緯度及所在城市 - 小小強學習網 - 博客園
https://www.cnblogs.com/xqschool/p/6259558.html
tpshop商城根據用戶坐標,向數據庫查找附近的商家 - donaldbase - 博客園
https://www.cnblogs.com/donaldworld/p/6711329.html
PHP附近地理位置搜索實現詳解_百度文庫
https://wenku.baidu.com/view/1feb0d9c33d4b14e852468b7.html
微信紅包店小程序開發過程中遇到的問題 php獲取附近周邊商家 顯示最近商家