1、準備工作:(個人用戶的小程序服務功能並不多,企業小程序的服務功能開發多)
自己的域名、服務器,國內的話,最好是備案過的。
2、無小程序:自己去公衆平臺進行註冊,地址:https://mp.weixin.qq.com/wxopen/waregister?action=step1
3、註冊之後登錄,綁定開發人員,一般設置自己就行。
開發設置:域名服務器配置自行配置,建議使用寶塔方便快捷。
4、說到這裏,隨便說下怎麼安裝使用寶塔吧(服務器運維工具面板)
進入官網:點 立即安裝
安裝之前,需要去自己服務器後臺放行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後臺聯通上了,然後就是進一步的進行自己的業務開發。
簡單分享,祝你順利,有問題留言,不吝賜教!