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中调起支付,各有好处和坏处。
JAVA支付宝和微信(APP支付,提现,退款)的更多相关文章
- 微信app支付android客户端以及.net服务端实现
由于公司运营需要,需要在客户端(android/ios)增加微信以及支付宝支付,在调用微信app支付时遇到一些问题,也算是一些踩过的坑,记录下来 ,希望能对.net开发者服务端网站更快的集成微信app ...
- H5使用codovar插件实现微信支付(微信APP支付模式,前端)
H5打包的app实现微信支付及支付宝支付,本章主要详解微信支付,支付宝支付请查看另一篇“H5使用codovar插件实现支付宝支付(支付宝APP支付模式,前端)” ps:本文只试用H5开发的,微信 AP ...
- Android版-微信APP支付
首发地址: Android版-微信APP支付 欢迎留言.转发 微信极速开发系列文章(微信支付.授权获取用户信息等):点击这里 目录 1.注册账号.开发者认证 2.添加应用 3.申请微信支付 4.技术开 ...
- .Net后台实现微信APP支付
上一节分享了微信小程序支付的后台,这一节来分享一下微信APP支付的后台.微信APP支付和微信小程序差别不大,微信APP支付后台不需要微信登录凭证.后台下单时交易类型(trade_type)不再是&qu ...
- 微信app支付 ci框架做的
/** * 组合微信app支付 获得prepayid * @param int $order_num */ private function _wxpay_reques ...
- .net 微信APP支付接口的开发流程以及坑
流程 申请APP的微信支付 申请成功之后得到APPID 商户号 以及自己设置商户号的支付密码 这时就可以开发接口了 微信APP支付API:https://pay.weixin.qq.com/wiki/ ...
- php开发微信APP支付接口
之前在开发APP中用到了微信支付,因为是第一次用,所以中途也遇到了好多问题,通过查看文档和搜集资料,终于完成了该功能的实现.在这里简单分享一下后台php接口的开发实例. 原文地址:代码汇个人博客 ht ...
- nodejs+koa2微信app支付,小程序支付
企业付款到零钱文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2 1,搞微信支付,先看流程图 https: ...
- asp.net core 微信APP支付(扫码支付,H5支付,公众号支付,app支付)之4
微信app支付需要以下参数,类封装如下 public class WxPayModel { /// <summary> /// 应用ID /// </summary> publ ...
随机推荐
- eclipse中svn项目重定向地址
有这种需求,一般是把项目提交到IP地址已经跟换的服务器,无法连接服务器再提交项目,比较着急. 我们看看怎么办: ② ③
- python3.5学习第一章
在python中,变量赋值或者其他语句后不需要加”:“ python中,缩进特别重要! 条件语句和循环语句,要加”:“ 一.变量赋值 name = "cecelia"name2 = ...
- Codeforces 797C - Minimal string
C. Minimal string 题目链接:http://codeforces.com/problemset/problem/797/C time limit per test 1 second m ...
- html5实现获取地理位置信息并定位
这里主要讲h5实现获取地理位置信息并定位功能,本文讲解了原生h5,百度地图,谷歌地图等三种获取地理信息并定位的方法,需要的朋友可以参考下: h5提供了地理位置功能(Geolocation API),能 ...
- C#动态代理
所谓代理,就是不直接访问目标对象,而是由中间对象生成一个目标代理类,由中间代理对象来代理目标对象的方法.Java里面有JDK和CGLIB代理.C#里面则使用Castle代理.nuget引用如下: &l ...
- python爬虫学习(二):定向爬虫例子-->使用BeautifulSoup爬取"软科中国最好大学排名-生源质量排名2018",并把结果写进txt文件
在正式爬取之前,先做一个试验,看一下爬取的数据对象的类型是如何转换为列表的: 写一个html文档: x.html<html><head><title>This is ...
- 日常英语---十一、MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider)
日常英语---十一.MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider) 一.总结 一句话总结:骑着鹰的快速飞行的恶魔,进入地图后跟着你. ...
- ubuntu14.04+MatlabR2014a+caffe
一.下载matlab 1 sudo mkdir /media/matlab 2 sudo mount -o loop [path]MATHWORKS_R2014A.iso /media/matlab ...
- CF1107E Vasya and Binary String
比赛的时候又被垃圾题艹翻了啊. 这个题显然是区间dp 考虑怎么转移. 类似消除方块和ZYB玩字符串那样的一个DP. 可以从左到右依次考虑消除. dp[l][r][k][flag]表示区间l,r左边粘着 ...
- 《完美应用ubuntu》之全面管理ubuntu软件源
2.全面管理ubuntu软件包 2.1 DEB软件包之间的基本关系: (1)软件仓库:由ubuntu软件包的维护者维护并公开发布的DEB软件包的集合:可位于网络,服务器,硬盘等各种存储介质. (2)软 ...