java開發(fā)Demo~微信掃碼支付,java開發(fā)示例

開發(fā)所需工具類


開發(fā)所需jar

具體的代碼不貼了诱桂,說明下PayConfigUtil中的參數(shù)


APP_ID和APP_SECRET在公眾平臺?

MCH_ID和API_KEY在商戶平臺,其中API_KEY是自己設(shè)置的墓懂,并不是自動生成的。

Controller

通過此方法榆芦,前往可以生成二維碼的頁面

//微信前往支付頁面

? ? @RequestMapping(value = "towxPay")

? ? public ModelAndView towxPay(ModelMap map,HttpServletRequest request,String chapterId,String chapterName,String price) throws IOException{

? ? ? ? ModelAndView mav = new ModelAndView();

? ? ? ? mav.setViewName("jsp/pay/weixinpayma");

? ? ? ? HttpSession session = request.getSession();

? ? ? ? session.setAttribute("chapterId", chapterId);

? ? ? ? session.setAttribute("chapterName", chapterName);

? ? ? ? session.setAttribute("price", price);

? ? ? ? return mav;

? ? }

返回的頁面如下

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

? ? ? ? ? ? ? ? <%

? ? String path = request.getContextPath();

? ? String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()

? ? ? ? ? ? + path + "/";

%>

Insert title here

? ?



? ?

? ? /* ajax輪回,不停的訪問Controller喘鸟,直到wxPayType=1時匆绣,付款成功 */

? ? ? ? var num = 0;

? ? ? ? $(function(){

? ? ? ? ? ? panduanWXPay();

? ? ? ? });

? ? ? ? function panduanWXPay(){

? ? ? ? ? ? $.post("<%=basePath%>index/panduanPay",function(data){

? ? ? ? ? ? ? ? var wxPayType = data.wxPayType;

? ? ? ? ? ? ? ? if(wxPayType==1){

? ? ? ? ? ? ? ? /* 成功 */

? ? ? ? ? ? ? ? ? ? window.location.href='<%=basePath%>index/gouMai';

? ? ? ? ? ? ? ? }else if(wxPayType==0 && num!=400){

? ? ? ? ? ? ? ? ? ? num++;

? ? ? ? ? ? ? ? ? ? panduanWXPay();

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? alert("支付超時");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? });

? ? ? ? }?


payImg方法

//微信支付,生成二維碼

? ? @RequestMapping(value = "payImg")

? ? public? void payImg(HttpServletRequest request, HttpServletResponse response) throws IOException{

? ? ? ? HttpSession session = request.getSession();

? ? ? ? String chapterName=(String)session.getAttribute("chapterName");

? ? ? ? String price=(String)session.getAttribute("price");

? ? ? ? int defaultWidthAndHeight=200;

? ? ? ? String nonce_str = PayCommonUtil.getNonce_str();

? ? ? ? long time_stamp = System.currentTimeMillis() / 1000;

? ? ? ? String product_id = chapterName+"*"+price;//訂單名字和價錢什黑,拼到了一起崎淳,后面用到的時候再拆

? ? ? ? String key = PayConfigUtil.API_KEY; // key

? ? ? ? SortedMap packageParams = new TreeMap();

? ? ? ? packageParams.put("appid", PayConfigUtil.APP_ID);

? ? ? ? packageParams.put("mch_id", PayConfigUtil.MCH_ID);

? ? ? ? packageParams.put("time_stamp", String.valueOf(time_stamp));

? ? ? ? packageParams.put("nonce_str", nonce_str);

? ? ? ? packageParams.put("product_id", product_id);

//? ? ? packageParams.put("chapterId", chapterId);

//? ? ? packageParams.put("price", price);

? ? ? ? String sign = PayCommonUtil.createSign("UTF-8", packageParams,key);//MD5哈希

? ? ? ? packageParams.put("sign", sign);

? ? ? ? //生成參數(shù)

? ? ? ? String str = ToUrlParams(packageParams);

? ? ? ? String payurl = "weixin://wxpay/bizpayurl?" + str;

//? ? ? logger.info("payurl:"+payurl);

? ? ? ? //生成二維碼

? ? ? ? Map? hints=new HashMap();

? ? ? ? // 指定糾錯等級?

? ? ? ? hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);?

? ? ? ? // 指定編碼格式?

? ? ? ? hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");?

? ? ? ? hints.put(EncodeHintType.MARGIN, 1);

? ? ? ? try {

? ? ? ? ? ? BitMatrix bitMatrix = new MultiFormatWriter().encode(payurl,BarcodeFormat.QR_CODE, defaultWidthAndHeight, defaultWidthAndHeight, hints);

? ? ? ? ? ? OutputStream out = response.getOutputStream();

? ? ? ? ? ? MatrixToImageWriter.writeToStream(bitMatrix, "png", out);//輸出二維碼

? ? ? ? ? ? out.flush();

? ? ? ? ? ? out.close();

? ? ? ? } catch (WriterException e) {

? ? ? ? ? ? // TODO Auto-generated catch block

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

? ? }

public String ToUrlParams(SortedMap packageParams){

? ? ? ? //實際可以不排序

? ? ? ? StringBuffer sb = new StringBuffer();?

? ? ? ? Set es = packageParams.entrySet();?

? ? ? ? Iterator it = es.iterator();?

? ? ? ? while (it.hasNext()) {?

? ? ? ? ? ? Map.Entry entry = (Map.Entry) it.next();?

? ? ? ? ? ? String k = (String) entry.getKey();?

? ? ? ? ? ? String v = (String) entry.getValue();?

? ? ? ? ? ? if (null != v && !"".equals(v)) {?

? ? ? ? ? ? ? ? sb.append(k + "=" + v + "&");?

? ? ? ? ? ? }?

? ? ? ? }

? ? ? ? sb.deleteCharAt(sb.length()-1);//刪掉最后一個&

? ? ? ? return sb.toString();

? ? }

掃碼時觸動此方法,會在手機(jī)端顯示付款信息

要將此方法的路徑配置到回調(diào)url里愕把,微信公眾平臺–>微信支付–>開發(fā)配置?


//微信掃碼的時候拣凹,觸發(fā)此方法

? ? @RequestMapping(value = "Re_notify")

? ? public void Re_notify(HttpServletRequest request, HttpServletResponse response) throws IOException{

? ? ? ? HttpSession session = request.getSession();

? ? ? ? String chapterId=(String)session.getAttribute("chapterId");

? ? ? ? String chapterName=(String)session.getAttribute("chapterName");

? ? ? ? String price=(String)session.getAttribute("price");

? ? ? ? System.out.println(chapterId+":"+chapterName+":"+price);

? ? ? ? // 讀取xml

? ? ? ? ? ? ? ? InputStream inputStream;

? ? ? ? ? ? ? ? StringBuffer sb = new StringBuffer();

? ? ? ? ? ? ? ? inputStream = request.getInputStream();

? ? ? ? ? ? ? ? String s;

? ? ? ? ? ? ? ? BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

? ? ? ? ? ? ? ? while ((s = in.readLine()) != null) {

? ? ? ? ? ? ? ? ? ? sb.append(s);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? in.close();

? ? ? ? ? ? ? ? inputStream.close();

? ? ? ? ? ? ? ? SortedMap packageParams = PayCommonUtil.xmlConvertToMap(sb.toString());

//? ? ? ? ? ? ? logger.info(packageParams);

? ? ? ? ? ? ? ? // 賬號信息

? ? ? ? ? ? ? ? String key = PayConfigUtil.API_KEY; // key

? ? ? ? ? ? ? ? String resXml="";//反饋給微信服務(wù)器

? ? ? ? ? ? ? ? // 驗簽

? ? ? ? ? ? ? ? if (PayCommonUtil.isTenpaySign("UTF-8", packageParams, key)) {

? ? ? ? ? ? ? ? ? ? //appid openid mch_id is_subscribe nonce_str product_id sign

? ? ? ? ? ? ? ? ? ? //統(tǒng)一下單

? ? ? ? ? ? ? ? ? ? String openid = (String)packageParams.get("openid");

? ? ? ? ? ? ? ? ? ? String product_id = (String)packageParams.get("product_id");

? ? ? ? ? ? ? ? ? ? //解析product_id,計算價格等

? ? ? ? ? ? ? ? ? ? String thePricce = product_id.substring(product_id.lastIndexOf("*")+1);

? ? ? ? ? ? ? ? ? ? String newProductId = product_id.substring(0, product_id.indexOf("*"));

? ? ? ? ? ? ? ? ? ? String out_trade_no = String.valueOf(System.currentTimeMillis()); // 訂單號?

? ? ? ? ? ? ? ? ? ? String order_price = thePricce; // 價格"1"? 注意:價格的單位是分?

? ? ? ? ? ? ? ? ? ? String body = newProductId;? // 商品名稱product_id? 這里設(shè)置為product_id

? ? ? ? ? ? ? ? ? ? String attach = "十倍課"; //附加數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? String nonce_str0 = PayCommonUtil.getNonce_str();

? ? ? ? ? ? ? ? ? ? // 獲取發(fā)起電腦 ip?

? ? ? ? ? ? ? ? ? ? String spbill_create_ip = PayConfigUtil.CREATE_IP;? ?

? ? ? ? ? ? ? ? ? ? String trade_type = "NATIVE";

? ? ? ? ? ? ? ? ? ? SortedMap unifiedParams = new TreeMap();?

? ? ? ? ? ? ? ? ? ? unifiedParams.put("appid", PayConfigUtil.APP_ID); // 必須

? ? ? ? ? ? ? ? ? ? unifiedParams.put("mch_id", PayConfigUtil.MCH_ID); // 必須

? ? ? ? ? ? ? ? ? ? unifiedParams.put("out_trade_no", out_trade_no); // 必須

? ? ? ? ? ? ? ? ? ? unifiedParams.put("product_id", product_id);

? ? ? ? ? ? ? ? ? ? unifiedParams.put("body", body); // 必須

? ? ? ? ? ? ? ? ? ? unifiedParams.put("attach", attach);

? ? ? ? ? ? ? ? ? ? unifiedParams.put("total_fee", order_price);? // 必須

? ? ? ? ? ? ? ? ? ? unifiedParams.put("nonce_str", nonce_str0);? // 必須

? ? ? ? ? ? ? ? ? ? unifiedParams.put("spbill_create_ip", spbill_create_ip); // 必須

? ? ? ? ? ? ? ? ? ? unifiedParams.put("trade_type", trade_type); // 必須?

? ? ? ? ? ? ? ? ? ? unifiedParams.put("openid", openid);?

? ? ? ? ? ? ? ? ? ? unifiedParams.put("notify_url", PayConfigUtil.NOTIFY_URL);//異步通知url

? ? ? ? ? ? ? ? ? ? String sign0 = PayCommonUtil.createSign("UTF-8", unifiedParams,key);?

? ? ? ? ? ? ? ? ? ? unifiedParams.put("sign", sign0); //簽名

? ? ? ? ? ? ? ? ? ? String requestXML = PayCommonUtil.getRequestXml(unifiedParams);?

//? ? ? ? ? ? ? ? ? logger.info(requestXML);

? ? ? ? ? ? ? ? ? ? //統(tǒng)一下單接口

? ? ? ? ? ? ? ? ? ? String rXml = HttpUtil.postData(PayConfigUtil.UFDODER_URL, requestXML);?

? ? ? ? ? ? ? ? ? ? //統(tǒng)一下單響應(yīng)

? ? ? ? ? ? ? ? ? ? SortedMap reParams = PayCommonUtil.xmlConvertToMap(rXml);

//? ? ? ? ? ? ? ? ? logger.info(reParams);

? ? ? ? ? ? ? ? ? ? //驗簽

? ? ? ? ? ? ? ? ? ? if (PayCommonUtil.isTenpaySign("UTF-8", reParams, key)) {

? ? ? ? ? ? ? ? ? ? ? ? // 統(tǒng)一下單返回的參數(shù)

? ? ? ? ? ? ? ? ? ? ? ? String prepay_id = (String)reParams.get("prepay_id");//交易會話標(biāo)識? 2小時內(nèi)有效

? ? ? ? ? ? ? ? ? ? ? ? String nonce_str1 = PayCommonUtil.getNonce_str();

? ? ? ? ? ? ? ? ? ? ? ? SortedMap resParams = new TreeMap();?

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("return_code", "SUCCESS"); // 必須

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("return_msg", "OK");

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("appid", PayConfigUtil.APP_ID); // 必須

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("mch_id", PayConfigUtil.MCH_ID);

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("nonce_str", nonce_str1); // 必須

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("prepay_id", prepay_id); // 必須

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("result_code", "SUCCESS"); // 必須

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("err_code_des", "OK");

? ? ? ? ? ? ? ? ? ? ? ? String sign1 = PayCommonUtil.createSign("UTF-8", resParams,key);?

? ? ? ? ? ? ? ? ? ? ? ? resParams.put("sign", sign1); //簽名

? ? ? ? ? ? ? ? ? ? ? ? resXml = PayCommonUtil.getRequestXml(resParams);

//? ? ? ? ? ? ? ? ? ? ? logger.info(resXml);

? ? ? ? ? ? ? ? ? ? }else{

//? ? ? ? ? ? ? ? ? ? ? logger.info("簽名驗證錯誤");

? ? ? ? ? ? ? ? ? ? ? ? resXml = "" + ""?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + "" + " ";

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }else{

//? ? ? ? ? ? ? ? ? logger.info("簽名驗證錯誤");

? ? ? ? ? ? ? ? ? ? resXml = "" + ""?

? ? ? ? ? ? ? ? ? ? ? ? ? ? + "" + " ";

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? //------------------------------?

? ? ? ? ? ? ? ? //處理業(yè)務(wù)完畢?

? ? ? ? ? ? ? ? //------------------------------?

? ? ? ? ? ? ? ? BufferedOutputStream out = new BufferedOutputStream(?

? ? ? ? ? ? ? ? ? ? ? ? response.getOutputStream());?

? ? ? ? ? ? ? ? out.write(resXml.getBytes());?

? ? ? ? ? ? ? ? out.flush();?

? ? ? ? ? ? ? ? out.close();?

? ? }

微信支付成功時訪問的方法

密碼錯誤等未支付成功的情況下恨豁,不會訪問嚣镜。?

此路徑是PayConfigUtil中配置的

int wxPayType = 0;

? ? //微信掃碼支付回調(diào)

? ? @RequestMapping(value = "Notify1")

? ? public void Notify1(HttpServletRequest request, HttpServletResponse response) throws IOException{

? ? ? ? InputStream inputStream;

? ? ? ? StringBuffer sb = new StringBuffer();

? ? ? ? inputStream = request.getInputStream();

? ? ? ? String s;

? ? ? ? BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

? ? ? ? while ((s = in.readLine()) != null) {

? ? ? ? ? ? sb.append(s);

? ? ? ? }

? ? ? ? in.close();

? ? ? ? inputStream.close();

? ? ? ? SortedMap packageParams = PayCommonUtil.xmlConvertToMap(sb.toString());

//? ? ? logger.info(packageParams);

? ? ? ? // 賬號信息

? ? ? ? String key = PayConfigUtil.API_KEY; // key

? ? ? ? String resXml = ""; // 反饋給微信服務(wù)器

? ? ? ? // 判斷簽名是否正確

? ? ? ? if (PayCommonUtil.isTenpaySign("UTF-8", packageParams, key)) {

? ? ? ? ? ? // ------------------------------

? ? ? ? ? ? // 處理業(yè)務(wù)開始

? ? ? ? ? ? // ------------------------------

? ? ? ? ? ? if ("SUCCESS".equals((String) packageParams.get("result_code"))) {

? ? ? ? ? ? ? ? // 這里是支付成功

? ? ? ? ? ? ? ? ////////// 執(zhí)行自己的業(yè)務(wù)邏輯////////////////

? ? ? ? ? ? ? ? String mch_id = (String) packageParams.get("mch_id");

? ? ? ? ? ? ? ? String openid = (String) packageParams.get("openid");

? ? ? ? ? ? ? ? String is_subscribe = (String) packageParams.get("is_subscribe");

? ? ? ? ? ? ? ? String out_trade_no = (String) packageParams.get("out_trade_no");

? ? ? ? ? ? ? ? String total_fee = (String) packageParams.get("total_fee");

//// 將用于標(biāo)記是否成功的全局變量wxPayType設(shè)置為1,ajax輪回時橘蜜,可以獲取到其變化菊匿,從而進(jìn)行頁面跳轉(zhuǎn)////

? ? ? ? ? ? ? ? wxPayType=1;

? ? ? ? ? ? ? ? System.out.println("33333333333333333333333333333:"+wxPayType);

//? ? ? ? ? "支付成功"

// 通知微信.異步確認(rèn)成功.必寫.不然會一直通知后臺.八次之后就認(rèn)為交易失敗了.

? ? ? ? ? ? ? ? resXml = "" + ""

? ? ? ? ? ? ? ? ? ? ? ? + "" + " ";

? ? ? ? ? ? } else {

//? ? ? ? ? ? ? logger.info("支付失敗,錯誤信息:" + packageParams.get("err_code"));

? ? ? ? ? ? ? ? resXml = "" + ""

? ? ? ? ? ? ? ? ? ? ? ? + "" + " ";

? ? ? ? ? ? }

? ? ? ? } else {

//? ? ? ? ? logger.info("簽名驗證錯誤");

? ? ? ? ? ? resXml = "" + ""?

? ? ? ? ? ? ? ? ? ? + "" + " ";

? ? ? ? }

? ? ? ? // ------------------------------

? ? ? ? // 處理業(yè)務(wù)完畢

? ? ? ? // ------------------------------

? ? ? ? BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());

? ? ? ? out.write(resXml.getBytes());

? ? ? ? out.flush();

? ? ? ? out.close();

? ? }

ajax不停輪回,判斷是否登錄成功的方法

@RequestMapping(value = "panduanPay")

? ? ? ? @ResponseBody

? ? ? ? public Map panduanPay(HttpServletRequest request) throws IOException{

? ? ? ? ? ? Map map = new HashMap();

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? Thread.sleep(500);

? ? ? ? ? ? } catch (InterruptedException e) {

? ? ? ? ? ? ? ? // TODO Auto-generated catch block

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? }

? ? ? ? ? ? //給頁面返回wxPayType值扮匠,成功是返回的是1捧请;還未支付成功,返回的是初始值0

? ? ? ? ? ? map.put("wxPayType",wxPayType);

? ? ? ? ? ? return map;

? ? ? ? }

成功后頁面跳轉(zhuǎn)的方法

//購買成功棒搜,存入購買表中

? ? @RequestMapping(value="gouMai")

? ? @ResponseBody

? ? public ModelAndView gouMai(HttpServletRequest req,String a,String urlName,String couName,ModelMap map){

? ? ? ? ModelAndView mav = new ModelAndView();

? ? ? ? Map mapp1 = new HashMap();

//? ? ? SysUserTab login_user = sysuserService.getSysUserById(userId);

? ? ? ? HttpSession session = req.getSession();

? ? ? ? SysUserTab login_user1 = (SysUserTab) session.getAttribute("login_user");

? ? ? ? String userId = login_user1.getUserId();

//? ? ? session.setAttribute("login_user", login_user);

? ? ? ? String chapterId = (String) session.getAttribute("chapterId");

? ? ? ? mapp1.put("userId", userId);

? ? ? ? mapp1.put("chapterId", chapterId);

? ? ? ? int num = sysBuyService.getBuyCount(mapp1);

? ? ? ? if(num==0){

? ? ? ? ? ? mapp1.put("buyId", UUID.randomUUID().toString().replace("-", ""));

? ? ? ? ? ? sysBuyService.insertBuy(mapp1);

? ? ? ? }

Java高架構(gòu)師疹蛉、分布式架構(gòu)、高可擴(kuò)展力麸、高性能可款、高并發(fā)育韩、性能優(yōu)化、Spring boot闺鲸、Redis筋讨、ActiveMQ、Nginx摸恍、Mycat悉罕、Netty、Jvm大型分布式項目實戰(zhàn)學(xué)習(xí)架構(gòu)師視頻免費(fèi)學(xué)習(xí)加群:835638062 點擊鏈接加入群聊【Java高級架構(gòu)】:https://jq.qq.com/?_wv=1027&k=5S3kL3v

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末立镶,一起剝皮案震驚了整個濱河市壁袄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌媚媒,老刑警劉巖嗜逻,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缭召,居然都是意外死亡栈顷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門嵌巷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萄凤,“玉大人,你說我怎么就攤上這事搪哪⊥苈保” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵噩死,是天一觀的道長。 經(jīng)常有香客問我神年,道長已维,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任占业,我火速辦了婚禮鹦倚,結(jié)果婚禮上夹界,老公的妹妹穿的比我還像新娘。我一直安慰自己堂鲜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布护奈。 她就那樣靜靜地躺著缔莲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霉旗。 梳的紋絲不亂的頭發(fā)上痴奏,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天蛀骇,我揣著相機(jī)與錄音,去河邊找鬼读拆。 笑死擅憔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的檐晕。 我是一名探鬼主播暑诸,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辟灰!你這毒婦竟也來了个榕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤伞矩,失蹤者是張志新(化名)和其女友劉穎笛洛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乃坤,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡苛让,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了湿诊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狱杰。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厅须,靈堂內(nèi)的尸體忽然破棺而出仿畸,到底是詐尸還是另有隱情,我是刑警寧澤朗和,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布错沽,位于F島的核電站,受9級特大地震影響眶拉,放射性物質(zhì)發(fā)生泄漏千埃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一忆植、第九天 我趴在偏房一處隱蔽的房頂上張望放可。 院中可真熱鬧,春花似錦朝刊、人聲如沸耀里。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冯挎。三九已至,卻和暖如春咙鞍,著一層夾襖步出監(jiān)牢的瞬間织堂,已是汗流浹背叠艳。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留易阳,地道東北人附较。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像潦俺,于是被迫代替她去往敵國和親拒课。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Overview The ccxt library is a collection of available cr...
    郭蟈兒蟈兒閱讀 3,700評論 0 1
  • 這篇文章主要記錄我自己在醫(yī)院旁邊的床位來看病人的三波事示。第一波早像,親戚,關(guān)心后給錢肖爵。第二波卢鹦,打電話給朋友,給紅包劝堪。第三...
    邊境游騎閱讀 133評論 0 0
  • 就一卒子 牢守邊疆 一盤大戰(zhàn)勝敗已成定局 從未移動半步 一開局 就粉身碎骨 血染楚河漢界 屬勝屬敗不得而知 高手決...
    洛水秦韻閱讀 335評論 2 15
  • 有時候吧冀自,負(fù)能量就突發(fā)性的爆炸 每一次以為的轉(zhuǎn)機(jī)都是新一輪的噩夢,以前算命的說秒啦,我感情不順熬粗,事業(yè)很好,哎余境,都是騙人...
    維爭青青閱讀 114評論 0 0
  • 還來不及回想人生路驻呐,大學(xué)畢業(yè)已經(jīng)匆匆十年了,就在上周末芳来,同學(xué)們蓄謀已久的十年聚會完美的落下了帷幕含末。有很多同學(xué)都感慨...
    歐陽風(fēng)影閱讀 427評論 0 0