java实现微信与支付宝支付使用同一二维码
生活随笔
收集整理的這篇文章主要介紹了
java实现微信与支付宝支付使用同一二维码
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)現(xiàn)用戶(hù)掃描同一二維碼,后臺(tái)識(shí)別是微信還是支付寶掃,跳轉(zhuǎn)不同的業(yè)務(wù)界面。通過(guò)掃碼后發(fā)送給后臺(tái)的請(qǐng)求數(shù)據(jù)中User-Agent判斷。
1.二維碼生成代碼
<1>.jar
<2>.生成二維碼的類(lèi)
import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix;/*** 二維碼生成器的類(lèi)*/ public class QRImageUtil {//私有不可更改的變量:生成二維碼圖片的顏色private static final int BLACK = 0xFF000000;private static final int WHITE = 0xFFFFFFFF;//空的構(gòu)造方法public QRImageUtil() {}/*** 靜態(tài)方法* BufferedImage是Image的一個(gè)子類(lèi),BufferedImage生成的圖片在內(nèi)存里有一個(gè)圖像緩沖區(qū),利用這個(gè)緩沖區(qū)我們可以很方便的操作這個(gè)圖片,* 通常用來(lái)做圖片修改操作如大小變換、圖片變灰、設(shè)置圖片透明或不透明等。* @param matrix 編碼形式* @return*/public static BufferedImage toBufferedImage(BitMatrix matrix){//圖片的寬度和高度int width = matrix.getWidth();int height = matrix.getHeight();//BufferedImage.TYPE_INT_RGB將圖片變?yōu)槭裁搭伾?/span>BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);for(int x = 0;x < width;x++){for(int y = 0;y < height;y++){image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);}}return image;}/*** 靜態(tài)方法 用于生成圖片* @param matrix 編碼形式* @param format 圖片類(lèi)型* @param file 文件(圖片路徑,圖片名稱(chēng))* @throws IOException*/public static void writeToFile(BitMatrix matrix,String format,File file) throws IOException{BufferedImage image = toBufferedImage(matrix);if(!ImageIO.write(image, format, file)){throw new IOException("Could not write an image of format " + format + " to " + file);}}/*** 輸出* @param matrix* @param format* @param stream* @throws IOException*/public static void writeToStream(BitMatrix matrix,String format,OutputStream stream) throws IOException{BufferedImage image = toBufferedImage(matrix);if(!ImageIO.write(image, format, stream)){throw new IOException("Could not write an image of format " + format);}} public static void main(String[] args) throws Exception {//二維碼中保存的信息String content = "http://192.168.1.49:8080/QRCode/getCode.do";//生成的二維碼保存的路徑String path = "E:\\";MultiFormatWriter multiFormatWrite = new MultiFormatWriter();Map hints = new HashMap();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 按照指定的寬度,高度和附加參數(shù)對(duì)字符串進(jìn)行編碼//生成二維碼SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");BitMatrix bitMatrix = multiFormatWrite.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);File file1 = new File(path,sdf.format(new Date())+".jpg");// 寫(xiě)入文件writeToFile(bitMatrix, "jpg", file1);System.out.println("二維碼圖片生成成功!");} }2.判斷是支付寶還是微信的類(lèi)
@Action("getCode")public String test() throws Exception{String userAgent = getRequest().getHeader("User-Agent");System.out.println(userAgent);int payWay = 0;String agent = userAgent.toLowerCase();if (agent.indexOf("micromessenger")>0) {//用戶(hù)使用微信訪問(wèn)頁(yè)面payWay = 1;string url ="";(獲取用戶(hù)授權(quán)信息的鏈接地址)getResponse().sendRedirect(url );}else if(agent.indexOf("alipayclient")>0){//用戶(hù)使用支付寶訪問(wèn)頁(yè)面payWay = 2;System.out.println("支付寶...");}return null;}總結(jié)
以上是生活随笔為你收集整理的java实现微信与支付宝支付使用同一二维码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VMware解决黑屏
- 下一篇: 敏捷武士:看敏捷高手交付卓越软件pdf