微信小程序+java springboot後臺

1、準備工作:(個人用戶的小程序服務功能並不多,企業小程序的服務功能開發多)

自己的域名、服務器,國內的話,最好是備案過的。

2、無小程序:自己去公衆平臺進行註冊,地址:https://mp.weixin.qq.com/wxopen/waregister?action=step1

3、註冊之後登錄,綁定開發人員,一般設置自己就行。

開發設置:域名服務器配置自行配置,建議使用寶塔方便快捷。

4、說到這裏,隨便說下怎麼安裝使用寶塔吧(服務器運維工具面板)

官網:https://www.bt.cn/

進入官網:點 立即安裝 

安裝教程 

安裝之前,需要去自己服務器後臺放行8888端口,這是寶塔訪問面板的默認端口。

放行之後,根據自己服務器的操作系統選擇命令,登錄ssh控制檯,執行命令一鍵安裝。

安裝成功,成功頁面會給出登錄路徑以及密碼,然後登錄後臺,添加網站:

添加網站:

建站成功的nginx默認頁面:

nginx配置:

一鍵配置https:配置完成後即可進行https的安全訪問

另外,隨便安裝一個tomcat,來部署 java後臺的war包:

至此,服務器以及域名已經搭建完成。

5、代碼開發

一部分是前端代碼,另一部分是後端代碼,其實就跟開發 安卓 ios app一樣 ,小程序的前端展示代碼開發,會js就行,會一些前端代碼更好。


前端代碼開發:

點擊 微信提供的開發工具 下載微信提供的工具

下載完畢後,進行安裝,無需配置環境,雙擊運行即可:

新建項目

 

建項目後,會默認一套微信提供的框架,按照這個編寫即可,也可以使用其他工具編寫好後,再來這裏提交上傳代碼(可以使用微信提供的git庫管理代碼)

前端代碼就這個樣子,然後是後端的java代碼。

 

後端java代碼:

這裏使用一個封裝的jar,pom地址

			<!-- 小程序 公衆號使用sdk -->
			<dependency>
			    <groupId>com.github.binarywang</groupId>
			    <artifactId>weixin-java-miniapp</artifactId>
			    <version>3.3.0</version>
			</dependency>

 然後就是編寫自己的java代碼(注意配置自己的小程序相關信息):

  wx:
    app-id: appid
    app-secret: app密鑰
    mch-id: 商戶id(用作微信支付相關)
    mch-key: 商戶密鑰
    notify-url: 商戶證書
    # 商戶證書文件路徑
    # 請參考“商戶證書”一節 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3
    key-path: xxxxx

後臺我使用的springboot,寫一個簡單controller demo:WxController.java


import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;


import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import io.swagger.annotations.ApiOperation;

/**
 * 
 * @類名稱 WxController.java
 * @類描述 <pre>微信登錄鑑權相關</pre>
 * @作者  yw 
 * @創建時間 2020年6月21日 下午6:38:42
 * @版本 5.0.0
 *
 * @修改記錄
 * <pre>
 *     版本                       修改人 		修改日期 		 修改內容描述
 *     ----------------------------------------------
 *     5.0.0 	yw 	2020年6月21日             
 *     ----------------------------------------------
 * </pre>
 */
@RestController
@RequestMapping("/wx/auth")
public class WxController {
	
    @Autowired
    private WxMaService wxService;//上面引入的java裏面的服務器
    
    @Autowired
    private AdminUserService adminUserService;//自己的用戶相關信息服務,需要自己去編碼
	
    /**
     * 微信登錄
     *
     * @param wxLoginInfo 請求內容,{ code: xxx, userInfo: xxx }
     * @param request     請求對象
     * @return 登錄結果
     */
    @PostMapping("wxlogin")
	@ApiOperation(value="app用戶登錄", notes="app用戶登錄")
    public ResponseMsg loginByWeixin(@RequestBody WxLoginInfo wxLoginInfo, HttpServletRequest request) {
        String code = wxLoginInfo.getCode();//該code即是前端調用微信登錄獲取的
        AdminUser userInfo = wxLoginInfo.getUserInfo();
        if (code == null || userInfo == null) {
            return new ResponseMsg(CommonReturnCode.WX_PARAM_IS_NULL);
        }
        String sessionKey = null;
        String openId = null;
        try {
            WxMaJscode2SessionResult result = this.wxService.getUserService().getSessionInfo(code);
            sessionKey = result.getSessionKey();
            openId = result.getOpenid();
        } catch (Exception e) {
            e.printStackTrace();
        }

        //拿到openId,再進行自己的業務操作
        if (sessionKey == null || openId == null) {
            return new ResponseMsg(CommonReturnCode.WX_PARAM_IS_NULL);
        }

        //比如查詢庫裏面是否存在該用戶,有則更新登錄次數,無則註冊賬號,看自己的業務
        AdminUser user = adminUserService.getModelByLogin(openId);;
        if (user == null) {
        	user = new AdminUser();
        	user.setLoginName(openId);
        	user.setPassword(openId);
        	user.setHeadUrl(userInfo.getHeadUrl());
        	user.setName(userInfo.getName());
        	user.setCreateTime(new Timestamp(System.currentTimeMillis()));
        	adminUserService.insertModelWithoutNull(user);
        } else {
        	user.setLoginNum(user.getLoginNum() + 1);
        	adminUserService.updateModelWithoutNull(user);
        }

        
        // token 登錄成功後,可以使用jwt,返回給前端token 後續需要token進行接口鑑權驗證
        Map<String, Object> result = new HashMap<>();
        String subject = JSON.toJSONString(user);
        //openId 作爲id,用戶對象作爲 subject 這兩個參數自己隨意
		String token = TokenUtils.createJwtTokenApp(openId, subject);
        result.put("token", token);
        result.put("userInfo", user); 
        //相關信息再返回給前端,token必須
        return new ResponseMsg(result);
    }

}

到這裏微信小程序就已經跟java後臺聯通上了,然後就是進一步的進行自己的業務開發。

簡單分享,祝你順利,有問題留言,不吝賜教!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章