JAVA支付宝和微信(APP支付,提现,退款)
公共参数图表:
接口 |
需要参数 |
通知方式 |
支付宝APP支付 |
应用公钥,应用私钥 |
异步 |
支付宝APP提现 |
应用公钥,应用私钥,支付宝公钥 |
同步 |
支付宝APP退款 |
应用公钥,应用私钥,支付宝公钥 |
同步 |
微信APP支付 |
APPID,商户号,api_key 支付密钥 |
异步 |
微信APP提现 |
APPID,商户号,api_key 支付密钥,证书 |
同步 |
微信APP退款 |
APPID,商户号,api_key 支付密钥,证书 |
同步 |
一. 支付宝APP
1.因为我们公司是做APP开发,所以把APP为蓝本。
2.支付接口
(1)支付宝支付分三步,第一步设置公共参数;第二步支付代码;第三步回调代码;其实比较麻烦的是第一步设置公共参数,因为如果参数设置不正确会提示你网络繁忙等错误,让人摸不清头脑,支付宝官网有现成的支付代码和回调代码 ,所以参照文档把第二步和第三步完成;
(2)注意:我做支付前习惯性的会把参数重新设置一遍,因为代码问题不大的时候多半是配置公共参数的问题,APP支付宝支付需要的公共参数是应用公钥和应用私钥,分清楚应用公钥和应用私钥和支付宝公钥 ,支付的时候其实只需要应用公钥和应用私钥。支付宝提供专门的签名工具,让你设置应用公钥和私钥,设置完公钥和私钥后可以验证下公钥和私钥的一致性,使用签名工具匹配下。
2.提现接口
(1)提现接口使用应用公钥和应用私钥还有支付宝公钥,在配置参数时只需要配置应用私钥和支付宝公钥,提现接口的通知方式是同步通知,不需要添加回调地址;
(2)注意:提现需要注意的问题注意如果出现网络繁忙时一般是公共参数配置有问题,注意应用私钥和支付宝公钥是否配套;
(3)方式:提现其实就是单笔转账接口,根据支付宝商户号向用户的支付宝帐号转账,所以在提现时需要提供用户的支付宝账户,跟我们在使用支付宝一样,就算没有对方好友也可以转账,并且转账是不可逆的,意思就是如果转账错误那么系统是无法还原的。在支付宝中如果金额过大我们可以添加真实姓名验证,这个参数在转账接口中是可选参数,如果嫌麻烦可以不选,只传支付宝帐号也是可以的。
3.退款接口
(1)退款接口,在我们向支付宝支付时需要提交一个out_trade_no这个参数是我们在提交支付时向支付宝系统提交的订单号,用来标识该支付在我们系统是唯一的标识,但是在支付成功后支付宝会返回一个trade_no是支付宝为此次支付行为的唯一标识,在退款中两个订单号都可以作为退款订单的唯一标识来操作,二选一。
(2)注意:退款通知同步通知 ,退款金额不能大于支付金额,如果大于会出现错误,并且单笔转账需要申请功能,并且签约;
4.总结
(1)支付宝APP接口使用第一步需要创建APP应用 ;
(2)创建成功后申请支付功能和单笔转账功能;
(3)申请成功后配置应用公钥和应用私钥还有支付宝公钥;
(4)根据支付宝官方提供的demo配置公共参数和私有参数;
(5)调起支付接口,根据支付错误查看具体原因;
(6)如果找不到提议重新设置应用公钥和应用私钥还有支付宝公钥,并且要保证其匹配性;
(7)这里就不写我的代码了如果有不懂的可以联联系我Q1015357413 备注支付
二. 微信APP
1.微信支付
(1)微信支付需要填写公共参数商户号和APPID(你在开放平台申请的)还有api_key,APPKey其实在微信支付上其实并没有什么用处,所以你甚至可以不需要填写,根据微信支付官方提供的demo,把参数配置下直接调用就可以了;
(2)注意:下载demo时你会发现为什么我还是不知道怎么用截图说明下
点击下载指定demo
我下载的是javaDemo打开指定的压缩包
打开最关键的文件README.md这里面是支付和退款的demo示例
根据这个文件调用接口就可以了
(3)微信支付单位是以分的,就是你支付1块其实在参数填写时你需要填写100,最小单位是一分;
2.微信提现
(1)其实微信提现严格来说叫企业付款,企业付款,企业付款到客户的零钱中,需要参数商户号,apikey,appid,appKey,还有最重要的证书,证书是在商户平台下载的在提现时需要通过证书验证;
(2)注意:提现是有限制的
你登录商户平台你发现我为撒没有企业付款功能呢?不是没有而是你没有权限而已,所以只能耐心等待,等条件满足了在商户平台再申请功能吧。
提现时需要通过openid来实现功能,openid是微信用户对于应用来说在微信的唯一标识,这个标识有两种获取途径,第一是授权,第二是支付。微信授权后我们会获取到用户的openid,支付成功后也会返回给我们openid。所以两种方式自己选择一种比较简单的方式吧。
3.微信退款
(1)根据订单号退款同步通知跟支付宝类似,同步通知退款;
(2)注意:退款的依据支付订单号transaction_id和out_trade_no也是二选一,一个是微信内部的订单号一个是我们系统内部的订单号,根据二个任何一个都可以完成退款操作,退款成功后如果金额过大可以调用查询退款接口,查询退款操作是否完成。
三. 微信小程序
(1)微信小程序和APP接口调用的不同,只有支付步相同,因为在微信小程序支付时需要的参数是openid,openid是微信的唯一标识,可以在小程序使用小程序授权接口获取到这个openid,获取到openid调起支付;
(2)今天主要讲支付有关于小程序的问题下次博客进行分享。
四。总结
1.支付接口需要前端(APP,小程序)提供参数并且集成,提现和退款接口服务端可以直接完成操作,所以支付接口会随着APP支付和小程序支付有这不同的改变,殊途同归;
2.支付宝和微信的不同,从一个菜鸟的角度来看其实支付宝接口调用和微信接口调用来说,支付宝接口调用更省力和简单,微信接口稍微有点麻烦,但是在实现功能方式上其实各有千秋,支付宝通过公钥和私钥加密加密和解密实现接口调用,微信通过apikey和商户id还有证书还有APPid加密实现接口调用,我感觉其实其实两个支付方式都挺好的;
3.支付宝APP支付你创建完应用以后需要功能功能签约,然后应用上线才能在正式环境中测试(划重点),支付数据可以在支付宝商户平台查看;
4.微信APP支付需要先创建微信开放平台帐号,申请成功后需要申请APP应用,并且需要APP的包和唯一标识,来确定唯一的APP,申请完毕以后在商户平台中申请企业付款等功能;
5.如果你想要提现请保证你的开发帐号是企业帐号,否则个人帐号是没有办法进行企业退付款的;
6.支付宝应用创建完以后可以在任何APP中调起支付,微信支付只能在指定的APP中调起支付,各有好处和坏处。
本篇文章并没有贴有相关代码,代码已经在资源里可以下载
https://download.csdn.net/download/qq_37711237/11004296
如果对代码不理解的可以可以联系我Q1015357413 备注支付
JAVA支付宝和微信(APP支付,提现,退款)相关推荐
- java支付宝和微信app支付(服务端处理)
最近在接入支付宝和微信的app支付 , 之前因为大部分做的都是网页版的支付,没接触过app,这次把遇到的坑都记录下来. 首先 支付宝支付 https://openhome.alipay.com/pla ...
- Java微信APP支付-申请退款
前面已经讲过微信APP支付的统一下单.支付结果通知的接口开发,现在我们讲述一下申请退款的流程开发. 官方的API地址:https://pay.weixin.qq.com/wiki/doc/api/ap ...
- Java支付宝二维码支付和退款,微信二维码支付
在蚂蚁金服开发平台下载demo 打开 TradePayDemo 项目,里面的main可以直接运行,在配置文件zfbinfo.properties中改为自己支付宝的信息 # 支付宝网关名.partner ...
- [Swift]WKWebView拉起支付宝和微信APP支付
先在项目中导入AlipaySDK和WechatOpenSDK. 再对info.plist中LSApplicationQueriesSchemes添加alipay.weixin. 最后到代理方法中完成拦 ...
- java实现微信App支付
废话不多说,直接上代码,微信的小程序,公众号支付都大差不差,自行看文档修改参数即可. maven依赖: <dependency><groupId>com.github.wxpa ...
- 【微信支付】Java实现微信APP支付流程
前言 微信登录网页授权与APP授权 微信JSAPI支付 微信APP支付 微信APP和JSAPI退款 支付宝手机网站支付 支付宝APP支付 支付宝退款 以上我都放到个人公众号,搜一搜:JAVA大贼船,文 ...
- java app支付_java实现微信App支付
废话不多说,直接上代码,微信的小程序,公众号支付都大差不差,自行看文档修改参数即可. maven依赖: com.github.wxpay wxpay-sdk 0.0.3 application.yml ...
- JAVA微信APP支付接口整合
2019独角兽企业重金招聘Python工程师标准>>> 上次我们看到了支付宝的APP支付工具,那么这次就来封装封装微信的APP支付;如果已经清楚了支付宝的支付流程,那么微信支付也和它 ...
- 微信APP支付-Java后台实现
微信APP支付-Java后台实现 转自:http://blog.csdn.net/walle167/article/details/50957503 1 注册微信开放者平台 开发者平台地址:https ...
最新文章
- 史玉柱:10个企业管理智慧,成功的企业都这么做
- Elasticsearch使用
- linux自动下载ftp文件夹,Linux 下FTP定时执行批量下载文件
- 浅谈iOS 开发中的界面通信
- 【原创】StreamInsight查询系列(三)——基本查询操作之过滤
- Introduce Explaining Variable(引入解释性变量)
- 第六篇:如何学习C语言?
- django 1.8 官方文档翻译: 1-2-6 编写你的第一个Django应用,第6部分
- 【java】java 使用 jmap 工具 DebuggerException
- row number函数_窗口函数介绍及案例实战
- Python3 List sort(),sorted(),reverse()的使用及辨别
- 李氏第二法分析稳定性matlab,9-4李雅普诺夫稳定性分析2010.ppt
- BugKu-CTF(杂项misc)--YST的小游戏/easy_python
- 没比这更简单的了!安装PHP composer(windows环境)及简易使用
- toStdString()
- 服务器上的几U是什么意思
- BUAA_OO第三单元总结性博客作业——JML
- 青藤云安全获六千万A轮融资 自适应安全平台营收过千万
- 外包3年,吃透这三份Java程序员必刷的算法宝典后,已从13K涨到25K
- javascript之jQuery:一个轻松编写js的库