公共参数图表:
       接口
 
需要参数
 
通知方式
 
支付宝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支付,提现,退款)的更多相关文章

  1. 微信app支付android客户端以及.net服务端实现

    由于公司运营需要,需要在客户端(android/ios)增加微信以及支付宝支付,在调用微信app支付时遇到一些问题,也算是一些踩过的坑,记录下来 ,希望能对.net开发者服务端网站更快的集成微信app ...

  2. H5使用codovar插件实现微信支付(微信APP支付模式,前端)

    H5打包的app实现微信支付及支付宝支付,本章主要详解微信支付,支付宝支付请查看另一篇“H5使用codovar插件实现支付宝支付(支付宝APP支付模式,前端)” ps:本文只试用H5开发的,微信 AP ...

  3. Android版-微信APP支付

    首发地址: Android版-微信APP支付 欢迎留言.转发 微信极速开发系列文章(微信支付.授权获取用户信息等):点击这里 目录 1.注册账号.开发者认证 2.添加应用 3.申请微信支付 4.技术开 ...

  4. .Net后台实现微信APP支付

    上一节分享了微信小程序支付的后台,这一节来分享一下微信APP支付的后台.微信APP支付和微信小程序差别不大,微信APP支付后台不需要微信登录凭证.后台下单时交易类型(trade_type)不再是&qu ...

  5. 微信app支付 ci框架做的

    /**     * 组合微信app支付  获得prepayid     * @param int $order_num     */    private function _wxpay_reques ...

  6. .net 微信APP支付接口的开发流程以及坑

    流程 申请APP的微信支付 申请成功之后得到APPID 商户号 以及自己设置商户号的支付密码 这时就可以开发接口了 微信APP支付API:https://pay.weixin.qq.com/wiki/ ...

  7. php开发微信APP支付接口

    之前在开发APP中用到了微信支付,因为是第一次用,所以中途也遇到了好多问题,通过查看文档和搜集资料,终于完成了该功能的实现.在这里简单分享一下后台php接口的开发实例. 原文地址:代码汇个人博客 ht ...

  8. nodejs+koa2微信app支付,小程序支付

    企业付款到零钱文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2 1,搞微信支付,先看流程图 https: ...

  9. asp.net core 微信APP支付(扫码支付,H5支付,公众号支付,app支付)之4

    微信app支付需要以下参数,类封装如下 public class WxPayModel { /// <summary> /// 应用ID /// </summary> publ ...

随机推荐

  1. js,java时间处理

    1.JS获取时间格式为“yyyy-MM-dd HH:mm:ss”的字符串 function getTimeStr(){ var myDate = new Date(); var year = myDa ...

  2. RepBaseRepeatMaskerEdition下载 | RepeatMasker

    开源的生物信息世界居然有这么个需要注册才能下载的工具,开源世界不是怎么方便怎么来吗? 这个注册真的麻烦,这里上传了一个可以使用的版本. RepBaseRepeatMaskerEdition-20170 ...

  3. Building designing UVA - 11039

    先取正的和负的绝对值较小者为开头 .然后交替从正负数中取绝对值最小但比上一个大的. 证明: 1.开头选正负数中绝对值较小的:否则能再多放1个. 2.交替选的时候选最小的符合条件的:如果大的符合,换小的 ...

  4. 矩阵最优路线DP

    母题:矩阵中每个点有权值,每经过一个点就累加权值,求从a点到b点的最优(最大)路线. 题型1: 从左上到右下,只能向下或者向右 for 行 for 列 dp=max dp左,dp上; 扫一遍就行 有时 ...

  5. 04 爬虫数据存储之Mongodb

    MongoDB 认识MongoDB MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...

  6. Card Game Again CodeForces - 818E (双指针)

    大意: 给定序列, 求多少个区间积被k整除. 整除信息满足单调性, 显然双指针. 具体实现只需要考虑k的素数向量, 对每一维维护个指针即可. 这题看了下cf其他人的做法, 发现可以直接暴力, 若当前的 ...

  7. php并发

    bool flock ( int handle, int operation [, int &wouldblock] );flock() 操作的 handle 必须是一个已经打开的文件指针.o ...

  8. leetcode-algorithms-5 Longest Palindromic Substring

    leetcode-algorithms-5 Longest Palindromic Substring Given a string s, find the longest palindromic s ...

  9. 学习Spring Security OAuth认证(一)-授权码模式

    一.环境 spring boot+spring security+idea+maven+mybatis 主要是spring security 二.依赖 <dependency> <g ...

  10. CentOS是哪个版本 CentOS版本信息查看技巧

    root@MyMail ~ # uname Linux root@MyMail ~ # uname -r 2.6.18-164.el5 [root@localhost ~]# uname -a Lin ...