微信开发的接口有哪些类型_微信公众号开发后台调用微信接口 - CSDN
精华内容
参与话题
  • 服务号自定义菜单微信认证之后高级接口权限,但每月只能群发一条消息。 2、到底该申请订阅号还是服务号?申请哪种类型的公众账号,主要取决于账号的用途。服务号主要面向企业和组织,旨在为用户提供服务;...

    1、订阅号与服务号的主要区别是什么?
    订阅号每天能群发一条消息,没有自定义菜单及高级接口权限(目前 个人、企业订阅号关联腾讯微博认证之后才有自定义菜单);服务号有自定义菜单微信认证之后有高级接口权限,但每月只能群发一条消息。

     

    2、到底该申请订阅号还是服务号?
    申请哪种类型的公众账号,主要取决于账号的用途。服务号主要面向企业和组织,旨在为用户提供服务;订阅号主要面向媒体和个人,旨在为用户提供信息和资讯。

    3、订阅号是否支持编程开发?
    不管是订阅号,还是服务号,在高级功能中都有编辑模式和开发模式,订阅号也支持编程开发,同样也能与企业系统对接。

    4、为什么申请的公众账号没有高级功能?

    公众账号注册后,要经过微信团队的审核,在审核未完成之前不显示高级功能。一般审核会在一个星期内完成,如果3~4没审核通过均属正常现象,还请耐心等待。

    5、现在为什么订阅号有自定义菜单?
    这是历史遗留问题。2013年8月5日,随着微信5.0的发布,公众账号被划分为订阅号和服务号,所有的公众账号都被默认为订阅号,并且有一次转服务号的机会,许多在此之前申请到自定义菜单的账号并没有转为服务号,所以就存在一些订阅号有自定义菜单,例如:36氪、蓉城先锋、天府之光等,目前 个人、企业订阅号关联腾讯微博认证之后才有自定义菜单。

     

    6、现在申请的订阅号能否转服务号?

    不能。只有2013年8月5日微信5.0发布以前申请的订阅号才有一次转服务号的机会,在此之后申请的订阅号不能转服务号。

     那如果真的有转服务号的需求怎么解决?只能重新申请一个服务号。


    7、目前一个身份证号能申请几个公众账号?

    2个。

     

    8、使用一个公司的材料能申请多少个公众账号?
    没有限制。

    9、在注册公众账号时,提示“你注册的公众号名称存在侵权风险,请先完成微博验证”,这是什么意思?

    公众平台对一些可能存在侵权的关键词进行了保护,例如:“微信”、“移动”、“搜狐”等,如果注册的公众账号名称中包含这类关键词,提交时就会提示存在侵权风险。

    遇到这种情况时,要么避开这些关键词换个名称注册,要么就根据提示先完成微博验证再继续注册。

    10、个人能否申请服务号?

    不能,个人只能申请订阅号。服务号的运营主体必须为组织,例如:企业、政府、其他组织等。

    11、公众账号的名称可以重复吗?
    公众账号的名称可以重复,不用担心被他人抢注。

     

    12、公众账号的名称可以修改吗?
    公众账号名称一经设置无法修改,公众平台没有提供账号改名的功能,因此在注册账号时取名应谨慎。

     

    14、是否需要粉丝数达到500才能申请微信认证?

    都可以申请微信认证,与粉丝数无关。申请微博认证才要求粉丝数必须达到500。

     

    15、编辑模式与开发模式能够同时使用吗?

    不能,这两种模式是互斥的,开启编辑模式就必须关闭开发模式,开启开发模式就必须关闭编辑模式。

     

    16、现在用的是编辑模式,以后还可以选择使用开发模式吗?

    可以,任何时候都可以根据需要切换到另外一种模式。

     

    17、编辑模式切换到开发模式之后,在编辑模式中设置的内容还在吗?还有效吗?

    在编辑模式中设置的内容,只要自己不手动删除,会永远存在的,但这些设置在开发模式下无效。

     

    18、开发模式的菜单为什么突然消失了?

    菜单不会无缘无故的消失,如果开发人员没有手动删除,那一定是有人开启过编辑模式引起的。请注意:开启编辑模式后,在开发模式下创建的菜单会被删除。

    19、使用开发模式需要具备哪些条件?

    1)至少掌握一门编程语言;2)具备公网服务器资源。

     

    20、微信公众平台支持哪些编程语言?应该如何选择?

    凡是支持动态Web开发的编程语言都能够用于微信公众平台开发,例如:Java、PHP、ASP.NET、Ruby、Python、Note.js等。

    开者人员应该选择自己最擅长的编程语言进行开发,如果都不擅长怎么办?如果都不擅长,建议选择Java或PHP,原因在于网上关于微信公众平台开发的资料大都是基于Java和PHP的,开发起来要相对容易。

    21、没有公网服务器资源怎么办?

    1)免费:可以考虑使用云环境,例如,BAE(Baidu App Engine,百度应用引擎  2014.1.1开始收费)和SAE(Sina App Engine,新浪应用引擎(PHP免费、Java需要云豆))。

    2)付费:可以考虑租用VPS(Virtual Private Server,虚拟专用服务器)或阿里云的云服务器。

    如果仅是为了学习微信公众平台开发,个人建议使用SAE。

     

    22、如果想使用Java进行微信公众平台开发至少需要掌握哪些内容?

    至少需要掌握Java基础知识、JSP、Servlet、Javabean和JDBC或者SSH(操作数据库)。

     

    23、公司的项目大都是基于SSH框架进行开发,能使用SSH开发微信公众账号吗?

    当然可以,前面说过,凡是支持动态Web开发的编程语言都能用于微信公众平台开发。其实,Struts本质上也是Servlet。

     

    25、公众账号能够通过程序主动向关注用户发消息吗?

    截止目前,公众平台还没有开放主动向用户发消息的接口。为什么招行可以?我前面说的是没有“开放”主动发消息的接口,并不代表没有该接口。如果贵公司也有招行的实力,我相信你也有办法申请到;如果没有这样的实力,那就不要费事了。

     

    26、订阅号使用开发模式能够向用户回复图片、语音和视频消息吗?

    可以,虽然订阅号没有多媒体文件上传接口权限,无法通过上传多媒体文件到微信服务器获取MediaId,但仍可以变相得到MediaId,同样可以实现回复多媒体消息。变相的实现方法是将用户发送给公众账号的多媒体消息的MediaId记录下来,给用户回复多媒体消息时可以使用。

     

    27、订阅号使用开发模式能够向用户回复音乐消息吗?

    可以。

    28、为什么URL在浏览器能访问,放到微信上却不能访问?

    请检查URL中是否包含特殊字符,例如:中文、+、&等,PC上的浏览器通常都会对URL中包含的特殊字符自动编码,但有些浏览器不会。为了保证所有的浏览器都能正常访问URL,请务必对URL中包含特殊字符显示编码,显示编码的意思是代码中能够明确看出编码方式是UTF8、GB2312或者其它。例如像下面这样:

     

    29、为什么项目在本地运行正常,也能获取到数据,部署到服务器上之后公众账号没有任何响应?

    遇到这类情况,请读者尝试从以下几个方面排查问题:

    1)检查项目在服务器上是否部署成功,可以尝试方法以前能够正常运行的功能模块,看能否正确响应,以便缩小问题范围。

    2)检查项目中通过URL传递参数时,如果传递特殊字符(例如:中文、+、&等),是否对特殊字符进行了编码。

    3)检查程序的处理是否超时,如果超过5秒,公众账号不响应。

    4)检查返回的文本消息、图文消息是否超过限制(文本消息长度<=2048字节,图文消息条数<=10条),若超过限制,公众账号不响应。

    5)公众账号不响应也有可能是微信公众平台自身故障导致。

     

    30、订阅号与非微信认证的服务号能够向回复哪些类型的消息?

    在开发模式下,订阅号与非微信认证的服务号只能向用户回复文本消息、音乐消息和图文消息。

     

    31、为什么自定义菜单创建成功了,在微信客户端的公众账号上却不显示?

    由于微信客户端缓存的原因,自定义菜单创建成功后,需要24小时以后才能显示出来。开发者在测试时,可以尝试取消关注公众账号后再次关注,这样能立即看到最新的菜单效果。

    PS:菜单更新、菜单删除也会有缓存。

     

    32、如果要更新公众账号的自定义菜单,需要先将原有菜单删除吗?

    不需要,直接执行菜单创建方法即可,每次创建菜单会自动覆盖以前的菜单。

     

    33、什么是微网站?

    微网站是新瓶装老酒,被一些搞营销的人给神化了,以至于很多开发者都在问什么是微网站,如何开发微网站。微网站本质上就是以微信浏览器为入口的手机网站(Web APP),能够兼容Android、iOS、WP等操作系统。开发微网站用到的技术与开发普通网站一样,都是基于HTML(HTML5)、CSS、Javascript等,所以有普通网站开发经验的开发者,完全有能力开发微网站。

     

    34、什么是模拟登录?模拟登录微信公众平台能够干什么?

    模拟登录指的是通过程序模拟用户在浏览器上的操作。例如,我们通过浏览器访问微信公众平台,先要登录,登录成功后能够查看用户信息、给用户回复消息、群发消息等,其实通过程序也能够实现这些操作。

     

    35、微信认证是如何收费的?

    服务号申请微信认证需要支付300元/次的审核服务费用,无论最终的认证审核通过与否,都需要支付这笔费用。微信认证成功后,认证的有效期是一年,在有效期快结束时还要再次申请微信认证。(PS:这个有点坑人)


    36、微信支付如何申请?

    目前了解的需要微信认证之后才有。 具体的也不知道 我的账号没有认证!!!  如果有了解的人士 欢迎指点。

     

    37、临时带参二维码有哪些应用场景?

    通过微信扫描二维码登录微信网页版,就是临时带参二维码的典型应用场景。

     

    38、微信公众平台开发一般如何调试?

    微信公众平台提供的在线接口调试工具旨在帮助开发者检测调用公众平台接口时传入的参数是否正确,这款工具对开发者的帮助其实并不大。对于调试本地运行的公众账号后台程序,这里给读者推荐两种方法:

    1)使用“微信开发调试小工具”,该工具支持在本地调试,工具的用法及下载请访问:http://pan.baidu.com/s/1eQIGw9

    2)使用花生壳动态域名解析软件,通过路由器端口映射,可以将自己的电脑变成一台外网服务器,这样本机运行的公众账号后台程序就能直接与微信服务器进行交互了。有些内容他人的资料     

    转载于:https://www.cnblogs.com/doudouxiaoye/p/5679422.html

    展开全文
  • 微信开发接口API协议

    2019-05-22 15:13:55
    微信开发接口API协议,出自冬天不穿秋裤,天冷也要风度的程序猿之手,必属精品! 一、网络通讯协议 如上图,采用 datalength+databytes 的自定义长度的协议,其中: datalength:紧跟其后的databytes的数据长度...

    微信开发接口API协议,出自冬天不穿秋裤,天冷也要风度的程序猿之手,必属精品!

    一、网络通讯协议

    如上图,采用 datalength+databytes 的自定义长度的协议,其中:

    datalength:紧跟其后的databytes的数据长度(不包含自身长度),占4字节

    databytes:protobuf 3.0协议数据序列化后的数据内容,长度不限

    二、网络应答模型

    1、业务消息

    服务端客户端间的消息大致分为以下四类:

    1)通知类消息

    通常由客户端发往服务器端,或者由服务器端发往客服客户端,接收方一般需要作出接收确认回复或不回复(默认成功异常时回复)。

    2)客户端同步请求类消息

    通常由手机客户端或客服客户端发出,服务端需要回复对应的响应消息。

    3)服务器端指令类消息

    通常是由服务器或者客服客户端发出的操作手机客户端的指令类消息,手机客户端收到后一般需要回复接收成功确认消息,并在后续执行完指令后回复发送结果通知消息。

    客户端在与服务器建立连接后,需要先发送DeviceAuthReq请求获取accesstoken后才能正常进行后续通信,建立连接时的通信时序图如下:

    2、心跳机制

    已于服务器建立连接的客户端需要每隔1分钟发送一个心跳包,时序图如下:

    三、Protobuf消息定义

    所有业务消息都转化为protobuf消息进行序列化后传输,不同命令对应的消息使用protobuf的Any类型嵌套入根消息,接收方在收到根消息后根据命令码反序列化为相应类型消息。

    消息结构定义基本约定:

    1)使用proto3语法

    2)package 命名空间统一采用 Jubo.JuLiao.IM.Wx.Proto

    3)消息命名采用 Pascal命名法,例如 FirstName,LastName

    4)时间字段统一用Unix-Timestamp形式

    5)message类型名全部为对应MsgType+Message后缀,如MsgType=DeviceAuthReq的消息的消息结构名定义为 message DeviceAuthReqMessage{}

    根消息(TransportMessage)

    根消息代表最终直接序列化为网络字节流的消息,其中应包含基本的发送方信息(用于授权认证)和其包含的具体的业务命令消息及命令码标识。

    所有的其他类型的消息都应该赋值到根消息的Content字段,并将MsgType字段设为对应值,之后将TransportMessage数据序列化做网络传输。接收方在收到消息后根据MsgType将Content内容反序列化成对应的强类型消息。

    sdk功能模块请参考:http://www.yunlauncher.com/Blog/articles/119.html

    1、基础消息类型

    1、客户端发送的心跳包

    HeartBeatReq = 1001;

    2、消息接收确认回复(接收或拒绝接收)

    MsgReceivedAck = 1002;

    3、错误单独提升为一种消息类型

    Error = 1003;

    2、设备客户端授权类消息

    1、设备(手机客户端、客服客户端)获取通信token请求

    DeviceAuthReq = 1010;

    2、设备(手机客户端、客服客户端)获取通信token响应

    DeviceAuthRsp = 1011;

    3、设备授权后退出(仅用于服务端内部)

    DeviceExitNotice = 1012;

    4、账号强制下线通知

    AccountForceOfflineNotice = 1013;

    3、手机客户端上传的通知类消息

    1、手机客户端微信上线通知

    WeChatOnlineNotice = 1020;

    2、手机客户端微信下线通知

    WeChatOfflineNotice = 1021;

    3、微信个人号新增好友通知

    FriendAddNotice = 1022;

    4、微信个人号移除好友通知

    FriendDelNotice = 1023;

    5、微信好友发来聊天消息

    FriendTalkNotice = 1024;

    6、任务执行结果通知

    TaskResultNotice = 1025;

    7、手机上回复好友的聊天消息

    WeChatTalkToFriendNotice = 1026;

    8、有好友请求添加好友的通知

    FriendAddReqeustNotice = 1027;

    9、手机端向服务端通知聊天执行结果

    TalkToFriendTaskResultNotice = 1028;

    10、图片或视频消息的详细内容结果

    RequestTalkDetailTaskResultNotice = 1029;

    11、上传手机客户端上微信的二维码

    PullWeChatQrCodeTaskResultNotice = 1030;

    12、手机上发送了朋友圈通知

    CircleNewPublishNotice = 1031;

    13、手机上删除朋友圈通知

    CircleDelNotice = 1032;

    14、手机检测到有人点赞/取消点赞通知

    CircleLikeNotice = 1033;

    15、手机检测到有人评论/删除朋友圈通知

    CircleCommentNotice = 1034;

    16、消息标记为已读

    PostMessageReadNotice = 1035;

    17、联系人信息上传

    ContactsInfoNotice = 1036;

    18、群聊新增通知

    ChatRoomAddNotice = 1037;

    19、联系人标签新增,修改通知

    ContactLabelAddNotice = 1038;

    20、收钱任务执行结果通知

    TakeMoneyTaskResultNotice = 1039;

    21、朋友圈图片上传

    CircleDetailNotice = 1040;

    22、群聊删除通知

    ChatRoomDelNotice = 1041;

    23、群聊信息变更通知

    ChatRoomChangedNotice = 1042;

    24、群二维码

    PullChatRoomQrCodeTaskResultNotice = 1043;

    4、服务端、客服客户端发给设备的指令类消息

    1、给好友发消息任务

    TalkToFriendTask = 1070;

    2、发送朋友圈任务

    PostSNSNewsTask = 1071;

    3、主动添加好友任务

    AddFriendsTask = 1072;

    4、发送朋友圈任务后数据回传

    PostSNSNewsTaskResultNotice = 1073;

    5、删除朋友圈

    DeleteSNSNewsTask = 1074;

    6、客户端或者服务端接受好友请求通知

    AcceptFriendAddRequestTask = 1075;

    7、群发消息任务

    WeChatGroupSendTask = 1076;

    8、执行养号动作命令

    WeChatMaintenanceTask = 1077;

    9、请求图片或视频消息的详细内容

    RequestTalkDetailTask = 1078;

    10、服务端主动要求手机上传当前登录的微信二维码

    PullWeChatQrCodeTask = 1079;

    11、触发手机推送好友列表任务

    TriggerFriendPushTask = 1080;

    12、触发手机推送朋友圈列表任务

    TriggerCirclePushTask = 1081;

    13、朋友圈评论删除任务

    CircleCommentDeleteTask = 1082;

    14、朋友圈评论删除任务反馈

    CircleCommentDeleteTaskResultNotice = 1083;

    15、朋友圈评论回复任务

    CircleCommentReplyTask = 1084;

    16、朋友圈评论回复反馈

    CircleCommentReplyTaskResultNotice = 1085;

    17、通知手机将某个聊天窗口置为已读

    TriggerMessageReadTask = 1086;

    18、消息撤回

    RevokeMessageTask = 1087;

    19、转发消息

    ForwardMessageTask = 1088;

    20、通知手机推送聊天记录

    TriggerHistoryMsgPushTask = 1089;

    21、获取群聊二维码

    PullChatRoomQrCodeTask = 1090;

    5、服务端通知执行的命令

    1、服务端通知pc客户版本升级

    UpgradeAppNotice = 1093;

    2、通知手机客户端软件升级

    UpgradeDeviceAppNotice = 1094;

    3、清粉任务

    PostFriendDetectTask = 1095;

    4、终止清粉任务

    PostStopFriendDetectTask = 1096;

    5、删除设备通知

    PostDeleteDeviceNotice = 1097;

    6、朋友圈点赞任务

    PostMomentsPraiseTask = 1098;

    7、停止朋友圈点赞任务

    PostStopMomentsPraiseTask = 1099;

    8、养号任务停止

    PostStopWeChatMaintenanceTask = 1100;

    9、修改备注任务

    ModifyFriendMemoTask = 1101;

    10、领取红包或转账

    TakeLuckyMoneyTask = 1200;

    11、获取指定好友朋友圈

    PullFriendCircleTask = 1201;

    12、获取朋友圈图片

    PullCircleDetailTask = 1202;

    13、单条朋友圈点赞任务

    CircleLikeTask = 1203;

    14、触发手机推送群聊列表

    TriggerChatroomPushTask = 1210;

    15、请求具体群聊的详细信息

    RequestChatRoomInfoTask = 1211;

    16、获取联系人详细信息(不一定是好友,如群聊成员)

    RequestContactsInfoTask = 1212;

    17、群聊管理

    ChatRoomActionTask = 1213;

    18、群内加好友

    AddFriendInChatRoomTask = 1214;

    19、通讯录加好友

    AddFriendFromPhonebookTask = 1215;

    20、删除好友

    DeleteFriendTask = 1216;

    21、发红包

    SendLuckyMoneyTask = 1217;

    22、获取聊天消息的原始内容(主要是xml内容)

    RequestTalkContentTask = 1218;

    23、返回聊天消息的原始内容

    RequestTalkContentTaskResultNotice = 1219;

    24、转发消息内容

    ForwardMessageByContentTask = 1220;

    6、手机端主动发出的交互类消息

    1、手机端推送好友列表

    FriendPushNotice = 2026;

    2、手机端推送当前安装版本

    PostDeviceInfoNotice = 2027;

    3、手机端回传检测清粉好友数

    PostFriendDetectCountNotice = 2028;

    4、手机回传朋友圈数据

    CirclePushNotice = 2029;

    5、手机回传朋友圈点赞数量

    PostMomentsPraiseCountNotice = 2030;

    9、手机端推送群聊列表

    ChatroomPushNotice = 2031;

    7、手机端推送标签列表

    ContactLabelInfoNotice = 2032;

    8、推送历史消息

    HistoryMsgPushNotice = 2033;

    9、群成员(陌生人)信息

    ChatRoomMembersNotice = 2034;

    sdk适用于微信营销软件研发、微信营销手机研发、微信手机群控云控系统研发、微信SCRM客服系统研发、微信营销工具研发、淘宝客机器人、导购返利机器人研发等,目前【聚客通】【有客来】等scrm都是基于这个sdk二次开发的。

    接口参考http://www.yunlauncher.com/Blog/articles/119.html 项目地址:https://www.wuliaokankan.cn/url301/138.html
    展开全文
  • 文章结构 ...1、怎么调用微信高级接口微信高级接口微信普通接口的区别后台服务器可以调用微信接口微信用户进行讯息的通信,这样的行为就是在调用微信接口,这些接口是基础接口,你不需要任

    文章结构
    1、怎么调用微信高级接口
    2、调用微信高级几大实例
    2.1、调用自定义菜单接口
    2.2、客服接口
    2.3、生成二维码
    3、获取非微信功能接口,如天气网的天气接口、股票网站的信息接口。

    怎么调用微信高级接口

    微信高级接口和微信普通接口的区别

    后台服务器可以调用微信的接口与微信用户进行讯息的通信,这样的行为就是在调用微信的接口,这些接口是基础接口,你不需要任何付费行为或者身份认证行为就可以调用。但是有一些高级接口,你的微信公众号必须达到一定的权限如通过微信认证才能调用自定义菜单、微信支付等高级功能。
    不过微信公众帐号的测试号系统可以应用这些高级接口(微信支付等涉及交易的接口除外)。

    微信高级接口的调用

    微信高级接口的调用需要先调用一个token_access接口,只有先调用这个接口才能调用其它高级接口。
    如下:连通高级接口示意图
    这里写图片描述
    调用token_access需要用到appID和appsecreset(在微信公众好平台开发(一)中已经讲述这两者的由来)


    调用代码如下

    <?php
    $appid = "wxbad0b4x543aa0b5e";
    $appsecret = "ed222a84da15cd24c4bdfa5d9adbabf2";
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
    //下面是一个cURL会话过程,通过这个会话可以返回一段字符串{"access_token":"NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjb"}
    这就是我们要获得的Access Token了。在调用高级功能接口的时候就靠它。这个过程用的时候直接引用就好,不需要深究,这个cURL系统相关函数有点多而且复杂。
    
    $ch = curl_init();//初始化
    curl_setopt($ch, CURLOPT_URL, $url);//与url建立对话
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //进行配置
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //进行配置
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//进行配置
    $output = curl_exec($ch);//执行对话,获取接口数据Access Token
    curl_close($ch);//关闭会话
    $jsoninfo = json_decode($output, true);//解码接口数据,将json格式字符串转换成php变量或数组。默认是变量,加true后是数组。
    $access_token = $jsoninfo["access_token"];
    
    ?>
    
    

    2、调用微信高级接口

    调用自定义菜单功能

      //创建一个自定义菜单的json字符串
      $jsonmenu = '{
          "button":[
          {
                "name":"关于我们",
               "sub_button":[
                {
                   "type":"click",
                   "name":"公司简介",
                   "key":"公司简介"
                },
                {
                   "type":"click",
                   "name":"社会责任",
                   "key":"社会责任"
                },
                {
                   "type":"click",
                   "name":"联系我们",
                   "key":"联系我们"
                }]
           },
           {
               "name":"产品服务",
               "sub_button":[
                {
                   "type":"click",
                   "name":"微信平台",
                   "key":"微信平台"
                },
                {
                   "type":"click",
                   "name":"微博应用",
                   "key":"微博应用"
                },
                {
                    "type":"click",
                    "name":"手机网站",
                    "key":"手机网站"
                }]
           },
           {
               "name":"技术支持",
               "sub_button":[
                {
                   "type":"click",
                   "name":"文档下载",
                   "key":"文档下载"
                },
                {
                   "type":"click",
                   "name":"技术社区",
                   "key":"技术社区"
                },
                {
                    "type":"click",
                    "name":"服务热线",
                    "key":"服务热线"
                }]
           }]
     }';
    
      $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;//接口地址
    $result = https_request($url, $jsonmenu);//与接口建立会话
    var_dump($result);
    
    function https_request($url,$data = null){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
    //把这段代码加入到上面的调用Access Token接口的代码中就可以实现在微信公众号界面添加菜单的功能。
    
    

    当我们为微信公众号添加菜单后怎么样设置点击菜单时会出现相应的效果呢?
    这里涉及到另一种xml类型的数据传递:

    <xml>
    <ToUserName><![CDATA[gh_82479813ed64]]></ToUserName>
    <FromUserName><![CDATA[ojpX_jig-gyi3_Q9fHXQ4rdHniQs]]></FromUserName>
    <CreateTime>1392297442</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[CLICK]]></Event>
    <EventKey><![CDATA[公司简介]]></EventKey>
    </xml>
    //上面是点击click菜单的数据传递类型,数据会发送给后台服务器,然后服务器做出响应。

    菜单类型有多种,xml类型差别,详细情况可以在微信公众号平台上查看相应文档。
    *这里要说明的是只要你有微信公众号的appID和appsecret,在任何服务器空间运行这段php代码都可以进入微信服务器调用相应功能,不一定非要在进行了token验证的服务器下运行。token验证是为了后台服务器进行判断数据来源是否是来自微信服务器,与调用微信服务器的高级接口并没有多大的关联。
    php文件一定要在服务器运行才会产生效果。
    其它高级接口的调用都同调用自定义菜单一样。

    调用客服接口

    当微信用户主动发消息 给微信公众帐号的时候(包括发送信息、单击自定义菜单click事件、订阅事件、扫描二维码、支付成功事件)微信会把消息数据推送给开发者。开发者在一段时间内可以调用客服接口消息,通过post一个JSON数据包来发送消息给用户。

    $access_token = "nFX6GFsspSLBKJLgMQ3kj1YM8_FchRE7vE2ZOIlmfiCOQntZKnBwuOen2GCBpFHBYS4QLGX9fGoVfA36tftME2sRiYsKPzgGQKU-ygU7x8cgy_1tlQ4n1mhSumwQEGy6PK6rdTdo8O8GROuGE3Hiag";
    $openid = "o7Lp5t6n59DeX3U0C7Kric9qEx-Q";//微信用户都有一个openID
    

    下图所示即为openID的获取方式。
    这里写图片描述

    $data = '{
        "touser":"'.$openid.'",
        "msgtype":"text",
        "text":
        {
             "content":"Hello World"
        }
    }';//通过基础消息接口发送的数据是XML格式的,但是调用客服接口发送的数据是json数据格式,更易传输。 
    $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
    $result = https_request($url,$data);
    var_dump($result);
    
    function https_request($url,$data)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url); 
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($curl);
        if (curl_errno($curl)) {
           return 'Errno'.curl_error($curl);
        }
        curl_close($curl);
        return $result;
    }

    客服接口发送图文消息、音乐消息、视频消息具体格式请参看微信公众平台上的开发帮助文档。
    客服接口可以和消息接口混合使用。
    这里大家可能不明白既然可以直接通过被动响应消息的接口发送xml数据给用户,为什么还需要这样一个客服接口?可以这样理解,被动响应消息是一次性的只能回复一次相同的消息。如你向一个音乐平台输入一个歌星名称,通过被动响应方式发送的消息永远只会回复你一首相同的歌。但是通过客服接口方式可以每次回复不同的 歌曲,这涉及到mysql数据库。
    再简单一点,一个查看快递包括地址的微信公众平台。你每次输入同一个订单编号,后台却能够回复订单每次所在的位置(针对同样的文本却可以做出不同的回应)就像是人工回复一样,这就是客服接口 。

    生成二维码接口

    二维码类型分两种,分别是临时二维码eh 和永久二维码,前者与过期时间,最长是1800s。
    生成二维码你需要调用3个接口,
    第一个是access_token
    第二个是生成ticket接口
    第三个是通过第二个接口生成的ticket来换取二维码图片。

    $access_token = " xDx0pD_ZvXkHM3oeu5oGjDt1_9HxlA-9g0vtR6MZ-v4r7MpvZYC4ee4OxN97Lr4irkPKE94tzBUhpZG_OvqAC3D3XaWJIGIn0eeIZnfaofO1C3LNzGphd_rEv3pIimsW9lO-4FOw6D44T3sNsQ5yXQ";//假定获取的ACCESS TOKEN为这段代码。
    
    //临时二维码
    $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 10000}}}';
    //永久二维码
    $qrcode = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 1000}}}';
    
    $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token";//创建ticket接口
    $result = https_request($url,$qrcode);
    $jsoninfo = json_decode($result, true);
    $ticket = $jsoninfo["ticket"];
    
    function https_request($url, $data = null){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
    
    
    $ticket = "gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA==";//获取ticket的字符串
    
    $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);//ticket对面二维码图片代码。
    $imageInfo = downloadWeixinFile($url);
    
    $filename = "qrcode.jpg";
    $local_file = fopen($filename, 'w');
    if (false !== $local_file){
        if (false !== fwrite($local_file, $imageInfo["body"])) {
            fclose($local_file);
        }
    }
    
    function downloadWeixinFile($url)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HEADER, 0);    
        curl_setopt($ch, CURLOPT_NOBODY, 0);    //只取body头
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $package = curl_exec($ch);
        $httpinfo = curl_getinfo($ch);
        curl_close($ch);
        return array_merge(array('body' => $package), array('header' => $httpinfo)); 
    }
    

    在服务器空间运行这段代码,浏览器会生成一张二维码图片。

    获取非微信功能接口,比如获取交通信息、天气预报。

    这里我们以调去百度天气的api接口为例:参看以下连接文章即可
    http://www.jianshu.com/writer#/notebooks/6632557/notes/6780992/preview

    展开全文
  • php微信支付接口开发的实现程序

    千次阅读 2018-08-20 17:15:40
    微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了,下文是我公司的技术人员整理了一个php微信支付接口开发程序并且己测试,兴趣的朋友可进入参考。  必要条件:  appid ...

      微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了,下文是我公司的技术人员整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考。

      必要条件:

      appid //公众号后台开发者中心获得(和邮件内的一样) mchid//邮件内获得 key//商户后台自己设置 appsecret //公众号开发者中心获得

      两个证书文件,邮件内获得 apiclient_cert.pem apiclient_key.pem

      注意事项:

      公众号后台微信支付-》开发配置-》新增测试目录和测试个人微信号。

      开发者中心-》网页授权获取用户基本信息-》修改成你的测试域名。否则会出现redirect_uri 参数错误

      —————————— 后续待完善——————-

      微信支付就绪页面后台自行了三次操作:

      1.获取openid

    //使用jsapi接口

      

     

       $jsApi = new JsApi_pub();

      

        //=========步骤1:网页授权获取用户openid============

        //通过code获得openid

        if (!isset($_GET['code']))

        {

            //触发微信返回code码

            $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);

            //echo $url;

            Header("Location: $url");

        }else

        {

            //获取code码,以获取openid

            $code = $_GET['code'];

            $jsApi->setCode($code);

            $openid = $jsApi->getOpenid();

        }

      刚开始的时候第一步也遇到问题,没饭获得openid这个和部分服务器有关,demo内用的是curl获取的方式。

      奇怪我的服务器curl一直无法获取到。后来改成file_get_contents可以正常获取了。

      可这并不是解决之道。因为后面还需要用到更多的curl操作。

      看到开发文档里面有一个地方写证书操作需要libcurl 7.20.1以上版本,然后我就一直在整服务器想把linux的php curl版本提高。最后面我是换到了另外一台windows服务器就好了。

      先暂时这样吧,下次需要用的时候再调试。

      第二步:获取与支付订单号id

      代码如下

    $unifiedOrder = new UnifiedOrder_pub();

          

        //var_dump($unifiedOrder);

        //设置统一支付接口参数

        //设置必填参数

        //appid已填,商户无需重复填写

        //mch_id已填,商户无需重复填写

        //noncestr已填,商户无需重复填写

        //spbill_create_ip已填,商户无需重复填写

        //sign已填,商户无需重复填写

        $unifiedOrder->setParameter("openid","$openid");//商品描述

        $unifiedOrder->setParameter("body","贡献一分钱");//商品描述

        //自定义订单号,此处仅作举例

        $timeStamp = time();

        $out_trade_no = WxPayConf_pub::APPID."$timeStamp";

        $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 

        $unifiedOrder->setParameter("total_fee","1");//总金额

        $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 

        $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型

        //非必填参数,商户可根据实际情况选填

        //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号  

        //$unifiedOrder->setParameter("device_info","XXXX");//设备号 

        //$unifiedOrder->setParameter("attach","XXXX");//附加数据 

        //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间

        //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间 

        //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记 

        //$unifiedOrder->setParameter("openid","XXXX");//用户标识

        //$unifiedOrder->setParameter("product_id","XXXX");//商品ID

      

      

        $prepay_id = $unifiedOrder->getPrepayId();

          

        //echo 'prepay_id:';

        var_dump($prepay_id);

      这一步也遇到非常多的问题。

      首先微信支付测试比较困难,只有在微信内才可以测试。我就用手机刷来刷去。

      其次使用var_dump调试也不好使额。打印一些 xml格式的文件只显示字符长度,不显示内容。于是用log的形式写在服务器上调试,log代码:

      代码如下

    // 打印log

        function  log_d($word) 

        {

            $log_name="./logd.log";//log文件路径

            $fp = fopen($log_name,"a");

            flock($fp, LOCK_EX) ;

            fwrite($fp,"执行日期:".strftime("%Y-%m-%d-%H:%M:%S",time())."n".$word."nn");

            flock($fp, LOCK_UN);

            fclose($fp);

        }

      在demo里面的 WxPayPubHelper.php 里面 用 $this->log_d(xxx);调用。

      刚开始的时候由于给我的mchid和 appid不匹配一直报错。。是他们给错我账号了。刚开始我也不懂乱试。这一步的调试在 getPrepayId()内 var_dump($this->result); 就能看到错误代码。

      第三步:生成支付前端 js代码就绪到网页上:

      代码如下

    $jsApi->setPrepayId($prepay_id);

      

    $jsApiParameters = $jsApi->getParameters();

      ———————- 点击前往支 付————————-

      这部分又遇到了问题:

      android返回“System:Access_denied”,ios返回”access_control:not_allowed”

      搜了很多百度。其实早就看到了这个东西一直没注意!

      发起授权请求的页面必须是在授权目录下的页面,而不能是存在与子目录中。否则会返回错误

      支付文件我放在了/域名/pay/demo/

      刚开始的时候我一直是到/域名/pay/结尾以为就可以了。支持子目录,结果是不行的!。

      ————————— 最后看下图—————

      wxpay1

      wxpay3

      wxpay2

      —————– 流程中的 xmljs——————–

      待提交生成与支付订单id:

      代码如下

    <xml>

      <openid><![CDATA[ou9dHt0L8qFLI1foP-kj5x1mDWsM]]></openid>

      <body><![CDATA[贡献一下]]></body>

      <out_trade_no><![CDATA[wx88888888888888881414411779]]></out_trade_no>

      <total_fee>1</total_fee>

      <notify_url><![CDATA[http://shanmao.me/wxpay/notify_url.php]]></notify_url>

      <trade_type><![CDATA[JSAPI]]></trade_type>

      <appid><![CDATA[wx8888888888888888]]></appid>

      <mch_id>10012345</mch_id>

      <spbill_create_ip><![CDATA[61.50.221.43]]></spbill_create_ip>

      <nonce_str><![CDATA[60uf9sh6nmppr9azveb2bn7arhy79izk]]></nonce_str>

      <sign><![CDATA[2D8A96553672D56BB2908CE4B0A23D0F]]></sign>

    </xml>

      提交后返回正确,其中包含了perpay_id:

    <xml>

      <return_code><![CDATA[SUCCESS]]></return_code>  

      <return_msg><![CDATA[OK]]></return_msg>  

      <appid><![CDATA[wx8888888888888888]]></appid>  

      <mch_id><![CDATA[10012345]]></mch_id>  

      <nonce_str><![CDATA[Be8YX7gjCdtCT7cr]]></nonce_str>  

      <sign><![CDATA[885B6D84635AE6C020EF753A00C8EEDB]]></sign>  

      <result_code><![CDATA[SUCCESS]]></result_code>  

      <prepay_id><![CDATA[wx201410272009395522657a690389285100]]></prepay_id>  

      <trade_type><![CDATA[JSAPI]]></trade_type> 

    </xml>

      生成支付用的js :

    {

        "appId": "wx8888888888888888",

        "timeStamp": "1414411784",

        "nonceStr": "gbwr71b5no6q6ne18c8up1u7l7he2y75",

        "package": "prepay_id=wx201410272009395522657a690389285100",

        "signType": "MD5",

        "paySign": "9C6747193720F851EB876299D59F6C7D"

    }

      支付成功后返回的通知xml:

    <xml><appid><![CDATA[wx8888888888]]></appid>

    <bank_type><![CDATA[CCB_DEBIT]]></bank_type>

    <fee_type><![CDATA[CNY]]></fee_type>

    <is_subscribe><![CDATA[Y]]></is_subscribe>

    <mch_id><![CDATA[1011111]]></mch_id>

    <nonce_str><![CDATA[38gt0ffgsvfsdfsdfbt1981duv63p7]]></nonce_str>

    <openid><![CDATA[o4p3SjfdsfdsfdsdCE5Y2XHw4]]></openid>

    <out_trade_no><![CDATA[wx4b56d1fsdfdsf416643247]]></out_trade_no>

    <result_code><![CDATA[SUCCESS]]></result_code>

    <return_code><![CDATA[SUCCESS]]></return_code>

    <sign><![CDATA[356EfsdfdsfsdsfE69509EDA344]]></sign>

    <sub_mch_id><![CDATA[10018826]]></sub_mch_id>

    <time_end><![CDATA[20141122160122]]></time_end>

    <total_fee>1</total_fee>

    <trade_type><![CDATA[JSAPI]]></trade_type>

    <transaction_id><![CDATA[100715001020fsdfsd1220006123174]]></transaction_id>

    </xml>

      这其中的数据我随意了的,大家就参考下格式吧。另外注意大小写敏感。如果大家现在还是存在部分疑问的话,可以留言咨询,我们一起共同学习与进步。

      本文由专业的郑州小程序开发公司燚轩科技技术人员整理发布,原创不易,如需转载请注明出处!

    展开全文
  • 微信开发之发送消息接口

    万次阅读 2016-12-25 21:36:18
    发送消息,是指用户公众号向用户发送相应形式的消息。根据微信开发文档,由以下四种形式:被动回复,群发接口,客服消息接口以及模板消息接口。...这一部分较为简单,正式进行微信开发的第一步就是,在公众号中基本
  • 对接微信支付接口开发详细步骤

    万次阅读 2018-11-02 14:52:50
    如何申请微信商户号(如图) 从微信公众号 申请商户支付账户 点击微信支付(跳转到微信支付信息填写提交)根据提示填写即可 填写好信息需要等待审核,这里就不多做解释了(下图申请成功后的截图...
  • 微信开发(调用各种接口

    千次阅读 2016-09-28 11:57:25
    在php微信开发文档中,我们使用php来做微信的开发; 首先: 在微信开发者文档中,开始开发->接入指南->目录中三步骤写的很已经很明确了。 好了。进入正题; 下载demo,php示例; 把Demo放到线上的域名中。 ...
  • 每个公众号类型不同的权限。 比如在开发微信支付功能时, 只有微信服务号能够拥有这个功能, 订阅号就不能使用。 当然还有很多区别, 在这一节微信开发视频教程中告诉你如何查看… 微信公众号...
  • 微信公众号开发(一)服务器及接口的配置

    万次阅读 多人点赞 2019-05-22 09:21:41
    微信公众号开发(一)服务器及接口的配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比...
  • Java微信分享接口开发

    万次阅读 热门讨论 2019-08-06 17:31:14
    Java微信分享,步骤是 1、根据当前的url,获取signature,nonceStr,timestamp 和appId。 2、通过signature,nonceStr,timestamp 和appId来配置微信 wx.config。 3、通过wx.ready实现微信分享功能。
  • 微信支付接口开发

    2017-08-14 11:12:32
    下载微信支付接口文档后,根据demo将该引入的文件引入,需要改的文件并不多,特别注意需要改的文件 1,配置文件{    APPID=‘商户注册微信分配的唯一标识’ MCHID='受理商id',//这个需要注意,如果受理商是...
  • 个人微信开发api文档

    2019-07-14 15:15:09
    个人微信开发api文档,个人微信开发sdk,个人微信开发协议接口 微信开发sdk服务端调用接口 1、基础消息类型 1、客户端发送的心跳包 HeartBeatReq = 1001; 2、消息接收确认回复(接收或拒绝接收) MsgReceivedAck = ...
  • 微信接口文档sdk

    2019-10-25 14:41:36
    微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页个人微信api分享1、基础消息类型1、...
  • 微信开发-JS接口微信定位

    千次阅读 2019-01-22 10:39:44
    微信不支持服务端定位,只有JS接口进行实现定位,在这里面记录一下 二、注意 微信定位使用access_token是普通access_token 下图的标红的位置记住必须要写这两个 二、微信定位代码实例 服务端代码 下方需要的...
  • 个人微信开发API

    2019-05-30 00:30:59
    微信开发SDK接口API列表 1、基础消息类型 1、客户端发送的心跳包 HeartBeatReq = 1001; 2、消息接收确认回复(接收或拒绝接收) MsgReceivedAck = 1002; 3、错误单独提升为一种消息类型 Error = 1003; 2、设备客户端...
  • 微信群API接口

    2019-11-01 14:02:45
    安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页...
  • 以下内容来自于微信公众平台开发文档 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。各消息类型的推送XML数据包结构如下: 文本消息      1348831860     ...
  • 项目开发微信支付接口调用

    千次阅读 2019-06-01 10:15:15
    功能描述:用户下单支付时可以选择微信支付,并调用微信端接口实现支付完成 微信支付的种类 微信扫描二维码支付 微信端吊起H5进行支付 微信公众号吊起支付 ...这里是详细的微信开发的开发文档链接 ...
  • 微信开发的概念

    2019-12-03 23:23:16
    微信开发的概念 什么是微信开发 微信这个软件,提供了聊天、支付、分享、收藏等各种功能,同时用户基数庞大; 微信对外开放了很多接口和能力,程序员基于这些功能进行的二次开发,叫做微信开发 微信开放平台 微信...
  • java微信开发高级接口----群发功能

    万次阅读 多人点赞 2018-01-22 15:19:40
    在做微信高级接口开发中,或许总会碰到很多神奇的错误码,而这些错误码在官方文档中还是找不到原因,因此贴出自己开发过程中用的一些demo,希望能够给一些小伙伴指点迷津。{"errcode":45028,"errmsg":"has no ...
1 2 3 4 5 ... 20
收藏数 48,756
精华内容 19,502
关键字:

微信开发的接口有哪些类型