1. 程式人生 > >微信紅包店小程序開發過程中遇到的問題 php獲取附近周邊商家 顯示最近商家

微信紅包店小程序開發過程中遇到的問題 php獲取附近周邊商家 顯示最近商家

企業 使用 發出 微信紅包 status 不用 發放 經緯 appid

最近公司在做一個項目就是微信紅包店。仿照的是微信官方在做的那個紅包店的模式。客戶搶紅包,搶到以後到店消費,消費以後就可以拿到商家的紅包了。

項目中的兩個難點:

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獲取附近周邊商家 顯示最近商家