流程

1: 配置微信公众号JS域名

2:前端发送URL后台获取JSSDK配置,

后台Service代码如下, 修改2处位置:

  WeixinUtil.APPID => 当前公众号APPID

  WeixinUtil.getAccessToken() => 当前公众号access_token

public interface IWxJssdkService {
Map<String, Object> getJssdkConfig(String url);
}
@Service
public class WxJssdkService implements IWxJssdkService { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Override
public Map<String,Object> getJssdkConfig(String url) {
Map<String,Object> result = new Map<String,Object>();
try {
//生成签名的随机串
String nonceStr = create_nonce_str();
//生成签名的时间戳
String timestamp = create_timestamp();
//签名
String signature = createSignature(url, nonceStr, timestamp);
result.setErrCode("");
result.put("appId", WeixinUtil.APPID);
result.put("timestamp", timestamp);
result.put("nonceStr", nonceStr);
result.put("signature", signature);
} catch (Exception e) {
e.printStackTrace();
logger.info("wrong:" + e.getMessage());
result.setErrCode("-1");
}
return result;
} private String getJsapiTicket() {
String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + WeixinUtil.getAccessToken() + "&type=jsapi";
try {
String rs = RequestUtil.doGet(url, null);
JSONObject obj_content = new JSONObject(rs);
String jsapi_ticket = obj_content.getString("ticket");
return jsapi_ticket;
} catch (Exception e) {
e.printStackTrace();
logger.info("获取微信jsapiTicket错误.");
}
return null;
} private String create_timestamp() {
return Long.toString(System.currentTimeMillis() / );
} private String create_nonce_str() {
return UUID.randomUUID().toString();
} private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash) {
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
} /**
* 根据jsapi_ticket等参数进行SHA1加密
*
* @param url 当前页面url
*/
public String createSignature(String url, String nonceStr, String timestamp) {
String jsapiTicket = getJsapiTicket();
String signature = "jsapi_ticket=" + jsapiTicket;
signature += "&noncestr=" + nonceStr;
signature += "&timestamp=" + timestamp;
signature += "&url=" + url; logger.info("jsapi_ticket:{}", jsapiTicket);
logger.info("noncestr:{}", nonceStr);
logger.info("timestamp:{}", timestamp);
logger.info("url:{}", url);
logger.info("signture before:{}", signature); try {
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(signature.getBytes("UTF-8"));
signature = byteToHex(crypt.digest()); logger.info("signture after:" + signature);
} catch (Exception e) {
logger.error("Signature for SHA-1 is error:{}", e);
} return signature;
}
}

3: 请先安装weixin-js-sdk,  命令:npm install weixin-js-sdk --save-dev

vue启动后axios请求后台并配置.

import wx from 'weixin-js-sdk';
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: result.appId, // 必填,公众号的唯一标识
timestamp: result.timestamp, // 必填,生成签名的时间戳
nonceStr: result.nonceStr, // 必填,生成签名的随机串
signature: result.signature,// 必填,签名
jsApiList: ['scanQRCode', 'chooseImage', 'uploadImage'] // 必填,需要使用的JS接口列表
});

4;相机 和 选择照片

5:浏览器打开如下url: 这个serverId(media_id)可以获取图片了.

https://api.weixin.qq.com/cgi-bin/media/get?access_token=微信access_token&media_id=serverId(media_id);

Vue 实现微信 jssdk 扫码, 上传图片的更多相关文章

  1. Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_182 之前的一篇文章:mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能,主要介绍了微信小程序内 ...

  2. Java实现微信客户端扫码登录

    此篇文章记录自己开发中的微信客户端扫码登录的实例以及步骤,便于以后自行学习记起的关键,看到的网友有借鉴的地方就借鉴,看不懂的也请别吐槽,毕竟每个人的思维和思路以及记录东西的方式不一样: 1.首先需要一 ...

  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-3.微信网站扫码支付介绍

    笔记 3.微信网站扫码支付介绍     简介:讲解微信网页扫码支付         1.扫码支付文档:https://pay.weixin.qq.com/wiki/doc/api/native.php ...

  4. Java之微信支付(扫码支付模式二)案例实战

    摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,在做的过程中也遇到些问题,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路. 一:微信支付接入准备工作: 首先, ...

  5. Spring Security整合企业微信的扫码登录,企微的API震惊到我了

    本文代码: https://gitee.com/felord/spring-security-oauth2-tutorial/tree/wwopen/ 现在很多企业都接入了企业微信,作为私域社群工具, ...

  6. ASP.NET MVC做的微信WEBAPP中调用微信JSSDK扫一扫

    今天做一个项目,是在微信上用的,微信WEB APP,里面用到了调用手机摄像头扫一扫二维码的功能,记得以前某个项目里写有的,但是找不到之前那个项目源码了,想复制粘贴也复制不了了,只好对着微信的那个开发文 ...

  7. (实用篇)微信支付扫码支付php版

    本文实例为大家分享了php微信扫码支付源码,供大家参考,具体内容如下 代码中包含四个文件createUrl.php.ArrayToXML.php.returnGoodsUrl.php.notifyUr ...

  8. [支付]微信NATIVE扫码支付JAVA实现

    步骤: 1.预订单 2.接受微信返回的url 3.将url转为二维码显示到页面上 4.扫码支付 5.接收微信的异步通知,在这步修改订单的状态 6.收到异步通知的同时给微信返回指定数据,告知对方已成功处 ...

  9. ThinkPHP 整合微信支付 扫码支付 模式二 图文教程

    这篇文章主要介绍扫码支付场景二. 目前有两种模式,模式一比模式二稍微复杂点,至于模式一与模式二的具体内容,流程,微信开发文档都有详细介绍,这里就不多说废话,接下来赶紧上教程! [title]下载SDK ...

随机推荐

  1. Bitwise Equations

    Problem Description You are given two positive integers X and K. Return the K-th smallest positive i ...

  2. BST树、B树、B+树、B*树

    1. BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: ...

  3. poj1054 The Troublesome Frog 瞎搞。

    连接:http://poj.org/problem?id=1054 题意:就是一个格子里一条线上最长有几个青蛙(青蛙间隔相同)~.但是其实青蛙的起点重点必须是在外面. 直接写一个搜就是. #inclu ...

  4. db2时间函数

    获取当前日期: select current date from sysibm.sysdummy1; values current date; --获取当前时间 select current time ...

  5. Memcached介绍及相关知识

    memcached简介 1.memcached是一个免费开源的.高性能的,具有分布式内存对象的缓存系统.memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...

  6. iOS-----使用AddressBookUI管理联系人

    使用AddressBookUI管理联系人 iOS SDK为管理地址簿提供的视图控制器位于AddressBookUI框架内.总结来说,AddressBookUI框架提供了如下特殊的视图控制器. ABPe ...

  7. backports移植rtlwifi驱动

    /************************************************************************ * backports移植rtlwifi驱动 * 说 ...

  8. Ubuntu下gcc的简单使用

    一直不怎么用gcc,今天看了大神们的笔试题,不得不动手开始写程序了,差距那个大啊. gcc是ubuntu下的终端编译器,可以用来写C.C++的程序,简单用法如下: vim name1.c 先用vim打 ...

  9. BZOJ3436: 小K的农场(差分约束裸题&DFS优化判环)

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2111  Solved: 986[Submit][Status][Discus ...

  10. UT源码+105032014070

    设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角 ...