精华内容
下载资源
问答
  • 历史微信公众号排名,微信公众号新榜排名公众号排名优化的注意事项及细节今天给大家分享一下,作为微信公众号的排名优化对于大多数人来说都已经知道了有这个渠道的事情,其实很多的新产品及渠道出来以后有不少的人都...

    历史微信公众号排名,微信公众号新榜排名

    公众号排名优化的注意事项及细节今天给大家分享一下,作为微信公众号的排名优化对于大多数人来说都已经知道了有这个渠道的事情,其实很多的新产品及渠道出来以后有不少的人都能够引起注意,因为都想要快速的占据新渠道的流量,同样的对于公众号的渠道无非也是通过该渠道来获取大流量。

    公众号排名优化的模式是所比较关注的和关心的,究竟是一个怎样的模式来操作,很多人其实都不理解公众号的排名优化是一个什么样的东西,也因此带来了很多的疑问和疑惑。

        公众号的排名优化我们需要注意什么样的细节呢?其实对于公众号的排名我们在了解及落地实施的时候是需要注意到很多的事项的,因为如果一旦稍不留神可能会带来很严重的结果,这点如果了解过的大家都会非常的清楚,重点需要注意的是我们一定不要把公众号给做废掉了,那将是又要从头开始的,这一点不仅浪费时间更是浪费精力及打击自己的信心,所以这一点要注意,也有很多的人说无非就是那几点,在网上都看到了,没有什么难点,然后就带着这种在网上看到的方式去操作的,没过几天却发现问题出现了,要么没有用,要么就是最严重的结果出现了,这样的话只能是自己面壁思过,没有任何方式可以拯救。

    da294b0e8f973301d02fb8771a2e498a.png

    微信SEO什么意思,搜一搜,公众号排名优化策略是什么?

    这对于新媒体运营者而言,可能短时间内,并不能快速的做出回答,但是作为一名SEO人员,通常我们都可以理解微信SEO优化是什么意思!

    什么是微信SEO?

    简单理解:所谓的微信SEO优化,就是当我们在微信客户端中,“搜一搜”处,检索特定关键词,根据搜索结果有目的性的针对特定公众号排名,进行有效的优化。

    而当我们在试图谈论微信公众号SEO的时候,我们可能需要了解一下微信SEO中,搜索结果中,重要的组成部分,它主要包括:公众号、小程序、朋友圈、公众号文章、百科、新闻、问答、商品等。

    基于多年的SEO搜索引擎优化的经验,我们认为在做微信SEO优化之前,我们如同搜索引擎一样都需要思考一个问题:页面收录的问题。

    这里面我们主要是指:微信搜索结果中可以展现的情况。

    经过一定周期的运营,我们成功脱离沙盒之后,才有机会出现在“搜一搜”的搜索结果中,在接下来的环节,我们才正式进入公众号排名的讨论中:

    根据一定周期的测试,我们认为现阶段,影响微信SEO优化排名的因素主要包括如下内容:

    1、页面标题

    这是一个非常核心的因素,如果你的页面标题中,没有出现特定的关键词,实际上很难出现在微信SEO的搜索结果中,但并不绝对。

    当我们谈论标题的时候,这里面就会涉及一些语义相关性的问题,我们知道从搜索引擎内容页面评估的角度,页面中不存在关键词,是可以参与排名的。

    虽然,微信NLP这方面不断提高自然语言的识别能力与研究,但目前来讲,我们并没有看到标题相关性对页面排名的直观影响。

    2、内容质量

    所谓的内容质量,一个最基础的标准就是内容原创度,从目前来看,我们认为试图参与排名的页面,我们最好保持页面的原创标签性。

    而在撰写内容的时候,我们同样希望页面内容具有一定的逻辑关系,段落清晰,合理的使用项目符号。

    3、账号权重

    当我们谈论账号权重的时候,从搜索引擎的角度来讲,它对新发页面是有一个初始排名的,如果你的账号权重越高,你的初始排名的位置可能就会越靠前。

    同样,随着公众号的运营,我们同样认为它具有一定的账号权重,如果这个权重相对高,你的新增文章的页面排名就会相对的高。

    4、用户行为

    我们知道搜索引擎中,页面的排名是动态变化的,对于微信SEO而言,我们同样认为它是动态变化的,初始排名由账号权重决定,而后期排名的涨幅同样受到用户行为的左右。

    24a0f5a02b0e54319bfd0ce2b3365dac.png

    做过SEO优化的账号,排名可以一直在前面可以获得很多精准流量,即使不管理都有客户主动关注账号,能够比一般的普通精准用户还具有开发的能力,具体的引流需要注意什么细节

              可以直接扫一扫添加微信咨询!

    9eb660e6635a93b17bed5bdfb5bb2c74.png

        如何提高微信搜一搜排名微信公众号排名优化到第一 

       微信搜一搜算法,做微信搜一搜seo,微信搜一搜排名优化,微信搜一搜机制,微信名称排名规则,文章优化微信搜一搜文章,微信公众号搜索排名,微信公众号如何提升排名,公众号排名优化,公众号排名查询,公众号截流,微信公众号搜索优化,微信搜索怎么排在前面,微信搜索优化如何做,微信搜一搜推广

       公众号搜一搜被屏蔽,微信搜一搜排名黑技术,微信搜一搜排名规则,公众号排名优化技术,微信公众号seo,微信SEO是什么意思,微信公众号怎么优化 微信公众号seo排名,搜一搜排名公众号,搜一搜排名优化提高,搜一搜排名优化技巧,公众号文章排名

    微信文章排名,公众号关键词排名,微信公众号关键词排名,微信关键词排名怎么做,微信搜索优化怎么做。

    9eb660e6635a93b17bed5bdfb5bb2c74.png

    展开全文
  • 微信终极秘籍:精通公众号商业运营(最强作者阵容资深大号实战揭秘营销极限智慧唯一基于5.0) 青龙老贼 赵黎 方雨 刘琪 潘越飞 编  ISBN 978-7-121-22036-4 2014年1月出版 定价:65.00元 284页 16开 编辑...

    微信终极秘籍:精通公众号商业运营(最强作者阵容资深大号实战揭秘营销极限智慧唯一基于5.0

    青龙老贼 赵黎 方雨 刘琪 潘越飞 编  

    ISBN 978-7-121-22036-4

    2014年1月出版

    定价:65.00元

    284页

    16开

    编辑推荐

    唯一基于最新微信5.0版本之后的实战用书

    WeMedia自媒体联盟唯一指定运营参考

    本书主要优势及特色为:

    ■ 最具实战的影响力作者团队

    ■ 最具深度的指导力运营剖析

    ■ 从入门到精通玩转公众账号

    ■ 一站掌握微信运营策略技巧

    内容提要

    微信终极秘籍:精通公众号商业运营是目前唯一微信 5.0以上版本公众账号运营指南书,由微信领域最具实战经验与影响力的作者团队凝聚智慧、远见、妙想联袂呈献,领先与落地的知识内容将迅速打开微信商业赢利之路。

    微信终极秘籍:精通公众号商业运营适合对微信 5.0以上版本公众账号运营感兴趣的所有读者,尤其适合企业领袖、营销人员、创业者、移动电商领域人员精细化阅读。

    目录

    01微信公众平台编辑模式教程 1

    公众账号的注册、设置、登录 3

    微信公众账号后台介绍 11

    微信公众平台群发 17

    微信公众平台编辑模式介绍 28

    公众平台数据统计揭秘 36

    用微信制作菜谱教程 43

    02微信公众平台开发模式教程 50

    开发模式简介 51

    新浪云计算平台的注册和使用 64

    用微信开发模式做欢迎词 77

    公众账号发送欢迎图文消息 88

    公众账号自定义回复功能 100

    公众账号接收非文字消息 108

    公众账号接收非文字消息实践 120

    公司通信录开发 129

    建立微信问答互动系统 166

    03微信 5.0公众账号运营策略 176

    品牌微信运营 9个大忌 178

    从用户体验度谈企业微信原则 180

    没有服务基因的企业做不好微信 182

    为什么企业微信好案例那么少 184

    小米微信服务的极致玩法 187

    怎样考核微信运营效果 192

    04传统行业微信 5.0运营策略 197

    传统商家玩转微信020 198

    服装批发市场微信应用 203

    医疗机构微信公众账号运营 206

    红酒行业微信公众账号运营 208

    旅游行业微信公众账号运营 212

    美容院与理发店的微信运营 215

    电影市场微信公众账号运营 217

    社区通过微信提升服务力 223

    MBA、EMBA通过微信提升服务力  225

    05电商运营微信公众账号策略 228

    “微电商”时代 229

    淘宝卖家怎么做微信公众账号 231

    微信电商新服务平台 234

    女装品牌电商微信运营案例 238

    06微信自媒体的价值与发展 244

    自媒体崛起的环境 245

    为什么是微信自媒体 248

    谁能做自媒体 250

    自媒体的发展与案例 254

    自媒体的瓶颈 259

    自媒体展望 263

    后 记 264

     

    作者简介

    青龙老贼,WeMedia自媒体联盟创始人。

    赵黎,WeMedia自媒体联盟成员,盛世瑞智国际文化传媒CEO,博鳌亚洲论坛年度经济人物。

    方雨,WeMedia自媒体联盟联合创始人,实战型微信培训师,多家机构新媒体营销顾问。

    刘琪,WeMedia自媒体联盟成员,《IT经理世界》杂志电子商务产品线总监、资深编辑。

    潘越飞,WeMedia自媒体联盟成员,搜狐IT频道主编。

    媒体评论

    微信不是简版的QQ,是基于移动互联网的全新体验,引爆点其实是简单的语音。

    ——腾讯公司现任董事会主席兼首席执行官 马化腾

     

    商业化和好的用户体验我一直希望能做成不矛盾的,不是商业化了就要损害用户体验。这是有可能的,也是我们将来的目标。

    ——微信负责人、腾讯副总裁张小龙

     

    大企业应该有小作为,支付宝、微信都是由很小的想法引起的巨大变革。

    ——阿里巴巴创始人马云

     

    微信公众平台向服务号免费开放 9 大高级技术接口,将个性化定制、精准服务的选择权交到企业手上,企业也能充分发挥自身想象力,开发出自己的“智能客服”。

    ——新华网

    前言

    1046个铁杆粉丝的力量

    青龙老贼/文

    2013年 1月 29日 ZTalk@青龙老贼这个微信公众账号正式创建,内容定位主要是移动互联网趋势和产品分析,以及微信领域相关研究文章,当然还有一些个人日记,那时候我从来没有想过有一天它会成为微信领域最专业的账号之一。

    以前我是做产品技术出身的,所以 ZTalk很早就在使用开发模式,自己开发的图文消息翻页、表情听歌等功能当时引起很多朋友的兴趣,加之我一直对微信的研究理解很深,经常有人在后台咨询一些微信相关问题,所以在运营不到两个月的 3月 24日那天,我发了一条文字消息询问是否有朋友需要微信公众平台的使用及开发教程,只要在公众平台回复“我要教程”4个字就可以参与,如果超过 1000个人回复我就开始写教程。

    记得当时 ZTalk的订阅用户数是 11482人,那天后台收到的消息数是2449条,一共有 1046位朋友回复了“我要教程”,这些我都记得,如此深刻以至于永远不能忘记,因为我真的没想到短短两个小时就有那么多人发来回复,我感受到了你们的心,是你们给了我力量,直到今天一直默默地支持我前行,谢谢你们!

    对于一个非专业写手,写教程是一件非常辛苦的事情,记得教程提纲我仅花费半个小时就搞定了,以为这个教程可以在一个月内完成,但是后来才发现这件事并不那么简单,早期的教程一篇大概要花我六七个小时,后期进入开发模式后光写代码可能就得花好几天,加上工作比较繁忙,教程进度一直很慢。

    所以当你们看着有史以来最详细的微信教程时,你们不会想到我为了抠每个流程细节注册了多少个公众账号,尝试了多少路径;所以当你们看到图文并茂的教程内容时,你们不会想到我截了多少张图进行筛选和编辑;所以当你们看到微信公众平台最强秘籍攻略时,你们不会想到我默默地在电脑前仔细研究了多少时间。

    然而有一天,我在 ZTalk的后台看到两张照片,拍的是《微信公众平台入门到精通》从第 1章到第 17章的打印稿,厚厚一摞装订得很精美,留言是“很厚咯,用了我一包纸,加油写哟〜我已经快跟上进度咯〜老师”,刹那间的心情是无法言表的,满满的幸福感充斥着全身,再多的辛苦在这个时候也感觉很值。

    确实,写《微信公众平台入门到精通》这几个月以来,不仅让我个人获益良多,也不仅让更多人掌握了公众平台的使用方法,更重要的是将互联网的精神传递给了很多人,同时也影响了很多人。有因为教程学到一门手艺改变自己命运的,河南的小张说:“自从看了您老人家的那个把公众平台改成菜谱(的案例),深受启发,跑了周围几家不大不小的餐馆,帮他们弄了一下,有因为教程学到一门手艺改变自己命运的,河南的小张说:“自从看了您老人家的那个把公众平台改成菜谱(的案例),深受启发,跑了周围几家不大不小的餐馆,帮他们弄了一下,好过出去打工了。”

    有因为教程受到影响也加入知识分享队伍的,贵阳的小柳说:“青龙大哥,可能算是受你的影响吧,我也加入了公众账号开发经验分享阵营,基于Java去写。以前也连载过 Extjs、Android开发的教程。我已经写完了连载教程的引言,里面介绍了连载教程将要包含的内容。”

    有因为教程受到感动愿意提供免费存储资源的,某云存储服务企业 BOSS说:“老贼,你写教程太认真、太给力、太让人感动了,我愿意提供给你的粉丝免费的存储资源,给个你的联系方式,我让人和你对接。”

    每当我在后台看到这些可爱的人,这些暖心的话,总会被感动到,5月底我出来创业了,写作的时间少了很多,但是朋友们在后台的留言哪怕再晚再累也会去一一回复,因为我知道有无数的朋友在网络的另外一端关注着我、支撑着我,虽然未曾谋面,但彼此的心已经通过微信连接在一起。

    今天,《微信公众平台入门到精通》教程终于出书了,虽然是未完整版,但也算是满足了很多 ZTalk朋友长期的要求,当你捧着这本沉甸甸的书,你能否感觉到当初那 1046条回复赋予它的生命?你能否感觉到那 1046位朋友赋予它的力量?你能否感觉到那 1046颗爱心赋予它的精神?

    如果你感觉到了,那么你将拥有开放的心胸,自由的精神,平等的态度,分享的意识!

     

    《微信启动移动互联新生态》

    赵黎/文 

    今天,您是否意识到自己身边已发生巨变?

    打开电视看节目的越来越少,用网页或移动设备看视频的越来越多;

    购买报刊看新闻的越来越少,用微博、微信看信息的越来越多;

    撰写书信往来的越来越少,用微信发图文、语音、视频的越来越多……

    这一切,都在宣告社会媒介形态已彻底颠覆,从而引发城市空间与消费者行为的转变。传统的商业模式、经营手法、沟通方式,在强势消费者面前效能发生了改变。所有行业都将互联网化,这不仅是大势所趋,也是建立与消费者有效沟通的桥梁。我们看到有的产业已衰落,而新的商业模式如泉涌般不断产生,移动互联网就是一个新兴的商业蓝海,已然创造更多的商机,也帮助传统行业创新与突破。

    我们为什么必须现在谈微信、用微信,移动互联网里微信是超级入口,抓住微信价值就可以抓住移动互联网的变革浪潮。时代造就了微信,微信也启发了许多人新的商业思考。

    因而微信这样一个蕴含巨大潜能的工具,让众多寻求品牌突破、营销创新的企业看到希望。保护微信里的用户体验是明智之举,微信推出 5.0版本时宣告“微信不是营销工具”。当时,行业引起轰动,更多的是迷茫。这样的迷茫来源于还没有从传统行销模式中走出来,换了不一样的平台却使用了一样的手法,立竿见影是许多人的目标,却可能忽略整个微信生态的全局观。对“微信不是营销工具”这句话,我们深感认同。

      微信的本质是沟通,更适合于服务型或提升客户关系管理的企业,企业理应将“为用户提供价值”视为运维微信的首要定位,目标是打造用户在移动端的品牌体验度,从而实现良性互动、提高与客户关系的黏度,让受众对品牌深深认同,从而达到“不营而销”的目的。

    如果想在微信5.0版本之后的公众平台实现品牌战略目标,首先需要理解微信运维是一个极富战略规划、与客户深度有效互动的系统体系,在特定需求下需要专业顾问深入指引、执行团队科学耐心操作,甚至需要独立技术开发才能实现有效服务功能。

    市面上谈概念与微信 5.0之前版本的书多,缺乏企业、创业者、市场营销者最需要的微信 5.0版本之后的变革指引与实用教程,本书将帮助大家深度运用微信这个平台工具,在思路中寻得经营之道,真正进入移动互联网的商业蓝海。

    以上所述,与您共勉。

     

     

    从这一页开始移动电商之旅

    方雨/文

    世界变化真快。我 2005年开始做电商的时候,独立 B2C的主要引流方式是 SEO、论坛发帖、邮件群发和各种网络广告联盟,发个知音体的感人故事,嵌入链接,一天带来三五千个点击不是问题,邮件每周可以带来少则六七十,多则上百的订单,成本为零,广告联盟依托各种小网站的长尾流量,按照实际订单支付额的 15%结算佣金,再勤快点,搞点流量弹窗、域名劫持,稳赚不赔、乐哉悠哉。

    好日子持续不了几年,随着淘宝的崛起和资本大幅度介入电商行业,竞争开始激烈,大部分独立 B2C在 2010年的时候开始倒闭、苟延残喘、半死不活。其中很大一部分的原因在于,流量格局变了,电商格局变了,几乎所有的购物流量都被以淘宝为代表的巨头所蚕食,剩下那点购物流量豆腐渣不仅分散而且很难抓,想搞独立 B2C难上加难。从 2009年开始,做电商就必须开淘宝店,否则很难玩下去成了业界的基本共识,到 2011年,多渠道拓展则成为做电商的必然选择。

    上什么渠道都不是问题,只要有钱赚,问题是没几个赚钱的。展望身边做电商的传统企业,有哪个敢说自己做电商是赚到钱的?百里挑不出一个!我们开始反思,最后恍然大悟,咱都变成给巨头打工的了。90%以上的淘宝卖家是没赚到钱的,80%以上的淘宝店都处在荒废状态,上京东等所谓的电商平台,他们唯一的要求是不断地要求你打折、打折,这些平台就像一根根血管插在商家的身上,不断以价格和折扣的手段榨取商家们的血汗钱!

    对于有节操、有原则、有格调的品牌来说,怎么可能轻易弯下价格的腰向消费者“屈服”?对于他们来说,吸引价格的不仅仅是价格,还有服务,还有附加值,而这些才构成他们品牌的全部,以单一的价格维度跟下三滥的地摊货摆整齐一起放在平台上售卖,无异于自取其辱、自降身价!

    对于正在做电商的企业来说,做吧,继续打价格战,降低利润,亏本大甩卖,不做吧,心有不甘,因为你的同行都在做,特别是以淘品牌为代表的新兴力量迅速在销售额上超越自己,不屑的同时心里是在激烈地纠结,做不做不是问题,问题是怎么做!

    不过幸好,PC格局笃定的同时,互联网的新格局又开始变了。2012年度,700万淘宝卖家中,355万左右的卖家接获消费者来自移动端上的订单,而他们中间的 90%以上没有主动做过基于移动场景的营销;京东 6000万的客户端,每天贡献的订单量占总体的订单量高达 10%,凡客诚品的移动端订单占到整体的 20%左右!布丁酒店,一个敢于在移动互联网上布局的公司,正在甜蜜地品尝移动互联网上的果实。巨头们发现,他们在 PC上所建立起的相对优势正开始在移动互联网上失效,他们在移动互联网上的竞争才刚刚开始!

    全民移动的时代来临了,越来越多的消费者开始习惯在移动端进行商品购买、社交、阅读、娱乐……微博 60%左右的流量来自移动端,微信仅用 3年多的时间,即达到 5个亿的用户规模,看下你身边,有多少人没用微信?你是不是发现自己在不知不觉间,花在手机上的时间比电脑还多了?你的手机是不是正在取代电脑?权威的数据统计表明,移动互联网的用户已经高达 6个亿,远远高于 PC端上的 4.2个亿。

    回望我们的企业网络营销,察看我们的电商策略,几乎对这一发生在身边的移动巨变毫无察觉,即便有意识也束手无策,因为你不知道该从何着手。

    现实变化得让我们焦虑无比。移动互联网不是传统 PC在移动场景下的简单复制和迁移。传统的搜索、门户已经不再成为手机端上的标配。消费者变了,消费者不会再因为商家的硬广选择购买任何一款产品,转而去观察朋友和用户的评论来进行购买决策,消费者已经不相信商家了,只相信朋友,

    只相信网络上用户的真实评价。

    移动互联网已经成为生活的现实,电子商务已然成为不可逆转的历史潮流,未来,移动与电商将是我们所有的企业做营销时面临的最大命题。移动电商怎么入手?怎么做?怎么运营?还是从已经拿到移动互联网船票的微信开始说吧。微信的好处从这一页开始感受,微信怎样与电商嫁接?微信可以给企业营销带来怎样的实际效果?从这一页开始。

     

     

    微电商时代,唯运营永生

    刘琪/文

    微信 5.0面市之后,扫一扫功能以及微信支付的出现,足以让包括阿里巴巴、百度在内的传统互联网巨头惊出一身汗。而微信官方透露的数据显示,截止 2013年上半年,它已拥有超过 4亿用户,月活跃用户超过 1.9亿,而微信公众平台也吸纳了 100万的公众账号。

    除了庞大的用户基数,以及尚未完全放开的社交关系链条,微信之所以能成为移动电商时代的主角,还在于它是一款完全基于移动互联网的颠覆性产品。我很欣赏的电商老兵、当当网前首席运营官黄若最近说,微信与电商结合会爆发很大的生命力,PC端购买转化率很低(1%~1.5%),如果微信做得好,很有可能提高转化率。

    黄若也做出了一个判断,5年后,移动电商将占据电商市场份额的一半。微信、微博、微淘以及为数众多的购物与 O2O模式的 NativeAPP,正在催生一个微电商时代的来临。

    所谓微电商,是电商企业利用社交化、移动化两大趋势进行的电商服务链延伸,它的业务重心并不在于拉新、促成订单成交等 PC互联网的核心诉求,而在于实现电商业务向移动互联网、社交网络的迁移,从而占领未来的竞争高地。不过,目前依然有大量的微信营销培训班在各地上演,我不怀疑其中有些讲课人是在运营一线,也有着独到深厚的见解,但微信培训确实存在虚火旺盛的问题。

    出现这一问题的根源在于,很多企业将微信视为可以低成本快速获取用户、群发促销信息的赚钱利器,培训者正是抓住了这种急功近利的心理,并刻意将其放大。

    来,不能老想着以短、平、快方式大量拉新和迅速提高销量。招商银行信

    用卡中心总经理刘加隆的观点就值得借鉴,他坚信最好的企业微信运营是“把服务最大化、营销最小化”。

    唯有重视运营者方能得永生。微信 5.0对订阅号的折叠,对服务号的推送频次进行限制,实际上除了不想商家过度迷恋单向的强制性的病毒营销,更多的是想企业将自己的业务流程迁移到微信平台上,以此提供高质量的细分行业服务。

    总结说来,微信公众账号给消费者的感受其实是商家给的,这需要企业有足够的 IT能力与现场运营能力的支持。

    试着总结几条在微电商时代的运营法则,这也适用于基于微信的电商运营。

    一、简单的导流促销转化已经是过去式,“购物路径”概念已经被瓦解,消费者需要的购物体验是“Anytime, Anywhere, as I wish”(随时、随地、随意购物),这意味着电商要全网多平台布设触点,还要以会员沉淀为目标做好微电商运营。

    二、针对移动互联网、社交网络,进行积极的组织架构调整。

    三、只有能对传统业务进行流程再造,并降低成本、提升效率,微电商的行业颠覆性才能真正显现。

    四、发挥移动设备的特性优势,实现产品功能创新,并对移动端业务进行体验优化。

    五、不存在纯粹的移动电商,移动与 PC端的数据与运营能力的双剑合璧,再加上对碎片化的社交平台的整合营销,才能真正发挥移动电商的威力。

    2013年 8月 7日写于雨夜北京

     

     

    主编没了,自媒体来了

    潘越飞 /文

    我最近看到了这么一段话:

    互联网诞生之初,就是为了任一节点损坏也不影响系统的正常运作。很明显,互联网已经实现了这一点,而这种影响正向媒体行业波及。最明显的一件事是,再也没有主编这个节点了,自媒体消减了主编。

    一.缘起

    大概是在和美国《新闻周刊》前执行主编陈序交流《主编已死》一文时,我开始思考这个问题的。

    直到最近,我一不小心也被戴上搜狐 IT主编的抬头后,我觉得我可以自省下了。

    二.愚蠢

    前几天,我在北京第一次遭遇停电,第一反应不是去买份当地都市报以备随时查询停电表,而是试图去寻找一个本小区停电前自动推送信息的 APP——为什么我得为一个小需求去购买充满无效需求的媒体产品?为什么一个大而全的媒体产品不能把其中的刚需型需求单独打包贩卖?

    传统的思路是,往版面上塞满大量信息,以一种赌徒的心理想象,总有一款大概可能也许适合读者,然后读者就会花钱。

    新的主编就该啪啪给自己两个耳光,赶紧停止这愚蠢的做法,直接把那个停电通知 APP制作出来,然后想尽办法送到有这一需求的用户手上。

    假如主编不是为媒体做加法,而是做减法,那这种愚蠢会把一船人拖到沟里。

    三.流派

    我觉得未来的新闻分两种,数据流和体验流。

    听闻曾有某互联网巨头对着旗下的主编们拍桌吼道,养你们干嘛,不就是网上找点资料放在页面上吗?连这点儿事都干不好,我还不如自己弄个程序分分钟钟代替你们的活,还便宜。这话让傲娇的媒体人听着别扭,但真是大实话。

    媒体在变,可能有两种方向。

    数据流,是快消式资讯的终极形态,它是一个庞大的静默机器,以数据感知你的资讯需求,自动抓取各个社交圈子内的信息,自动打包整理成可被快速获取的信息形态,推送到你的面前。在这个流派中,没有适合于采编的岗位,只有架构师、分析师和产品师。

    体验流,是慢速阅读的终极形态。它是一个庞大的组织架构,把情绪性的观点、人格化的解读、意见领袖的魅力、沉浸式的综合内容处理为美丽的媒体产品,等待各个圈层的用户进行互动。在这个流派中,没有岗位适合于啥都懂啥都不真懂的采编,只有经纪人、意见领袖与监制。

    四.消失

    接下来,传统媒体与传统主编的权利就是被不断消解的。

    在数据流中,主编那一只决定内容生死的笔被夺走了,取代他的是人人发声的社交平台、人人判断的社交平台、人人分享的阅读圈。一切公司与个体,都是媒体的组成,一切服务,都是媒体的呈现。

    在体验流中,主编那高高在上的宝座被夺走了,取代他的是号召力远大于他的意见领袖、资源分配能力远大于他的经纪人、合作能力更强的监制、跟着意见领袖走的普罗用户。

    五.形态

    我遇见过几位新型的主编,他们干得不错,因为他们给予了自己新的形态。

    匠人型:这一类主编,自己就是一支好笔,他冲在前线,生产内容,成为意见领袖中的意见领袖,以内容作为立身之本。

    美人型:这一类主编,是一个团队的形象代言人,精力旺盛、冲劲十足、眉清目秀、能歌善舞,对外他在不停地为媒体团队的品牌加分,对内他是煽动性十足的发动机。

    产品型:这一类主编,多以互联网出身为主,坚决拥抱数据流,重组内容生产形式,重分媒体架构,重建媒体产品,以数据的反馈快速调度资源,生产合适的媒体产品。

    良人型:这一类主编,最受内部欢迎,因为他的目标是让天下没有难做的记者,记者的物质回报与精神回报都得到最大的满足。

    商人型:这一类主编,已经早早懂得媒体不只是渠道,他把影响力、品牌与用户打包贩卖,以内容即营销的模式,为每一滴影响力获得收入。

    我觉得美人型与产品型的组合为最佳,亦最难;匠人型的最易找,但效果来得快也去得快;良人型与商人型是这波变革中的头与尾两种主流,更适合守江山。

    六.雏形

    微信自媒体是这场变革的开端,但不是结束。

    总有人质疑微信自媒体现阶段碰到的一些问题。例如,我和某人喝酒时被问到,同样的 5000元换篇软文,你潘越飞这个自媒体不收,另一个打着自媒体名头的家伙会收,这是不是意味着这波浪潮迟早下滑。我说,往小的说,林子大了什么鸟都有,往大了说,在自媒体身上,我看到了意见领袖的雏形,媒体节点重构的雏形,用户即品牌的雏形,服务即媒体的雏形。这一波的价值远大于其中隐藏的不足。

    正如我此前在《真相已死体验为王》一文中所说的,我预测的自媒体路径是:个体户自媒体化——小组织自媒体化——大组织自媒体平台化——新组织自媒体结构化——自媒体成为标配。一切仅仅只是开始。

    文字这类天生适合个体户生成的内容已经自媒体化了。下一步则是视频、音频、图像、产品等适合小团队生成的内容开始自媒体化。再往下走,则类似微信这样适合自媒体发展的平台会增多,例如,搜狐新闻客户端、豆瓣阅读。而只有等到自媒体架构化那一步,新的商业模式才会被打通。当我们不再讨论自媒体的时候,就是自媒体深入行业骨髓的那一刻,一家连锁酒店的旅游影响力会比专业旅游媒体还厉害。

    一名合格的主编,需要预判这一趋势。

    七.探索

    信息的快速流动,与扁平化架构的覆盖,百科全书式的权威型主编不再被需要,媒体注意力被分解到个体与小团队,他们为自己的公信力背书,他们都是主编,他们都是自媒体。

    这只是一场媒体探索的开始,正如报纸关停后开网站一样,自媒体大爆发,是另一种维度的重启。

    在我的微信自媒体后台,一位姓沈的订阅者说道:“我想起《纸牌屋》里的情节,女主角从传统大报跳槽到了网络媒体,上班的第一天,她说:‘我写的稿子已经发到你邮箱了,你审一下。’那位女主编说:‘你不用发给我,你觉得有价值就发吧,我不用看的,我相信你。’我觉得特别有代表性。”

    我不知道什么是对的,至少我知道什么是错的。

    八.未来

    我相信,一切产业皆媒体,一切品牌都是自媒体。

    当传统精英式媒体衰败,走向博物馆古董的时候,自媒体正生机勃勃,小而美的个体革命正在掀起浪潮。

    如果你对这个话题也感兴趣,欢迎关注我的微信自媒体“潘越飞”,一起聊几句。

     

    展开全文
  • 微信公众号:主要以粉丝运营为主,通过内容的撰写或营销活动策划,为了吸引更多人关注微信公众号,引导粉丝们在商城进行消费。 小程序:方式就很简单了,你知道打开微信,就会推荐5公里以内...
    1. 产品定位不同

         微信公众号:通过信息的传递实现人与信息的连接。主要以内容营销和信息传递为主、简单的服务为辅。

         小程序:面向产品与服务,主要以功能服务为主。

    2. 运营方式不同

         微信公众号:主要以粉丝运营为主,通过内容的撰写或营销活动策划,为了吸引更多人关注微信公众号,引导粉丝们在商城进行消费。

         小程序:方式就很简单了,你知道打开微信,就会推荐5公里以内的小程序。选择你想要的小程序,进行消费就可以了。简单粗暴的方式,节省了运营费用。

    3. 功能不同

         微信公众号:主要以内容为主,功能单一,对内容要求比较高,交互性基本上没有。不能实现直接购买,用户体验一般,消费转化率低。

         小程序:基本上可覆盖所有行业的需求(外卖、企业展示、智慧门店、共享经济),功能强大、交互性高、提高用户使用感,可以直接购买,流失率低成交率高。

    4. 用户体验不同

           微信公众号:操作延时较大,点击应该功能需要一段时间,用户体验较差。

           小程序:用户体验接近原生APP,无需下载安装,使用起来比较的顺畅几乎不需要等待。

    5. 获取方式不同

         微信小程序:入口深,通过搜索、好友推荐等方式,需要主动点击关注。

         小程序:入口浅,扫码即可进入。共有包括二维码扫描、附近小程序、聊天、搜索、好友名片等50多种入口。

    展开全文
  • 微信(jspai版本即公众号h5版)支付-微信下单支付及企业转账到零钱、后端前置条件二、配置h5 devServer三、后端开发代码四、前端开发代码(uniapp) 、后端前置条件 准备好商户号mchid、商户API秘钥(API安全里...

    微信(jspai版本即公众号h5版)支付-微信下单支付及企业转账到零钱

    一、后端前置条件

    准备好商户号mchid、商户API秘钥(API安全里获取)、微信公众号APPID、微信公众号秘钥

    在这里插入图片描述
    在这里插入图片描述
    (证书只有转账到零钱或者银行卡或者退款才需要)

    在这里插入图片描述
    产品开通支付权限,若需要付款到零钱则开通企业付款到零钱支付权限,另外付款的钱是运营账户不是基本账户的金额,必须保证运营账户有钱
    在这里插入图片描述
    在这里插入图片描述
    登录商户平台-产品中心-开发配置
    将服务器前端访问页面加入支付配置的JSAPI中(注意这里前端服务器是https就必须选择https,如果不一致可能会返回页面不在)

    在这里插入图片描述
    到APPID账号管理中添加公众号APPID

    在这里插入图片描述
    登录商户平台-账户中心-API安全
    拿到商户API秘钥
    在这里插入图片描述
    登录微信公众平台-公众号设置-功能设置
    在业务域名,JS接口安全域名,网页授权域名都添加上前端服务器的域名
    在这里插入图片描述
    登录微信公众平台-基本配置
    新增服务器ip地址白名单(如果微信商户平台有ip限制也需要去新增ip地址)
    在这里插入图片描述
    (以下条件是企业付款到微信个人用户零钱才需要申请证书)
    申请证书(按提示操作即可,转账才需要申请证书)
    在这里插入图片描述
    获得证书
    在这里插入图片描述
    解压,将p12文件放入项目resource文件夹下
    在这里插入图片描述

    二、配置h5 devServer

    (uniapp下)
    在这里插入图片描述

    三、后端开发代码

    pom.xml引入依赖jar包

    <!-- 微信支付 -->
            <dependency>
    		  <groupId>com.github.wxpay</groupId>
    		  <artifactId>wxpay-sdk</artifactId>
    		  <version>0.0.3</version>
    		</dependency>	
    		<dependency>
    		  <groupId>org.jdom</groupId>
    		  <artifactId>jdom</artifactId>
    		  <version>2.0.2</version>
    		</dependency>
    <!-- 以下是工具类的支持已有可不引用 -->
    <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.3</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.21</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.7.21</version>
            </dependency>
    

    创建微信工具类
    此处查看我的百度网盘payUtils及util文件夹下的几个工具类
    在这里插入图片描述
    在这里插入图片描述
    修改 WXPayConfigImpl.java,读取证书(加载证书需要注意证书放置位置在项目下的webapp中建文件夹,linux单独防止只要地址配置正确即可。)

    public WXPayConfigImpl() throws Exception{
            String certPath = WXPayConfigImpl.class.getClassLoader().getResource("").getPath();//本地运行放在resource下//放在linux中需要改为"/www/wwwroot/jar/"之类的服务器上的证书存放地址
            File file = new File(certPath + "apiclient_cert.p12");
            InputStream certStream = new FileInputStream(file);
            this.certData = new byte[(int) file.length()];
            certStream.read(this.certData);
            certStream.close();
        }
    
    

    创建service,写方法

    package com.aproject.weixin.service;
    
    import java.io.IOException;
    import java.io.Writer;
    import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.Map;
    import java.util.Random;
    import java.util.SortedMap;
    import java.util.TreeMap;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.ResponseHandler;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Repository;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.aproject.project.tool.wxPay.WxapiController;
    import com.aproject.weixin.payUtils.PayCommonUtil;
    import com.aproject.weixin.payUtils.StringUtils;
    import com.aproject.weixin.payUtils.WXPay;
    import com.aproject.weixin.payUtils.WXPayConfig;
    import com.aproject.weixin.payUtils.WXPayConfigImpl;
    import com.aproject.weixin.payUtils.WXPayUtil;
    
    import cn.hutool.log.Log;
    import net.sf.json.JSONObject;
    
    
    /**
     * @功能说明:微信支付,订单服务类
     * @作者: 
     * @创建日期:2021-02-22
     */
    @Transactional
    @Repository("WxOrderService")
    public class WxOrderService {
    	private static final Logger log = LoggerFactory.getLogger(WxOrderService.class);
    	/**
    	 * 创建微信订单
    	 * @param openid 用户openid
    	 * @param out_trade_no 根据逻辑自己生成的订单编号
    	 * @param total_fee 金额,必须是整数形式的String,单位是分
    	 * @return map
    	 */
    	public  Map<String, Object> wxpay(HttpServletRequest request,String openid,String out_trade_no,String total_fee) throws Exception {
    		 Map<String, Object> map = new HashMap<String, Object>();
    		 WXPayConfigImpl config = new WXPayConfigImpl();
    	     WXPay wxpay = new WXPay(config);
    	        Map<String, String> data = new HashMap<String, String>();
    	        data.put("appid", WXPayConfig.WX_App_ID);
    	        data.put("body", "自己定义");
    	        data.put("out_trade_no", out_trade_no);
    	        data.put("device_info", "WEB");
    	        data.put("mch_id", WXPayConfig.MCH_ID);
    	        data.put("fee_type", "CNY");
    	        data.put("total_fee", total_fee);
    	        data.put("spbill_create_ip", "我的ip");
    	        data.put("notify_url", WXPayConfig.PAY_HUL+"/api/wxapi/notifyWeiXinPay");//回调地址
    	        data.put("openid", openid);
    	        data.put("trade_type", "JSAPI");  // 此处指定为扫码支付
    	     try {
    	    	 System.out.println("data===="+data);
    	         Map<String, String> resp = wxpay.unifiedOrder(data);
    	         map.put("data", resp);
    	         	//通过返回值二次签名
    	         	String return_code = resp.get("return_code");
    	         	map.put("msga", resp.get("return_msg"));
    	         	System.out.println("return_code========"+return_code);
    	         	System.out.println("msga========"+resp);
    				//返回给小程序端需要的参数  
    				if(return_code=="SUCCESS"||return_code.equals(return_code)) {
    					//返回的预付单信息 
    					String prepay_id = (String) resp.get("prepay_id");
    
    		            Long timeStamp = System.currentTimeMillis() / 1000;//微信是按照分来算的,我们是按照元来算的,所以需要转换
    		            String stringSignTemp = "appId=" + WXPayConfig.WX_App_ID + "&nonceStr=" + resp.get("nonce_str") + "&package=prepay_id=" + prepay_id + "&signType=MD5&timeStamp=" + timeStamp;
    		            map.put("appId", WXPayConfig.WX_App_ID);
    		            map.put("timeStamp", timeStamp+ "");
    		            map.put("nonceStr",resp.get("nonce_str")); 
    		            map.put("package", "prepay_id="+prepay_id);	
    		            map.put("prepayid", prepay_id);
    		            String mysignTow = PayCommonUtil.sign(stringSignTemp, WXPayConfig.MCH_KEY, "utf-8").toUpperCase();
    					//sign签名,第二次随机签名
    					map.put("paySign", mysignTow);
    					log.info("timeStamp", timeStamp);
    					log.info("prepayid", prepay_id);
    					log.info("paySign", mysignTow);
    					log.info("stringSignTemp", stringSignTemp);
    				}
    
    	         System.out.println(resp);
    	     } catch (Exception e) {
    	         e.printStackTrace();
    	     }
    	     return map;
    	 }
    	//获取IP
    	private String getIpAddr(HttpServletRequest request) {
    	 String ip = request.getHeader("X-Forwarded-For");
    	 if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
    	  //多次反向代理后会有多个ip值,第一个ip才是真实ip
    	  int index = ip.indexOf(",");
    	  if (index != -1) {
    	   return ip.substring(0, index);
    	  } else {
    	   return ip;
    	  }
    	 }
    	 ip = request.getHeader("X-Real-IP");
    	 if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
    	  return ip;
    	 }
    	 return request.getRemoteAddr();
    	}
    
    	/**
    	 * 微信付款转账到微信用户零钱
    	 * @param request HttpServletRequest
    	 * @param openid 用户openid
    	 * @param partner_trade_no 根据逻辑自己生成的订单编号
    	 * @param amount 金额,必须是整数形式的String,单位是分,必须大于0.30元或累计大于300元
    	 * @param desc 备注
    	 * @param check_name 校验用户姓名  NO_CHECK:不校验真实姓名  FORCE_CHECK:强校验真实姓名
    	 * @return
    	 * @throws Exception
    	 */
    	public  Map<String, Object> wxpayUser(String openid,String partner_trade_no,String amount,String desc,int check_name,String re_user_name) throws Exception {
    		Map<String, Object> map = new HashMap<String, Object>();
    		 WXPayConfigImpl config = new WXPayConfigImpl();
    	     WXPay wxpay = new WXPay(config);
    	        Map<String, String> data = new HashMap<String, String>();
    	        data.put("mch_appid", WXPayConfig.WX_App_ID);
    	        data.put("mchid", WXPayConfig.MCH_ID);
    	        data.put("partner_trade_no", partner_trade_no);
    	        data.put("openid", openid);
    	        if(check_name==1){//不校验真实姓名
    	        	data.put("check_name", "NO_CHECK");
    	        }else {
    	        	data.put("check_name", "FORCE_CHECK");
    	        	if(re_user_name!=null) {
    	        		data.put("re_user_name", re_user_name);
    	        	}else {
    	        		map.put("re_user_name", "FORCE_CHECK时re_user_name不能为空");
    	        		return map;
    	        	}
    	        }
    	        data.put("amount", amount);
    	        data.put("desc", desc);  
    	        data.put("spbill_create_ip", "我的ip");
    	        try {
    	    	 System.out.println("data===="+data);
    	    	 Map<String, String> returnData=wxpay.payUser( data, config.getHttpConnectTimeoutMs(), config.getHttpReadTimeoutMs());
    	    	 System.out.println("returnData===="+returnData);
    	    	 map.put("nonce_str", returnData.get("nonce_str"));
    	    	 map.put("mchid", returnData.get("mchid"));
    	    	 map.put("partner_trade_no", returnData.get("partner_trade_no"));
    	    	 map.put("payment_time", returnData.get("payment_time"));
    	    	 map.put("mch_appid", returnData.get("mch_appid"));
    	    	 map.put("payment_no", returnData.get("payment_no"));
    	     } catch (Exception e) {
    	         e.printStackTrace();
    	     }
    	     return map;
    	 }
    创建Controller调用方法(此处如果想只管调用支付方法或者付款方法,可参考)
    package com.aproject.project.tool.wxPay;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.math.BigDecimal;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.apache.poi.ss.formula.functions.Na;
    import org.jdom2.JDOMException;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.aproject.framework.aspectj.lang.annotation.Log;
    import com.aproject.framework.aspectj.lang.enums.BusinessType;
    import com.aproject.framework.web.controller.BaseController;
    import com.aproject.framework.web.domain.AjaxResult;
    import com.aproject.sample.OrderDetailed.domain.OrderDetailed;
    import com.aproject.sample.OrderDetailed.service.OrderDetailedService;
    import com.aproject.sample.merchant.domain.JgshMerchant;
    import com.aproject.sample.merchant.service.JgshMerchantService;
    import com.aproject.sample.oms.domain.OmsOrder;
    import com.aproject.sample.oms.domain.OmsOrderItem;
    import com.aproject.sample.oms.service.OmsOrderItemService;
    import com.aproject.sample.oms.service.OmsOrderService;
    import com.aproject.sample.pms.domain.PmsProduct;
    import com.aproject.sample.pms.domain.PmsSkuStock;
    import com.aproject.sample.pms.service.PmsProductService;
    import com.aproject.sample.pms.service.PmsSkuStockService;
    import com.aproject.weixin.payUtils.PayCommonUtil;
    import com.aproject.weixin.payUtils.StringUtil;
    import com.aproject.weixin.payUtils.WXPayConfig;
    import com.aproject.weixin.service.WxOrderService;
    import com.aproject.weixin.util.AccessToken;
    import com.aproject.weixin.util.WX_TokenUtil;
    import com.aproject.weixin.util.WeChatUtil;
    
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    
    @Api("微信支付接口")
    @RestController
    @RequestMapping("/api/wxapi")
    public class WxapiController extends BaseController{
    	private static final Logger log = LoggerFactory.getLogger(WxapiController.class);
    	@Autowired
    	WxOrderService wxOrderService;
    
    	@Autowired
    	private OrderDetailedService orderDetailedService;
    
    	@Autowired
    	private OmsOrderService omsOrderService;
    
    	@Autowired
    	private JgshMerchantService jgshMerchantService;
    
        @Autowired
        private OmsOrderItemService omsOrderItemService;
    
        @Autowired
        private PmsSkuStockService pmsSkuStockService;
    
        @Autowired
        private PmsProductService pmsProductService;
    
    	@Log(title = "调用起微信支付jsapi ", businessType = BusinessType.OTHER)
    	@ApiOperation("调用起微信支付jsapi" + "参数 appId---(自定义参数)"  + "picFileUrl--- 图片列表" 
    			+"type--类型( 1App商场轮播图,2:剧院动态轮播图)")
    	@PostMapping("/getJsTicket")
    	@ResponseBody
    	public AjaxResult getWeJsTicket(HttpSession session,HttpServletRequest request, String url) {
    		Map<String, Object> map = new HashMap<String, Object>();
    		AccessToken access_token=WX_TokenUtil.getWXToken();
    		System.out.println("access_token===="+access_token);
    		String jsapi_ticket=WeChatUtil.getSapi_ticket(access_token.getAccessToken());
    		String nonceStr=WeChatUtil.create_nonce_str();
    		String timestamp=WeChatUtil.create_timestamp();
    		String signature=WeChatUtil.getSignature(access_token.getAccessToken(), nonceStr, timestamp, jsapi_ticket, url);
    		//获取access_token
    		//	   Access_token access = viCaseService.getAccessToken(1, url,request);		   
    		//	   //4获取url
    		map.put("appId", WXPayConfig.WX_App_ID);
    		map.put("timestamp", timestamp);
    		map.put("nonceStr", nonceStr);
    		map.put("signature", signature);
    		map.put("access_token", access_token.getAccessToken());
    		map.put("ticket", jsapi_ticket);
    		return AjaxResult.success(map);
    	}
    	/**
    	 * 调用起微信支付jsapi
    	 * @throws Exception 
    	 */
    	@Log(title = "调用起微信支付jsapi ", businessType = BusinessType.OTHER)
    	@ApiOperation("调用起微信支付jsapi" + "参数 appId---(自定义参数)"  + "picFileUrl--- 图片列表" 
    			+"type--类型( 1App商场轮播图,2:剧院动态轮播图)")
    	@PostMapping("/unifiedorder_mp")
    	@ResponseBody
    	public AjaxResult unifiedorder_mp(HttpServletRequest request,String id,String openid,String money) throws Exception{
    		Map m = new HashMap<>();
    }
    		m=wxOrderService.wxpay(request, 
    				openid, 
    				id,//订单号
    				getMoney.toString());
    		//m.put("order_id",id);
    		return AjaxResult.success(m);
    	}
    	/**
    	 * @param totalAmount    支付金额
    	 * @param description    描述
    	 * @param request
    	 * @return
    	 * @throws IOException 
    	 * @throws JDOMException 
    	 */
    	@RequestMapping("/notifyWeiXinPay")
    	@ResponseBody 
    	public  String notifyWeiXinPay(HttpServletRequest request) throws IOException, JDOMException {
    		System.out.println("微信支付回调");
    		InputStream inStream = request.getInputStream();
    		ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
    		byte[] buffer = new byte[1024];
    		int len = 0;
    		while ((len = inStream.read(buffer)) != -1) {
    			outSteam.write(buffer, 0, len);
    		}
    		String resultxml = new String(outSteam.toByteArray(), "utf-8");
    		Map<String, String> params = PayCommonUtil.doXMLParse(resultxml);
    		outSteam.close();
    		inStream.close();
    
    		Map<String,String> return_data = new HashMap<String,String>();  
    		if (!PayCommonUtil.isTenpaySign(params)) {
    			// 支付失败
    			System.out.println("支付失败==="+params);
    			return_data.put("return_code", "FAIL");  
    			return_data.put("return_msg", "return_code不正确");
    			return StringUtil.GetMapToXML(return_data);
    		} else {
    			System.out.println("===============付款成功==============");
    			// ------------------------------
    			// 处理业务开始
    			//获取订单编号,修改订单状态以及商户插入待入账金额
    			String orderNumber = String.valueOf(Long.parseLong(params.get("out_trade_no").split("O")[0]));
    			String total_fee = (String) params.get("total_fee");
    			String transactionId  = (String) params.get("transaction_id");//支付流水号
    			String store_id = "";
    			OrderDetailed detailed = orderDetailedService.selectOrderDetailedById(orderNumber); //查询是否存在多订单
    			if(detailed != null) {
    				String orderIds = detailed.getOrderIds();
    				String[] order_ids = orderIds.split(",");
    				for (String string : order_ids) {
    					OmsOrder selectOmsOrderById = omsOrderService.selectOmsOrderById(Long.parseLong(string));
    					store_id = selectOmsOrderById.getAppId();//商户id
    					changeOmsOrder(string,transactionId);
    				}
    			}else { //单个订单
    					OmsOrder selectOmsOrderById = omsOrderService.selectOmsOrderById(Long.parseLong(orderNumber));
    					store_id = selectOmsOrderById.getAppId();//商户id
    					changeOmsOrder(orderNumber,transactionId);
    			}
    			double v = Double.valueOf(total_fee) / 100;
    			BigDecimal addMoney = new BigDecimal(v);
    			JgshMerchant selectJgshMerchantById = jgshMerchantService.selectJgshMerchantById(store_id);
    			BigDecimal disableCashout = selectJgshMerchantById.getDisableCashout();
    			selectJgshMerchantById.setDisableCashout(disableCashout.add(addMoney));//增加待提现金额
    			jgshMerchantService.updateJgshMerchant(selectJgshMerchantById);
    			return_data.put("return_code", "SUCCESS");  
    			return_data.put("return_msg", "OK");  
    			return StringUtil.GetMapToXML(return_data);
    		}
    	}
    
    	public void changeOmsOrder(String out_trade_no,String transactionId) {
    		OmsOrder order = omsOrderService.selectOmsOrderById(Long.parseLong(out_trade_no));
    		if(order.getStatus().equals(0)) {
    			order.setPayType(2);  //设置支付方式   微信
    			order.setStatus(1);  //支付成功后 变成待发货状态
    			order.setPaymentTime(new Date());   //支付时间
    			order.setZfbTradeNo(transactionId);   //微信支付订单号
    			omsOrderService.updateOmsOrder(order);  //更新
    			//减少库存操作
    			OmsOrderItem item = new OmsOrderItem(); 
    			item.setOrderId(Long.parseLong(out_trade_no));
    			List<OmsOrderItem> itemList = omsOrderItemService.selectOmsOrderItemList(item); //订单明细表信息
    			for (OmsOrderItem item1 : itemList) {
    				PmsSkuStock s = new PmsSkuStock();
    				s.setProductId(item1.getProductId());
    				s.setSkuCode(item1.getProductSkuCode());
    				List<PmsSkuStock> pmsSkuStockList = pmsSkuStockService.selectPmsSkuStockList(s);
    				PmsSkuStock skuStock = pmsSkuStockList.get(0); 
    				Long stock = skuStock.getStock();      //库存数量
    				Long buyNum = item1.getProductQuantity(); //购买数量
    				stock = stock - buyNum;  // 更新库存
    				skuStock.setStock(stock);
    				pmsSkuStockService.updatePmsSkuStock(skuStock);
    				PmsProduct product = pmsProductService.selectPmsProductById(item1.getProductId()); //产品
    				Long sale2 = product.getSale(); //此产品销量
    				sale2 = sale2 + buyNum;
    				product.setSale(sale2);
    				Long pStock = product.getStock(); //产品库存
    				pStock = pStock - buyNum;
    			}
    
    		}
    }
    }
    

    四、前端开发代码(uniapp)

    cmd到前端项目下,npm引入jweixin-module

    新建wxPay.js

    /*
      微信支付方法(uni-app h5)适用
      获取微信加签信息
      @param{data}:获取的微信加签
      @param{res}:成功回调
      @param{fail}:失败回调
    
      @warn:因为package为严格模式下的保留字,不能用作变量.
      @use
        wxPay({
          appId,
          timeStamp,
          nonceStr,
          signature,
          package,
          paySign
        },res=>{
          console.log('调用成功!');
        },fail=>{
          console.log('调用失败!');
        })
    */
    const wx = require('jweixin-module');
    const wxPay = (data, callback, errCallback) => {
    
      const {appId, timestamp,nonceStr, signature,timestamp1, nonceStr1,prepayid, packages, paySign} = data;
    
      wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId,      // 必填,公众号的唯一标识
        timestamp,  // 必填,生成签名的时间戳
        nonceStr,   // 必填,生成签名的随机串
        signature,  // 必填,签名,见附录1
        jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
      });
    
      wx.ready(function() {
        wx.chooseWXPay({
          timestamp:timestamp1, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
          nonceStr:nonceStr1, // 支付签名随机串,不长于 32 位
          'package': packages, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
          'signType': 'MD5', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
          paySign:paySign, // 支付签名
          success(res) {
            // 支付成功后的回调函数
    		console.log('cg')
            callback(res);
          },
          fail(res) {
    		  console.log('sb')
            errCallback(res);
          }
        });
      });
    
      wx.error(function(res) {
        // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
        /*alert("config信息验证失败");*/
      });
    }
    
    export default wxPay;
    
    

    新建utils.js挂载方法

    function Core() {
    
    }
    Core.prototype.isWechat = function() {
    	return String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger";
    }
    
    Core.prototype.getAppid = function() {
    	return 'wx544764abf19fc7f1';
    }
    export default mainUtil
    

    在main.js中挂载

    Vue.prototype.$isWechat= util.isWechat;
    Vue.prototype.$getAppid= util.getAppid;
    

    在pay.vue中关键代码

    import wxPay from '@/static/js/common/wxPay.js'
    return {
    				openid: '一个openid',
    				payType: 1,
    				order_id: "156498768567",
    				money: 1,
    				providerList: []
    			};
    

    调用方法

    // #ifdef H5
    					if (this.$isWechat()) {
    						let appid = this.$getAppid();
    						// 这里是获取code后要跳转的地址,可以自定义也可以使用当前地址,使用当前页面地址需要自行判断处理code
    						let local = window.location.href;
    						console.log(local);
    						// window.location.href =
    						// 	`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect`;
    						//return;
    						if(!that.money||that.money<0){that.$toast("金额不对!");return;}
    						if(!that.order_id){that.$toast("并无此订单!");return;}
    						if(!that.openid){that.$toast("未登入!");return;}
    
    						this.$post("api/wxapi/getJsTicket", {//获取JsTicket及AsseceToken及签名Sing
    								url: local
    							}, function(res) {
    								console.log('getJsTicket',res);
    								var data1=res.data;
    								var o = {
    									id: that.order_id,
    									openid: that.openid,
    									money: that.money
    								};
    								that.$post("api/wxapi/unifiedorder_mp", o, function(res) {
    										console.log(res)
    										// if (res.status != 200) {
    										// 	console.log(res.msg)
    										// 	//this.$toast(res.msg)
    										// 	return
    										// }
    										var orderInfo = {//appId, timestamp,timestamp1, nonceStr,nonceStr1, signature, packages,prepayid, paySign
    											appId:data1.appId,
    											timestamp : data1.timestamp,
    											nonceStr : data1.nonceStr,
    											signature : data1.signature,
    											nonceStr1: res.data.nonceStr,
    											packages: res.data.package,
    											//partnerid: res.data.data.partnerid,
    											prepayid: res.data.prepayid,
    											timestamp1: res.data.timeStamp,
    											paySign: res.data.paySign
    										}
    										console.log('orderInfo',orderInfo)
    										console.log('bbbb',res)
    										wxPay(orderInfo, s => {
    											console.log('aaaa',res)
    											that.$redirectTo('/pages/pay/paySuccess');
    											//window.location.href = `/h5/#/pages/order/index`
    										}, e => {
    											console.log('dddd',res)
    											console.log(res)
    											//window.location.href = `/h5/#/pages/shop/cashier?order_sn=${order_sn}`
    										})
    								}, res => {
    									console.log('这是失败了')
    									// this.$msg(res.msg)
    								})
    						})
    					}else{
    						that.$toast("支付失败,不在微信浏览器中!")
    					}
    

    pay.vue全部代码

    <template>
    	<view class="app">
    		<view class="price-box">
    			<text>支付金额</text>
    			<text class="price">{{money}}</text>
    		</view>
    
    		<view class="pay-type-list">
    
    			<view class="type-item b-b" @click="changePayType(1)">
    				<text class="iconfont iconweixinzhifu3" style="color: green; font-size: 2rem;"></text>
    				<view class="con">
    					<text class="tit">微信支付</text>
    					<!-- <text>推荐使用微信支付</text> -->
    				</view>
    				<label class="radio">
    					<radio value="" color="#fa436a" :checked='payType == 1' />
    					</radio>
    				</label>
    			</view>
    			<!-- <view class="type-item b-b" @click="changePayType(2)">
    				<text class="icon yticon icon-alipay"></text>
    				<view class="con">
    					<text class="tit" >支付宝支付</text>
    					<text>推荐使用支付宝支付</text>
    				</view>
    				<label class="radio">
    					<radio value="" color="#fa436a" :checked='payType == 2' />
    					</radio>
    				</label>
    			</view> -->
    
    		</view>
    
    		<text class="mix-btn" @click="confirm()">立即支付</text>
    
    	</view>
    </template>
    
    <script>
    	import wxPay from '@/static/js/common/wxPay.js'
    	// const jweixin = require('jweixin-module')
    
    	export default {
    		data() {
    			let _user = this.getUser();
    			return {
    				openid: _user.wxOpenId,//,
    				payType: 1,
    				order_id: "",
    				money: 0,
    				providerList: []
    			};
    		},
    		computed: {
    
    		},
    		onLoad(options) {
    			this.loadData(options)
    			//this.initapppay()
    		},
    
    		methods: {
    			initapppay() {
    				uni.getProvider({
    					service: "payment",
    					success: (e) => {
    						//this.$toast("payment success:" + JSON.stringify(e));
    						let providerList = [];
    						e.provider.map((value) => {
    							switch (value) {
    								case 'alipay':
    									providerList.push({
    										name: '支付宝',
    										id: value,
    										loading: false
    									});
    									break;
    								case 'wxpay':
    									providerList.push({
    										name: '微信',
    										id: value,
    										loading: false
    									});
    									break;
    								default:
    									break;
    							}
    						})
    						this.providerList = providerList;
    					},
    					fail: (e) => {
    						console.log("获取支付通道失败:", e);
    					}
    				});
    			},
    			loadData(o) {
    				this.money = o.money;
    				this.order_id = o.order_id
    			},
    
    			changePayType(type) {
    				this.payType = type;
    			},
    
    			onwxpayresult(res) {
    				let that = this
    				if (res.err_msg == "get_brand_wcpay_request:ok") {
    					uni.getStorage({
    						key: 'buy_type',
    						success: function(res) {
    							o = res.data;
    							if (o === "cart") {
    								uni.getStorage({
    									key: 'cart_list',
    									success: function(res) {
    										var list = res.data;
    										var li = [];
    										for (let i in list) {
    											var ite = list[i];
    											if (ite.checked === true) {
    												li.push(ite.id)
    											}
    
    										}
    										this.$post("cart/rm_cart_by_bought", {
    											"ids": JSON.stringify(li)
    										}, function(res) {
    
    										})
    
    									}
    								});
    
    							}
    						}
    					});
    
    					uni.redirectTo({
    						url: '../order/order?state=2'
    					})
    				} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
    					that.$msg("用户取消支付!");
    				} else {
    					alert("支付失败!");
    				}
    
    			},
    			onalipayresult(res) {
    				let that = this
    				console.log("alipay", res)
    				return
    				if (res.err_msg == "get_brand_wcpay_request:ok") {
    					uni.getStorage({
    						key: 'buy_type',
    						success: function(res) {
    							o = res.data;
    							if (o === "cart") {
    								uni.getStorage({
    									key: 'cart_list',
    									success: function(res) {
    										var list = res.data;
    										var li = [];
    										for (let i in list) {
    											var ite = list[i];
    											if (ite.checked === true) {
    												li.push(ite.id)
    											}
    
    										}
    										this.$post("cart/rm_cart_by_bought", {
    											"ids": JSON.stringify(li)
    										}, function(res) {
    
    										})
    
    									}
    								});
    
    							}
    						}
    					});
    
    					uni.redirectTo({
    						url: '../order/order?state=2'
    					})
    				} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
    					that.$msg("用户取消支付!");
    				} else {
    					alert("支付失败!");
    				}
    
    			},
    			confirm() {
    				if (this.payType == 1) {
    					this.confirmweixin()
    				} else {
    					this.confirmalipay()
    				}
    			},
    			confirmalipay() {
    				this.$post("aliapi/unifiedorder_app", {
    					id: this.order_id
    				}, (res) => {
    					if (res.status != 200) {
    						this.$msg(res.msg)
    						return
    					}
    					var orderInfo = {
    						"appid": res.data.appid,
    						"noncestr": res.data.noncestr,
    						"package": res.data.package,
    						"partnerid": res.data.partnerid,
    						"prepayid": res.data.prepayid,
    						"timestamp": res.data.timestamp,
    						"sign": res.data.sign
    					}
    					var reqdata = {}
    					reqdata.provider = "alipay";
    					reqdata.orderInfo = res.data;
    					reqdata.success = (res) => {
    
    						this.$msg("支付成功")
    						uni.redirectTo({
    							url: '/pages/order/order?state=2'
    						})
    					}
    					reqdata.fail = (err) => {
    						console.log(err)
    						this.$msg("支付失败" + err.errMsg)
    					}
    					uni.requestPayment(reqdata);
    
    				}, res => {
    					console.log(reqdata)
    					this.$msg(res.msg)
    				})
    			},
    			//确认支付
    			confirmweixin() {
    				let that = this
    				if (this.isApp()) {
    					that.$toast("支付失败!当前不在微信浏览器内!")
    					// console.log('这是wxapi/unifiedorder_app')
    					// this.$post("wxapi/unifiedorder_app", {
    					// 	id: this.order_id
    					// }, (res) => {
    					// 	if (res.status != 200) {
    					// 		this.$toast(res.msg)
    					// 		return
    					// 	}
    					// 	var orderInfo = {
    					// 		"appid": res.data.appid,
    					// 		"noncestr": res.data.noncestr,
    					// 		"packages": res.data.package,
    					// 		"partnerid": res.data.partnerid,
    					// 		"prepayid": res.data.prepayid,
    					// 		"timestamp": res.data.timestamp,
    					// 		"sign": res.data.sign
    					// 	}
    					// 	var reqdata = {}
    					// 	reqdata.provider = "wxpay";
    					// 	reqdata.orderInfo = orderInfo;
    
    					// 	reqdata.success = (res) => {
    					// 		this.$toast("支付成功")
    
    					// 		this.$redirectTo('/pages/order/order?stat=2');
    					// 	}
    					// 	reqdata.fail = (err) => {
    					// 		console.log(err)
    					// 		that.$toast("支付失败" + err.errMsg)
    					// 	}
    
    
    					// 	uni.requestPayment(reqdata);
    
    					// }, res => {
    					// 	console.log(reqdata)
    					// 	this.$msg(res.msg)
    					// })
    				} else {
    					console.log('这是wxapi/unifiedorder_mp')
    					// h5环境且在微信浏览器中
    					// #ifdef H5
    					if (this.$isWechat()) {
    						let appid = this.$getAppid();
    						// 这里是获取code后要跳转的地址,可以自定义也可以使用当前地址,使用当前页面地址需要自行判断处理code
    						let local = window.location.href;
    						console.log(local);
    						// window.location.href =
    						// 	`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect`;
    						//return;
    						if(!that.money||that.money<0){that.$toast("金额不对!");return;}
    						if(!that.order_id){that.$toast("并无此订单!");return;}
    						if(!that.openid){that.$toast("未登入!");return;}
    
    						this.$post("api/wxapi/getJsTicket", {//获取JsTicket及AsseceToken及签名Sing
    								url: local
    							}, function(res) {
    								console.log('getJsTicket',res);
    								var data1=res.data;
    								var o = {
    									id: that.order_id,
    									openid: that.openid,
    									money: that.money
    								};
    								that.$post("api/wxapi/unifiedorder_mp", o, function(res) {
    										console.log(res)
    										// if (res.status != 200) {
    										// 	console.log(res.msg)
    										// 	//this.$toast(res.msg)
    										// 	return
    										// }
    										var orderInfo = {//appId, timestamp,timestamp1, nonceStr,nonceStr1, signature, packages,prepayid, paySign
    											appId:data1.appId,
    											timestamp : data1.timestamp,
    											nonceStr : data1.nonceStr,
    											signature : data1.signature,
    											nonceStr1: res.data.nonceStr,
    											packages: res.data.package,
    											//partnerid: res.data.data.partnerid,
    											prepayid: res.data.prepayid,
    											timestamp1: res.data.timeStamp,
    											paySign: res.data.paySign
    										}
    										console.log('orderInfo',orderInfo)
    										console.log('bbbb',res)
    										wxPay(orderInfo, s => {
    											console.log('aaaa',res)
    											that.$redirectTo('/pages/pay/paySuccess');
    											
    										}, e => {
    											console.log('dddd',res)
    											console.log(res)
    
    					}else{
    						that.$toast("支付失败,不在微信浏览器中!")
    					}
    
    				}
    
    
    
    
    
    			}
    
    		}
    	}
    </script>
    
    <style lang='scss'>
    	.app {
    		width: 100%;
    	}
    
    	.price-box {
    		background-color: #fff;
    		height: 265upx;
    		display: flex;
    		flex-direction: column;
    		justify-content: center;
    		align-items: center;
    		font-size: 28upx;
    		color: #909399;
    
    		.price {
    			font-size: 50upx;
    			color: #303133;
    			margin-top: 12upx;
    
    			&:before {
    				content: '¥';
    				font-size: 40upx;
    			}
    		}
    	}
    
    	.pay-type-list {
    		margin-top: 20upx;
    		background-color: #fff;
    		padding-left: 60upx;
    
    		.type-item {
    			height: 120upx;
    			padding: 20upx 0;
    			display: flex;
    			justify-content: space-between;
    			align-items: center;
    			padding-right: 60upx;
    			font-size: 30upx;
    			position: relative;
    		}
    
    		.icon {
    			width: 100upx;
    			font-size: 52upx;
    		}
    
    		.icon-erjiye-yucunkuan {
    			color: #fe8e2e;
    		}
    
    		.icon-weixinzhifu {
    			color: #36cb59;
    		}
    
    		.icon-alipay {
    			color: #01aaef;
    		}
    
    		.tit {
    			font-size: 32upx;
    			color: #303133;
    			margin-bottom: 4upx;
    		}
    
    		.con {
    			flex: 1;
    			display: flex;
    			flex-direction: column;
    			font-size: 24upx;
    			color: #f8f6fc;
    		}
    	}
    
    	.mix-btn {
    		display: flex;
    		align-items: center;
    		justify-content: center;
    		width: 630upx;
    		height: 80upx;
    		margin: 80upx auto 30upx;
    		font-size: 32upx;
    		color: #fff;
    		background-color: #fa436a;
    		border-radius: 10upx;
    		box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
    	}
    </style>
    
    
    展开全文
  • 首先,我们来看一下如何来获得首批粉丝, 首批粉丝,我们讲万事开头难,首批粉丝也一样,你想获得的话可能相对来说就会复杂一点。 我们获得首批粉丝方式,有三种...原来如果我有微信公众号的话,可以通过微...
  • 微信终极秘籍:精通公众号商业运营(最强作者阵容资深大号实战揭秘营销极限智慧唯一基于5.0) 青龙老贼 赵黎 方雨 刘琪 潘越飞 编 ISBN 978-7-121-22036-4 2014年1月出版 定价:65.00元 284页 16开 编辑...
  • 一年的光景过去了,又到了写年度总结的...按照国际惯例,现在又到壹伴年报的时间啦,很多壹伴老用户应该都知道,从2017年起,为了帮助大家更快地获取,公众号的年度运营数据概况,我们上线了壹伴公众号年报,包含...
  • 微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象。 3. 公众平台 微信公众平...
  • 、开通微信公众号 1.1公众平台帐号类型 微信公众平台分为服务号、企业号、订阅号。 1、订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证前后都是每天只可以群发条消息; 2、服务号:主要偏于服务...
  • 微信公众号榜单排名,2020微信公众号排名公众号排名优化的注意事项及细节今天给大家分享一下,作为微信公众号的排名优化对于大多数人来说都已经知道了有这个渠道的事情,其实很多的新产品及渠道出来以后有不少的人都...
  • 微信开发(微信扫一扫)商品创建

    千次阅读 2016-10-06 19:15:56
    微信公众平台开放“扫一扫”功能,同时开放相关接口供有权限的品牌所有者调用。接口支持创建、管理并发布品牌所有者的商品信息,品牌所有者可选择商品条码发布。微信同时提供多种事件推送,帮助品牌所有者实现精准...
  • 接下来要做的件重要事情就是:进行公众号认证。 假如你没有对你的微信公众号进行认证, 即使你登录了公众号后台, 也不能使用里面的功能, 包括给粉丝群发消息, 微信功能的开发扩展, 和后面更重要的推广...
  • 全国公众号总排名2019,全国微信公众号排名公众号排名优化的注意事项及细节今天给大家分享一下,作为微信公众号的排名优化对于大多数人来说都已经知道了有这个渠道的事情,其实很多的新产品及渠道出来以后有不少的人...
  • 微信公众号运营推广相关

    千次阅读 2017-12-16 15:58:21
    微信公众号运营推广相关 本文从熟悉微信公众号、排版技巧、栏目建设、运营推广四大块来说。 本文主要针对各企业的微信运营新手和希望自己运营微信公众号的朋友,所有更多的是一些基础运营的知识,希望可以帮到大家...
  • 公众号开发、什么是微信开发二、微信开放平台三、微信公众平台四、小程序与公众号的区别1. 用途不同2. 运营方式不同3. 操作方法不同4. 用户体验不同(公众号操作延时较大,小程序体验接近原生App)5. 定位不同...
  • java微信公众号

    2021-08-18 15:04:00
    微信公众号 注册微信公众号 微信公众号平台 微信公众号测试 新建微信公众号后台项目 注入依赖 <!-- lombok:get set方法的注解 --> <dependency> <groupId>org.projectlombok</groupId> ...
  • 近日,“微信扫快递”能力正式向快递品牌及快递第三方全面开放了(请戳)。用户们纷纷表示:“Word天,懒癌患者的福音啊”、“这功能真接地气”……这个让用户频频点赞的能力,到底是什么样子?快递企业接入后,又能...
  • 微信小程序和公众号区别

    千次阅读 2018-10-24 13:50:47
    小程序和公众号都是微信的产品;小程序自上市以来一直都是很火爆,但是他和微信公众号有什么区别呢?很多人都不清楚这两者之间有什么区别,在这里,小程序开发公司城市网站联盟(www.cswz.cn)给你分享下小程序和...
  • 微信小程序和公众号

    2019-05-31 15:09:10
    微信小程序,简称小程序,缩写XCX,英文名mini program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。具有出色的使用体验。 小程序设计原则 **1.****做...
  • 微信扫码登录

    2018-11-18 23:26:02
    我的微信扫码功能用的就是微信公众平台。 公众平台与开放平台的区别 微信开放平台 主要面对移动应用/网站应用开发者,为其提供微信登录、分享、支付等相关权限和服务。 微信公众平台 微信公众平台用于管理、...
  • 如何从零开始系统运营微信公众号?1.为什么要选择微信平台?2.公众号定位3.内容干货4.粉丝积累5.资源积累6.粉丝互动7.盈利模式 、为什么要选择微信公众平台? 微信的广告语:“再小的个体也有品牌”!微信的这句...
  • 随着移动互联网的爆发,微信也以...微信公众号越来越多,随之而来的竞争也会越来越大,用户的要求也会越来越大,运营一公众号也就会越来越难。那么,如何从千万级别公众号中脱颖而出获得用户青睐呢?一些微信运营...
  • 废话不多说,直接开撸, 首先我们先申请微信公众号,点击该网址https://mp.weixin.qq.com/进入如下界面: 看上边的图片我们就能看出,账号分为四种类型,一般个人可以免费注册公众号和小程序,但是功能权限...
  • 随着移动互联网的爆发,微信也以迅雷不及掩耳之势站在了移动互联网发展的顶端,现在微信公众号的数量已然达到千万级别,微信公众号越来越多,随之而来的竞争也会越来越大,用户的要求也会越来越大,运营一公众号也...
  • 微信公众号开发(1)-实现关注公众号自动登录网站微信公众号初识、[微信官方文档](https://developers.weixin.qq.com/doc/)**二、公众号申请流程三、公众号管理页面四、必备开发者工具的使用五、细读开发者文档六...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,301
精华内容 2,520
关键字:

微信扫一扫公众号运营