Java如何实现微信服务号的支付android 对接微信支付

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
java开发微信公众号支付.doc 7页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
java开发微信公众号支付
这篇文章主要给大家结合微信支付接口开发的实践,从获取用户授权到各主要接口的使用方法等方面介绍微信支付的关键点技术,有需要的小伙伴可以参考下
最近做了微信公众号支付的开发,由于是第一次做也摸索了几天的时间,也只是达到了实现功能的水平,并没有太多考虑到性能问题,所以这篇文章比较适合初学者。
微信公众号支付的总体其实很简单,大致就分为三步。第一步需要获取用户授权;第二步调用统一下单接口获取预支付id;第三步H5调起微信支付的内置的js。下面介绍具体每一步的开发流程。
一 首先要明确微信公众号支付属于网页版支付,所以相较于app的直接调取微信支付要多一步微信授权。也就是需要获取用户的openid。微信公众号使用的交易类型是JSAPI,所以统一下单接口的文档明确的写到
因此我们必须去获取openid,同时也可以处理一些我们需要的逻辑。获取用户授权有两种方式:1.scope=snsapi_2.scope=snsapi_userinfo.我使用的是snsapi_base
Scope为snsapi_base
connect/oauth2/authorize?appid=wx520c15f&redirect_uri=http%3A%2F%2Fchong.qq%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_4_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
Scope为snsapi_userinfo
connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame%2Foauth_response.www.visa158.comphp&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
微信的官方文档也有对各个参数的详细说明,我就关键的参数仔细的说明一下。首先appid就不多说了就是你微信公众号的appid固定写死的,redirect_uri这个参数是最重要的,这个地址是访问你处理的接口地址。你可以在这个链接上拼接上你所需要的参数,一般你是要把订单的金额传到这个接口里的,访问这个链接的时候微信会给你code你需要用它去获取openid,记得要对其进行urlencode处理。state参数可以理解为扩展字段,其他的参数都是固定写法就不在多做介绍了。下面是获取openid的代码片段。
//获取openId
HttpClientUtil util = HttpClientUtil.getInstance();
Map map = new HashMap();
map.put("appid", WxPayConfig.APPID);
map.put("secret", WxPayConfig.APPSECRET);
map.put("code", code);
map.put("grant_type", WxPayConfig.GRANT_TYPE);
String returnStr = util.doPostRetString("api.weixin.www.hunanwang.netsns/oauth2/access_token", null,map);
logger.info("returnStr:[" + returnStr + "]");
AccessToken at = JSON.parseObject(returnStr, AccessToken.class);
AccessToken.java
public class AccessToken {
private String access_
private String expires_
private String refresh_
public String getAccess_token() {
return access_
public void setAccess_token(String access_token) {
正在加载中,请稍后...Java基于微信公众号接口实现授权登录源码及原理分析Java基于微信公众号接口实现授权登录源码及原理分析匀商坏坏百家号微信公众号授权登录操作前提必须注册微信公众平台账号,注意的是订阅号不支持授权登录操作,因此对于个人开发者注册的订阅号是无法实现的,必须注册企业号的微信平台账号而具体注册流程就不详细介绍了,有什么疑问可去微信公众号平台查看具体的文档。接下来讲述一下具体的微信授权登录流程,打开微信开发文档官网(https://mp.weixin.qq.com/wiki),“微信网页开发”中找到“微信网页授权”,其中详细介绍了微信授权登录实现,如图:AppId和AppSecret参数见下图:网页授权流程分为四步:1、引导用户进入授权页面同意授权,获取code2、通过code换取网页授权access_token(与基础支持中的access_token不同)3、如果需要,开发者可以刷新网页授权access_token,避免过期4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)步骤一:首先需要获取code,具体发送链接如下:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect其中参数appid、redirect_uri、response_type、scope、state,具体说明如下图:注意:当scope为snsapi_base(静默授权),就不会弹出授权页面;而scope为snsapi_userinfo(手动授权)时,是弹出授权页面的,可以获取用户的相关信息。微信授权有两种网页授权方式第一种静默授权:不会给登录用户任何提示直接返回用户code,但如果登录用户存在关注公众号的情况下,无法拿到登录用户的全部信息以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)第二种手动授权:弹出授权页面,登录用户点击确定后可获取登录用户的信息以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。参考案例:静默授权https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect手动授权https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect步骤二:通过code值获取网页授权access_token票据登录用户每次授权所携带的code都不一样,code只能使用一次,5分钟自动过期。https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code其中参数appid、secret、code、grant_type,具体说明如下图:步骤三:刷新access_token(如果需要)由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。步骤四:拉取用户信息(需scope为snsapi_userinfo)获取用户信息网页授权作用域为snsapi_userinfo,此时开发者可以通过access_token和openid获取用户信息。具体链接如下:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN其中参数access_token、openid、lang,具体说明如下图:本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。匀商坏坏百家号最近更新:简介:坏坏不坏,还原真实的互联网精彩。作者最新文章相关文章10:10 提问
JAVA 集成微信公众号的支付功能 JSAPI
第一次做微信公众号开发,感觉好坑,从获取用户信息就花了我两周的时间,已搞定,虽然似懂非懂.现在这个微信支付网上没有看到好的项目实战或者好一点的能理清思路的代码,请问,哪位大神能找办法帮我解决?
按赞数排序
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!
文档中心不是有java 的sdk么
基本功能框架都完成了
你直接down 下来先试试呗
然后对照着文档针对问题改吧改吧 就行了
微信确实蛮多坑的
我当时做的时候
参数顺序问题
加不加引号
开放平台上设置的安全域名什么的 都会造成签名失败
你开发的时候注意下就好了
关键时刻还得靠自己
慢慢来吧少年
我说的是JSAPI,不是APP支付
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐JavaWeb项目对接微信扫码支付 - 简书
JavaWeb项目对接微信扫码支付
项目地址:
当我接到对接微信支付的开发任务时,我的第一反应是查看官方文档,但是官方文档并不是十分简洁易读(可能是我能力有限),且可能由于开发者习惯不同或业务场景不同,造成了不同接口的对接形式,文档说明有不小的差异。所以我决定在github以及各大博客站搜索有用资源,遗憾的是,耗费了些许时间后并没有找到可靠的内容~于是只有回过头来继续钻研文档,并不断调试,官方文档与官方所提供的java demo代码也有些许偏差,不同接口的命名、对接形式不同,没有统一的规范,都无疑加长了完成此项任务的工作时间。在完成了开发任务后,决定整理此篇文章,为有同样需求的开发者提供一个可靠便利的对接说明,并封装了工具包。
我能协助你完成什么?
如果你有一个java项目想要对接微信的扫码支付功能,请留步~
需要先说一下的是,微信支付接口仅对企业公众号开放,个人用户请绕行~
微信支付官方开发文档及JavaDemo下载地址(请先不要打开它~继续看我的描述):
上面链接里的官方文档及Java版Demo很感人,如果你认为自己逻辑思维能力很强并且有时间钻研,可以去了解,但还是建议你先看完这篇介绍再做决定
为了让你更快的实现开发功能,完成相关开发进度,本项目对 “JavaWeb项目对接微信扫码支付 ” 应用场景相关功能进行了简单封装实现
代码结构简单清晰易用,几个.java文件加上篇说明快速帮你理清头绪
当然了,本项目关注点在于开发,对于微信公众号申请、公众号申请对接支付接口等事情留给产品or商务小姐姐
代码里有啥功能?
针对“java对接微信扫码支付”场景,本项目包含功能入下:
统一下单接口
查询订单接口
关闭订单接口
退款申请接口
退款查询接口
统一下单回调Servlet简单实现
退款申请回调Servlet简单实现
业务流程:
调用[统一下单接口]获得同步返回数据中的二维码连接
调用第三方库将二维码连接转换二维码,展示二维码(这可能需要页面实现,本文仅关注后台接口实现)
微信系统回调[统一下单回调Servlet]设定的url地址,通知你进度信息
回调url在统一下单接口请求的参数中设定
当然,扫码支付前,你可以调用[关闭订单接口]将订单提前终止
也可以随时调用[查询订单接口]看看订单信息
付款成功后,可以调用[退款申请接口]申请退款,同步返回数据中会告诉你是否成功,成功的话,说明微信系统成功接到了你的申请,但此时,实际状态为“退款中”
当退款有进度更新时,微信系统回调[退款申请回调Servlet]设定的url地址,通知你进度信息
回到url在微信商户平台设定:交易中心--&交易管理--&退款配置--&通知URL
当然,你可以通过调用[退款查询接口]自行查看退款情况
如果需要开发,你需要准备什么
Clone本项目,
理解一下代码,相信我这并不难
Const.java 常量类,定义了一些参数,当然可以根据你自己的系统,将这些参数放到数据库中,并舍弃这个类
WXPayConfigImpl.java 配置实现类,针对官方提供配置接口进行实现,如果你将Const.java中的参数放到了数据库中,你需要调整这个类,当前为单例模式实现,否则可能导致更改数据库参数配置不会生效的问题。
WXPaySender.java 请求接口封装类,通过这个类的实例,可调用功能中的所有接口,不包含回调sevlet
WXPayTradeReciver.java 统一下单回调Servlet的简单实现
WXPayRefundReciver.java 退款申请回到Servlet的简单实现
Servlet的简单实现仅仅是对收到的数据做了打印,这时有人会想,既然功能相同为什么要写两个servlet,原因如下
统一下单的回调,地址是在统一下单请求时参数中指定,返回信息不加密
退款申请的回调,地址是在商户平台中配置,返回信息需要解密
你需要商务人员提供如下信息(作为接口调用的参数),如果你是商务兼开发,非常nice,括号里给出了稍微详细的获得方式
微信支付商户号(登录微信商户平台--&账户中心--&商户信息--&基本账户信息--&微信支付商户号)
公众号APPID(在微信公众平台中,应该不难找~)
API秘钥(登录微信商户平台--&账户中心--&API安全--&API密钥--&设置API密钥)
证书文件(登录微信商户平台--&账户中心--&API安全--&API证书--&下载证书,包中有一个.p12文件,那就是你需要的)
为了便于调试更改,将代码直接copy到你的项目中某包下即可,项目引用了微信支付SDK的jar包,如果你不是maven项目,webapp/lib下给你准备了jar包,你也可以自己下载
打开Const.java,根据上一步你获得的信息,配置调用常量,值得注意的是
参照src/test/java/TestSender.java发起统一下单、关闭订单等功能
实例中没有封装使用沙箱环境发起交易,而使用的真实交易
原因为微信官方文档中没有任何沙箱环境的使用说明,Java的demo中若隐若现有相关操作,但沙箱环境各种不正常报错让人崩溃,无力吐槽~
不要担心,真实交易设置每次一分钱,且可以退款~
类似的可以自己调用其他接口,只需要一个WXPaySender实例即可
具体接口的输入输出参数说明,可以参考WXPaySender类中的注释~~~
由于本人技术有限,代码或文档有不足之处敬请提出建议~
使用中有任何问题,可以与我联系
Java工程师 AI爱好者
关于微信支付 生活中的微信支付 目前我们日常生活中接触得比较多的线上电子支付方式主要有两种,一种是支付宝,另一种就是微信支付了,微信支付是集成在微信客户端的支付功能,所谓微信客户端,主要是微信的移动应用,例如安卓(Android)微信APP、IOS微信APP,用户可以通过手...
互联网有个说法,好的产品会说话,API 接口是一种特殊的产品,主要服务于 B 端企业,是一种典型的 B2B 服务模式。通常通过可配置的开放平台对外提供,设计一款好的 API 接口产品,需要有客户意识,要以服务客户、为客户带来便利、减少客户的对接成本、提高客户对接效率为目标,...
微信支付文档 1.微信支付简介 a)功能简介 b)支付账户 c)支付方式 d)账号测试 2.JS API支付接口 a)支付场景 b)功能交互 c)获取当前微信版本号 d)显示微信安全支付标题 e)JS API支付接口(getBrandWCPayRequest)定义 f)订单...
最近项目上用到了调用WX和ZFB的第三方支付接口,因为以前没用过,所以这次用到了之后总结一下分享给大家,这里介绍两种支付方式,即app支付和扫码支付方式。 一、app支付(这里只介绍java端调用支付,安卓或ios端自己参考相关的调用文档) 首先可以看一看项目支付流程(图解...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
1. 练习听力和口语 做听写,校对自己的听写。所用的材料:voa新闻,CNN视频。 要做到生活在硅谷,而不是生活在华人圈。日常听美国人的新闻。坚持写下英文的文字和邮件。学会用英文来表达自己的思想。 2. 编程和面试技巧训练 刷题方法的改进。码农都知道湾区找工作需要认真刷题。...
申请苹果开发者证书流程(1)
2016亚洲最佳餐厅第一名 泰国曼谷餐厅Gaggan。再次登顶亚洲最佳餐厅。 主厨 Gaggan Anand 运用分子料理手法,重新诠释印度风味,每一道菜都在食客口中爆发出惊人的味觉层次。同时,Gaggan在世界50佳餐厅排行榜中,排名第十。 该餐厅由主厨gaggan an...你似乎来到了没有知识存在的荒原...
来源链接是否正确?用户、话题或问题是否存在?

我要回帖

更多关于 微信支付接口对接 的文章

 

随机推荐