微信怎么验证appid 两步验证

已认证服务号开通微信支付详细步骤 - 推酷
已认证服务号开通微信支付详细步骤
已认证服务号开通微信支付详细步骤
三 5, 2014
平台动态,资讯速递
1.1 申请流程指引
一、申请流程图
二、申请接入步骤详细说明
(一)成为已认证的服务号
1、目前微信支付功能仅开放给已经通过微信认证的服务号(企业、商店商家、非事业单位媒体类服务号),若已经通过微信认证,且是服务号,可直接进入第二步;
2、订阅号商户可先升级为服务号,此步骤约1个工作日;
3、未经认证的商户可先申请微信认证。
注意:请申请认证的商户主体与后续申请微信支付权限的商户主体保持一致。
(二)提交申请资料,等待审核
1、登录公众号,进入:服务-服务中心-商户功能;
2、提交商户基本资料
1)请据实填写微信支付售卖的商品/服务信息,并据此选择经营范围、填写售卖商品信息,此处填写的商品信息将作为日后运营监管的依据;
2)目前仅对经营范围之内的商户开放微信支付申请权限,经营范围之外的商户请暂缓。
3、提交业务审核资料
此处提交的商户资料,要求与认证的商户主体一致,即认证主体与运营主体一致。
4、提交财务审核资料
此处提交的公司财务资料,要求与业务审核中的主体一致,即运营主体与结算主体一致。
5、等待审核
1)微信7个工作日内给到审核结果;
2)审核结果将以通知的形式告知商户,可点击页面右上角小信封图标进入查看。
3)通过审核的商户,将收到通知邮件,邮件中包含重要开发参数,请牢记申请时填写的邮箱地址。
该重要邮箱是商户在填写“业务审核资料”时设置的:
(三)进入开发、签订合同
1、通过审核的商户可以开始进行开发工作,微信已提供清晰的开发接口文档,帮助你顺利完成开发工作。
注意:为了不耽误进入上述流程图中的第四步,建议商户将签订合同与开发工作同步进行。
2、 签订合同
1)通过审核后,商户便可在线下载合同,盖章后请根据指引寄回;
2)若申请公众号支付,则商户需要签订《微信公众平台商户功能服务协议》和《微信支付服务协议》;
3)若仅申请APP支付,则商户仅需签订《微信支付服务协议》(下载、盖章、寄回),无需签订《微信公众平台商户功能服务协议》;
4)若同时申请公众号支付和APP支付,则同2),签订《微信公众平台商户功能服务协议》和《微信支付服务协议》;
5)微信在收到商户寄回的合同后,会由专人负责审核,确认无误后,会尽快盖章寄还商户。
注意:商户盖章时请注意加盖骑缝章。
(四)商户功能服务、售卖商品
1、缴纳微信风险保证金
1)登录财付通账户缴纳微信平台微信风险保证金;
该账户是第二步微信审核通过之后,邮件通知给商户的partnerid,登录密码是partnerkey;
2)未缴纳微信风险保证金不影响商户功能服务,但将无法正常结算财付通账户中的资金款项。
2、商户功能服务是指白名单之外的微信号也能在商户公众号内使用微信支付功能,商户功能服务之后才能正常售卖商品或服务。
1.2 首期接入商户类目及资质审查要求
资质证照要求
《企业法人营业执照》
《企业法人营业执照》
《企业法人营业执照》
《企业法人营业执照》
化妆品/个人护理
《化妆品生产企业卫生许可证》或《化妆品生产许可证》(化妆品生产行政许可与化妆品卫生行政许可两项行政许可整合为一项行政许可)
进口化妆品《卫生许可批件》及有效检验检疫证明
《企业法人营业执照》
《企业法人营业执照》
《企业法人营业执照》
汽车及配件
整车预订/汽配
《企业法人营业执照》
《企业法人营业执照》
《企业法人营业执照》
《食品流通许可证》或《食品卫生许可证》
《食品流通许可证》或《食品卫生许可证》,以及《出入境检验检疫卫生证书》
《全国工业产品生产许可证》
母婴服饰和用品
《企业经营许可证》
实体店餐饮
《餐饮服务许可证》、店铺门面照和经营场所照
《食品流通许可证》或《食品卫生许可证》
《食品流通许可证》或《食品卫生许可证》,以及《出入境检验检疫卫生证书》
《食品流通许可证》、《酒类流通备案登记表》、《进口食品卫生证》和《进口食品标签审核证》
《食品流通许可证》和《酒类流通备案登记表》
《食品流通许可证》和《酒类流通备案登记表》
《食品流通许可证》和《酒类流通备案登记表》
《出版许可证》或出版社授权文件,以及《出版物经营许可证》
《音像制品出版许可证》或出版社授权文件,以及《音像制品经营许可证》
《报纸出版许可证》或报纸出版授权文件,以及《出版物经营许可证》
《杂志出版许可证》或杂志社授权文件,以及《出版物经营许可证》
1.3 资费标准
一、费率收取标准及办法
商户使用商户功能和微信支付服务时,需按照腾讯规定的标准交纳微信支付手续费。费率及收费方式在商户签署的《微信公众平台商户功能服务协议》及《微信支付服务协议》中作具体约定。
二、微信风险保证金收取标准及办法
为了更好地向微信用户提供服务、规范商户管理,你需要按照合同约定缴纳一定金额的风险保证金,商户通过财付通账户缴纳微信风险保证金,保证金将被冻结在商户财付通账户中,合作结束后解冻。
三、首期开放类目及对应微信微信风险保证金、费率、结算周期
化妆品/个人护理
汽车及配件
整车预订/汽配
母婴服饰和用品
实体店餐饮
1.4 常见商户接入问题
1、我公司售卖商品/服务在经营类目中找不到对应的,怎么办?
基于平台风险管理,首期仅开放部分类目,后续将逐渐增加更多可接入类目,欢迎更多商户接入微信支付功能,敬请期待。
2、我提交完申请资料之后一直没有通过审核,为什么?
在收到你提交的申请资料之后,微信审核团队会在7个工作日以内给你审核结果。若审核被驳回,你可登录公众平台查看驳回原因,请你尽快根据驳回原因调整填写内容,并再次提交,微信审核团队将继续为你审核。
3、个人可以申请微信支付吗?
暂不接受个人申请微信支付功能。
4、交纳的微信风险保证金、支付手续费,会否开具发票或收据吗?
会开具支付手续费发票,不会开具微信风险保证金发票,因微信风险保证金是存放于商户自己的财付通账户中的,处于冻结状态,腾讯没有收到此款项,所以不会提供保证金发票或收据。
5、没有公众号,如何申请APP支付权限?
答:微信将在近期开放微信App支付功能申请。届时,没有开通公众号的APP开发者可在
2. 支付功能介绍
2.1 方案简介
微信支付,是当下体验最为顺畅、安全的移动支付解决方案。
以微信支付为核心功能,我们提供用户身份识别、微信地址共享、支付结算、客户关系维护、售后维权、交易统计的整套移动购物解决方案。
注意:只有商户完成维权功能、告警接口、发货接口的接入,系统自动检测后才可开通全网功能;
2.2 应用场景
商户通过图文消息、自定义菜单、关键字回复等方式向订阅用户推送商品消息,用户可在微信公众号中完成选购、填写收货地址、支付的流程。
商户也可以把商品网页生成二维码,发布在线下和线上的媒体,如车站、楼宇广告以及web广告。 用户用微信扫一扫后可打开商品详情,在微信中直接购买。
2.2.1 网页内购买场景—JS API支付接口
2.2.1.1 公众号内专卖店
在公众号内放置商品信息入口,利用自定义菜单、关键字回复和CallBack接口下发商品信息,用户可在微信公众号中完成商品选择、填写收货地址、支付的流程。通过微信OpenID可实现用户免注册免登录的效果。
全流程如下图所示:
各环节解析:
1. 在公众号中,设置微信专卖店菜单
对应接口:
2. 微信自动登录
对应接口:&
用户无需手动登录,自动获取用户微信OPENID身份
3. 微信地址
对应接口:
微信地址可以节省用户的填写地址的时间,有效提高购买转化率
4. 微信支付
对应接口:
最快捷安全的移动支付体验
2.2.1.2 微信扫购模式
相比于公众号内专卖店,微信扫购模式赋予商户更多的自主营销渠道,流量不仅仅限于公众号的关注用户,可拓展到线上线下最为广大的用户群体。
商户可把商品信息和二维码铺到线上、线下,每一个平面都可以成为你的自动销售渠道。
2.2.2 扫码支付场景—Native(原生)支付接口
与网页内支付场景不同,部分商户不需要经过网页选购,可以直接扫码支付购买。
步骤(1):左图,商户根据微信支付的规则,为不同商品生成不同的二维码,张贴在各种场景,便于用户扫描购买。
步骤(2):右图,用户使用微信扫描二维码后,获取商品信息,同时到商户后台下单。
步骤(3):左图,用户开始支付,输入支付密码。
步骤(4):右图,支付成功,商户后台得到通知,进行发货处理。
2.2.3 共享收货地址
收货地址共享,是指可在微信中,调用微信的地址组件,此地址首次调用需用户授权,可在不同网页中共享使用,地址数据会传递到商户后台。
步骤(1):左图,新用户进入网页,没有获取到收货地址。
步骤(2):右图,点击新增收货地址,进入微信地址控件,填写地址,商户可获得此数据。
步骤(3):左图,对于已有地址的用户,进入网页时可以快速选择,并填上,完成购买流程,而且地址数据作为用户属性,长久保存。
步骤(4):右图,点击收货地址,可以新增、删除或者编辑地址,所有流程在客户端界面完成,数据会同步到云端。
2.2.4 接入用户维权系统
用户在公众号内支付购买行为出现异常时,通常会投诉到腾讯客服,因此微信侧需要即时了解公众号与用户交易的详情。同时,为了最快效率的解决用户的问题,微信作为连接用户和商户的桥梁,会通过此维权系统即时将问题同步给商户,并将解决结果反馈至用户。
所有获得商户功能(微信支付)的公众号必须接入用户维权系统。
基本交互如下:
2.2.5 APP支付
微信APP支付,可以让手机APP直接调用微信支付,整个过程非常顺畅,可有效提高购买转化率,养成用户重复购买习惯。
申请时,请在公众平台勾选APP支付,并填写第三方应用的APPID,如下图:
微信APP支付后期也会在
上开放申请入口,敬请期待。
2.3 商户模块
申请支付权限后,可以
使用商户模块功能,查看交易相关的统计数据,也可使用财付通的商户号,
,查看订单流水,进行退款、下载对账单等操作。
2.3.1 商品消息推广
商品消息,是特殊类型的图文消息,用户打开后跳转到商户网站的商品详情页,不经过公众平台中间页。商户可以通过群发、实时回复、自动回复等方式,把商品消息下发给用户。
2.3.2 订单流水
『订单流水』可以汇总了一定周期内商户交易的流水情况,数据包括订单信息,金额,买家,渠道来源等等。商户也可以从订单中直接向买家发起对话。
2.3.3 登录财付通企业版
开通商户功能后,会分配商户一个财付通商户号(PartnerID),可以
管理资金和进行退款、下载对账单等操作。
2.3.4 支付测试
商户在获得支付权限后,此时处于支付测试状态,只有白名单内的用户可以在微信客户端上使用支付功能,此时需要在“支付测试”模块中添加白名单。在各项准备工作完成后,可发起发布申请,申请通过后商户的支付功能才能被全量用户使用。
2.4 功能接口
以下是商户可能用到的功能和接口,可根据商户的业务定制开通:
用户身份识别
即Oauth2.0用户授权接口,商户可通过该接口得到每一个用户加密且唯一的openid,获取用户的相关信息,进而识别用户身份,记录用户消费行为,提供更好的服务。
选择以下至少一种的支付方式:
1. JS API支付:通过浏览器点击或者扫描二维码打开的商品详情网页内,选购商品后,调用客户端的微信支付功能;
2. Native(原生)支付:可直接通过扫描二维码,进入原生购买页面,适用没有选购流程的支付场景。
完成三项支付资料审核
支付相关接口
提供支付订单查询、退款、对账单下载等接口,辅助商户完成支付流程;同时,商户必须接入发货通知接口,每笔交易均同步发货状态到微信。
完成三项支付资料审核
共享收货地址
用户在下单网页内填写过地址,将保存到微信支付平台,商户可共享用户在微信原生控件中填写过的地址,实现自动填写,可增加和编辑。
基本资料填写勾选且完成三项支付资料审核
购买后发货
用户下单后,商户必须在规定时间内发货,并使用发货通知接口,将发货信息传递给微信后台。如果发货超时,将依据平台运营规则进行警告或处罚。
完成三项支付资料审核
处理用户投诉,有效地解决用户购买后发货掉单的投诉问题,微信侧会监控商户的经营情况。商户必须接入维权系统,才能上线支付等相关服务。
完成三项支付资料审核
微信后台检测到商户经营行为异常或服务不稳定,将通过告警接口将相关信息告知到商户。未来将可能包括发货超时告警、服务器异常告警、支付存在风险告警等。
完成三项支付资料审核
2.5 帐号体系
商户向微信公众平台提交企业信息以及银行账户资料,审核通过并签约后,可以获得以下帐户(包含财付通的相关支付资金账户),用于公众号支付。
公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看。
公众号支付请求中用于加密的密钥Key,可验证商户唯一身份,PaySignKey对应于支付场景中的appKey值。审核通过后,在微信发送的邮件中查看。
paySignKey
除了支付请求需要用到paySignKey,公众平台接口API的权限获取所需密钥Key,在使用所有公众平台API时,都需要先用它去换取access_token,然后再进行调用(详情参考文档API接口部分)。审核通过后,在微信发送的邮件中查看。
财付通商户身份的标识。审核通过后,在财付通发送的邮件中查看。
partnerKey
财付通商户权限密钥Key。审核通过后,在财付通发送的邮件中查看。
注:具体的帐号说明和使用场景,请参考《微信公众号支付接口文档》
2.6 商户系统对接
开通商户功能后,可按以下步骤完成商户和微信侧的对接,请商户仔细阅读以下部分:
1、生成商品消息:通过接口或者登录公众平台网站,根据商户网站的商品网页生成对应的消息,也可根据网页链接生成二维码;
2、商品推广:通过群发,自定菜单、关键字回复等方式,下发商品消息,也可把二维码张贴在车站、海报等线下的场景;
3、用户浏览:用户接收消息或者扫描二维码,即可打开商品网页,浏览商品详情;
4、用户下单:选购商品,可确认款式、数量和收货地址等信息,确认下单;
5、用户支付:商户调用微信支付功能,发起交易;用户确认交易信息,验证支付密码即可,支付成功,微信支付商户后台;
6、支付成功:用户看到支付成功的结果,通知商户后台,可更新订单状态,进行发货等相应操作;
7、发货通知:商户收到支付成功通知,发货后,需要通知微信后台,微信记录状态;
8、客服维权:客服系统即时将问题同步给商户,商户可以联系用户解决;
9、资金结算:按照规定的结算周期,系统结算资金到商户的银行账户,同时根据合同的费率收取支付服务费;
10、退款操作:商户使用分配的财付通商户号,登录财付通企业版(/)手动操作退款,也可以使用后台接口进行退款;
11、对账单下载:商户除了
手动下载订单流水,也可以使用后台接口下载订单对账。
注:退款和对账单下载的接口,请参考《财付通支付网关商户开发指南》。
2.7 行业案例
2.7.1 B2C行业
依托微信庞大的用户群、极致的用户体验,主流B2C纷纷对接微信支付,积极构建移动电商生态环境。
案例:一号店
案例:唯品会
案例:酒仙网
2.7.3 自动售卖机
结合传统的售卖机,用户选购商品后,扫码机器上的二维码,使用Native(原生)支付,快速购买。微信可提供支付帐号和硬件芯片的解决方案。
案例:友宝
2.8 常见支付功能问题
1、微信支付和财付通的关系?
答:微信支付是以绑定银行卡为基础的支付服务,由财付通提供支付牌照和银行通道的技术支持。用户使用微信支付绑定银行卡,和微信号对应QQ使用财付通的绑定无关。
同时,用户使用微信号对应QQ登录财付通,无法查看微信支付绑定的银行卡和对应的交易记录。
对于用户,主要认知的是微信支付品牌。对于商户,除了拥有微信公众号的商户身份,还会有微信公众平台分配一个财付通的商户号,用于结账收款。
2、微信支付如何绑定银行卡?如何支付?
答:用户首次支付时,输入银行卡号和持卡人信息,验证银行预留手机号,即可绑定。用户还会设置支付密码(非银行取款密码),后续购买不用再绑卡,验证支付密码即可直接支付。微信支付的绑定和支付流程,都是标准的快捷支付流程。
3、微信支付可以绑定的银行卡数量?
答:支持绑定13家银行,22个卡种的银行卡,包括储蓄卡和信用卡都可以。目前正在不断接入银行,覆盖范围会越来越大。
4、微信除了提供商户的支付接口,还有其他接口能力吗?
答:除了支付接口,微信还会提供订单查询、退款、退款查询、对账单下载等支付相关的接口,和财付通提供给商户的接口能力一样。不少商户担心退款和对账的接口,这些都是可以提供的。具体参考《财付通支付网关商户开发指南》。
5、微信支付的支付类型是?
答:微信支付使用的是B2C即时到账接口,暂不支持C2C的担保交易类型。
6、收货地址共享的地址格式是?
答:微信收货地址是基于三级的国标数据,地区对应是国标三级地区码,如“广东省-广州市-天河区”,对应的是510630。
7、微信支付的安全性如何保证?
答:有以下手段保证支付安全:
- 绑定银行卡需要验证实名信息和银行预留手机号;绑定银行卡后设置支付密码,交易需要验证此支付密码,大额支付还需要验证手机短信;
- 微信认证商户网页是安全的支付环境,会有微信安全支付的认证标题,提示用户;
- 支付后台有腾讯的大数据支撑,海量的数据和云端的计算能够及时判定用户的支付行为存在的风险性,如异地支付、非常用设备支付、QQ号被盗等情况,会分析和拦截异常支付行为;
- 7*24小时客户服务,加上微信客服,将及时为用户排忧解难;同时为微信支付开辟的专属客服通道,将以最快的速度响应用户的提出问题并做出处理判断;
8、接入微信支付,商户担心网页会被假冒和钓鱼?
答:微信会认证安全商户的网页,提示“微信安全支付”;不安全或者高风险的网页,微信会弹出中间页提示不安全,并拦截,未受安全认证的网页内填写相关帐号或者支付,也会提示有系统“网页内提示不要输入QQ密码或请勿支付”。
9、商户接入微信支付的成本高吗?
答:对于已有H5商城的商户接入JS API支付,前端页面上加微信支付按钮即可,支付成功后,后台接收通知发货;对于接入Native(原生)支付,商户后台增加一个下单接口,接收微信的下单请求即可。开发成本较低,不需要改变已有的流程。
10、商户使用微信支付需要有一个财付通商户号,能否使用已有的商户号?
答:由于支付权限和支付费率的差异,不能使用已有的财付通商户号,需要在微信公众平台重新申请开通。
& 2014,LBS观察员. 版权所有.LBS观景台登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
也许下边这些文章你也感兴趣
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致如何获微信公众账号的“开发者凭据”和微信菜单功能 - 微助手 - 微信公众平台(免费)定制开发
您当前的位置: &
& 如何获微信公众账号的“开发者凭据”和微信菜单功能
如何获微信公众账号的“开发者凭据”和微信菜单功能
所有的服务号,和已经“微信认证”的订阅号。才可以使用“微信自定义菜单”。微信认证就是你交给微信平台300块并且提供公司资料,微信平台会电话回访你,确认认证。如果你没经过这些,那你就没有经过微信认证。如果你不符合上面2种条件,你就没权利使用“自定义菜单”等其他功能,就算你拿到了appId和appSerect也没用,微信平台接口会果断的拒绝你。如果有疑问请咨询微信公众平台客服,这个不是微助手的问题,谢绝重复提问。首先登陆您的微信公众平台:然后按下图操作即可:找到开发者ID,如果AppSecret里面带*号,说明是保护了,请按下面操作获得完整的Appsecret:
上海鹏采网络科技有限公司 版权所有
微助手 【请使用火狐、谷歌或360极速浏览器】※任何未经授权使用本网站的行为都将违反《中华人民共和国著作权法》和其他法律法规以及有关国际公约的规定,我们将依法追究法律责任。[版权声明]& 有关于"" 的文章列表
微信公众号用户信息认证机制
& & 又有一段时间没动笔了,确实工作后忙碌起来了,年末了,给大家拜年了,抽了这个空档把最近做的一个东西分享分享。
& & 微信公众号,相信不少人已经有接触,其开发分为许多种,本次主要说的是,通过微信认证后的公众号(下图,),使用Oauth网页接口来获取用户信息的流程。
一、基础准备
& & 首先,明确需求:有一个应用服务器,希望通过某个链接(菜单)进入此应用,在应用服务器端可以获得访问者的一些信息。
& & 微信是不会直接让你在用户在访问应用服务器时直接取到用户信息的,而需要通过他们的专门的认证服务器来操作。作为开发者,目前有两类获取用户信息的方法,这里只介绍Oauth 2.0认证(其它还有一种CGI接口,是必须加了微信公众号关注后才可取到用户信息,而使用Oauth则可以不加关注也能取到),结合微信我整理了一个简单的流程:
& & 1、用户点开了某个菜单或者链接,进入到了我们的后台应用服务器(原始请求:URL_ORG);
& & 2、服务器发现没有用户认证信息(微信所谓的认证code,使用一次后失效),于是返回了一个rediret头给用户,并且让它去访问微信的认证服务器;
& & 3、用户的浏览器会去访问微信的认证服务器(用户会看到闪一下,这是重定向进行中);
https://open./connect/oauth2/authorize?appid=APPID&redirect_uri=URL_ORG&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
& & 4、如果用户授权(微信会询问,是否授权,如果加了关注的用户则不会询问,默认授权),则微信认证服务器会返回一个redirect头给用户,同时包含了认证code,让用户浏览器去访问原始请求的链接;
& & 5、这时用户的浏览器会带着code去访问我们的后台应用(此时还会再闪一下,重定向:URL_ORG?code=xxxxxx);
& & 6、应用服务器拿到了code还没有用,还得由应用服务器去向微信认证服务器取token(ACCESS_TOKEN,一段时间内有效),在取得token时还会返回用户的openId(OEPNID);
https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
& & 7、在取到token、openId后,再发起一次请求,取得用户的个人信息;
https://api./sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
& & 上面的过程,看起来非常复杂, 没错,有两次重定向!但是好处在于,用户访问的原始链接肯定是干净的,比如/xxx,微信那边的链接或菜单在设置时不需要变动。如果大家愿意去维护菜单的链接地址,也可以使用微信官方文档的方法,省去上面的第1、2步,直接把原始链接设置为:微信认证接口地址+待回调原始地址,的模式,减少一次用户可感知的闪烁。
二、核心代码
& & 转java后,我也没时间去写成其它语言了,大家就看java代码吧,第一个地方,对应用服务器需求使用用户信息的url地址使用filter:
1 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletR
HttpServletResponse response = (HttpServletResponse) servletR
HttpSession session = request.getSession();
if (request != null) {
// 尝试公众号
Object openId = session.getAttribute(WxSession.WX_OPENID_KEY);
// 未完成认证
if (openId = null) {
String code = request.getParameter("code");
if (code != null) {
// 第二步,通过code换取access_token和OpenId
JSONObject ret = _authService.getAccessToken(code);
String token = ret.getString("access_token");
openId = ret.getString("openid");
// 第三步,拉取用户信息
ret = _authService.getExternalUserInfo(token, openId.toString());
String nickname = ret.getString("nickname");
// 存session
session.setAttribute(WxSession.WX_OPENID_KEY, openId);
session.setAttribute(WxSession.WX_USER_NAME_KEY, nickname);
// 第一步,获取code
response.sendRedirect(_authService.getExternalAuthUrl(request.getRequestURL().toString()));
filterChain.doFilter(servletRequest, servletResponse);
& & 上面的代码有注释,非常明白了,先看有没有code,没有code就重定向去取,取到后用户再来;当有code时,服务器自己去取token和openid,取到后再取任何用户信息(上面只取了用户昵称)。
& & 第二个地方,上面代码中的getExternalAuthUrl、getAccessToken、getExternalUserInfo三个方法:
* 跳转到OAuth登录页面,可有用户的详细信息
public String getExternalAuthUrl(String redirectUri) {
String encodeUrl = null;
encodeUrl = URLEncoder.encode(redirectUri, "UTF-8");
} catch (UnsupportedEncodingException e) {
_log.error(e);
String url = "https://open./connect/oauth2/authorize";
url += "?appid=" + Constant.Subscribe.AppId;
url += "&redirect_uri=" + encodeU
url += "&response_type=code";
url += "&scope=snsapi_userinfo";
url += "&state=123";
url += "#wechat_redirect";
* 获取OAuth的access_token,错误时返回null
public JSONObject getAccessToken(String code) {
String url = "https://api./sns/oauth2/access_token";
url += "?appid=" + Constant.Subscribe.AppId;
url += "&secret=" + Constant.Subscribe.AppS
url += "&code=" +
url += "&grant_type=authorization_code";
String responseStr = HttpInvork.getRequestWithoutHeader(url);
JSONObject json = JSONObject.fromObject(responseStr);
String access_token = json.getString("access_token");
if (StringUtils.isNotEmpty(access_token)) {
} catch (Exception e) {
_log.error(e);
return null;
* 获取OAuth微信用户信息,错误时返回null
public JSONObject getExternalUserInfo(String accessToken, String openId) {
String url = "https://api./sns/userinfo";
url += "?access_token=" + accessT
url += "&openid=" + openId;
url += "&lang=zh_CN";
String responseStr = HttpInvork.getRequestWithoutHeader(url);
return JSONObject.fromObject(responseStr);
} catch (Exception e) {
_log.error(e);
return null;
& & 第三个地方,上面的HttpInvork.getRequestWithoutHeader方法,我就不贴了,大家随便写/找个可以发送get请求的方法代替一下吧。
三、福利?
& & 大家不满足于Oauth?那我把CGI代码也贴出来吧。先还是说明一下:使用cgi方式时,openid还是跟前面的类似,scope可改为snsapi_base(不改也无所谓啦,还有一种openid获取方法前面没有说,就是向公众号发了消息,然后通过微信的公众平台的服务器配置绑定到了后台应用,通过解析后也可以取到openid),然后还是要token才能要用户信息,只是这里就不能用Oauth的token了,而是普通的cgi token,代码:
* 获取CGI的access_token,错误时返回null
public String getCgiAccessToken() {
String url = "https://api./cgi-bin/token?grant_type=client_credential";
url += "&appid=" + Constant.Subscribe.AppId;
url += "&secret=" + Constant.Subscribe.AppS
String responseStr = HttpInvork.getRequestWithoutHeader(url);
JSONObject json = JSONObject.fromObject(responseStr);
String access_token = json.getString("access_token");
if (StringUtils.isNotEmpty(access_token)) {
return access_
} catch (Exception e) {
_log.error(e);
return null;
* 通过CGI获取微信用户信息,错误时返回null
public JSONObject getCgiUserInfo(String accessToken, String openId) {
String url = "https://api./cgi-bin/user/info";
url += "?access_token=" + accessT
url += "&openid=" + openId;
url += "&lang=zh_CN";
String responseStr = HttpInvork.getRequestWithoutHeader(url);
return JSONObject.fromObject(responseStr);
} catch (Exception e) {
_log.error(e);
return null;
& & 说了好多,我建议是,大家申请一个实战演练演练,除了认证复杂了点,其它开发跟传统的web开发没啥太大区别了,微信JS-SDK都给你准备好了。过年快乐!
& & 转载请注明原址:/lekko/p/4288961.html&&

我要回帖

更多关于 appid验证出错 的文章

 

随机推荐