首先当然是将支付宝封装好的接口的jar包导入到项目当中,文件地址
http://download.csdn.net/detail/chenyidong521/9878819

支付宝提供了沙箱模式,可以在开发的时候通过假的账号密码来进行测试,这点比微信好多了。并且支付宝的支付接口使用起来比微信简单很多。这纯属个人感觉,还希望有人能指点微信支付的接口的时候。

支付宝支付前期配置

下面我们到支付宝的支付接口网站https://openhome.alipay.com/
登陆后点击首页可以看到如下

点击左面的加号看到弹出下面
可以看到有沙箱应用,沙箱账号,沙箱工具。接下来的测试都是使用沙箱 来完成的,点击加号添加到自己的工具中。
然后点击沙箱应用,在跳转的页面申请沙箱应用,具体细节按照提示完成即可 ,沙箱应用页面申请完成之后填写相应的数据

只需要填写必看部分即可,填写RSA2就不用填写RSA了 填写的数据需要我们使用一个工具来完成,也是支付宝提供的,在上面的链接中都有。

使用bat文件打开工具

按照图中的样式选中,然后点击生成密钥,密钥分成公钥和私钥。
这里的公钥是在支付宝网站中设置应用使用,密钥是在我们java程序中配置支付参数的时候使用,所以都要保留。
上面生成的公钥我们复制下来
RSA2(SHA256)密钥(推荐)

点击查看应用公钥,将用具生成的应用公钥粘贴进去

完成后,页面中的查看支付宝公钥也会自动生成,在后面会使用。
然后就配置完成了。现在我们在点击页面左侧菜单中的沙箱账号,

可以看到给了我们一个商家账号,一个买家账号。下面的所有支付过程都要使用这两个账号来完成。到此网站上的设置就完成了。

java程序中进行开发

将jar包导入到项目中后,我们需要创建一个配置类

package com.yssoft.fs.supervise.web.test;import org.springframework.stereotype.Component;import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;/*** 支付配置类* @author cheny**/
@Component
public class TestPayConfiguration {/** API调用客户端 */private static AlipayClient alipayClient;public static AlipayClient success(){//服务地址测试都使用这个不用改String serverUrl="https://openapi.alipaydev.com/gateway.do";//appId需要申请,在我们上面中有说到申请应用,String appId="2016080700185726";//企业的密钥String privateKey="就是我们上面使用工具生成的密钥";//数据传输方式String format="json";//编码形式String charset="utf-8";//支付宝公钥String alipayPulicKey="配置完成公钥后生成的支付宝公钥";//编码方式String signType="RSA2";//初始化方法if(alipayClient==null){alipayClient = new DefaultAlipayClient(serverUrl, appId, privateKey, format, charset, alipayPulicKey, signType);}return alipayClient;}}

配置类是进行初始化支付宝接口的。当我们要进行支付的时候,就先调用类中的success方法得到AlipayClient对象,然后使用他来和支付宝通信 。
支付具体操作的流程如下
这个类中使用了手机端html网站支付,pc端html网站支付,还有商家向客户转账的支付三种。可以访问相应的方法来完成支付。

package com.yssoft.fs.supervise.web.test;import java.io.IOException;import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;/*** 支付处理控制器* @author cheny**/
@Controller
@RequestMapping("/pay")
public class TestController {@Resourceprivate TestPayConfiguration testPayConfiguration;@RequestMapping("/test1")public String test1(){return "test/testPay";}/*** pc端付款* @param httpRequest* @param httpResponse* @throws ServletException* @throws IOException* @throws AlipayApiException*/@RequestMapping("/testPay")public void pcPay(HttpServletRequest httpRequest,  HttpServletResponse httpResponse) throws ServletException, IOException, AlipayApiException {AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的requestalipayRequest.setReturnUrl("http://chenyidong.tunnel.2bdata.com/return_url.jsp");//成功后跳转的页面alipayRequest.setNotifyUrl("http://chenyidong.tunnel.2bdata.com/notify_url.jsp");//在公共参数中设置回跳和通知地址String wiDout_trade_no=httpRequest.getParameter("WIDout_trade_no");String WIDsubject=httpRequest.getParameter("WIDsubject");String WIDbody=httpRequest.getParameter("WIDbody");String WIDtotal_amount=httpRequest.getParameter("WIDtotal_amount");     //参数可以通过前台页面传递过来然后拼接到字符串中。alipayRequest.setBizContent("{" +"    \"out_trade_no\":\""+wiDout_trade_no+"\"," +"    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +"    \"total_amount\":"+WIDtotal_amount+"," +"    \"subject\":\""+WIDsubject+"\"," +"    \"body\":\""+WIDbody+"\"," +"    \"timeout_express\":\"90m\"," +"    \"enable_pay_channels\":\"balance,pcredit,moneyFund,pcreditpayInstallment,bankPay\"," +//  "    \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +"    \"extend_params\":{" +"    \"sys_service_provider_id\":\"2088102170303061\"" +"    }"+"  }");//填充业务参数String form="";form =TestPayConfiguration.success().pageExecute(alipayRequest).getBody(); //调用SDK生成表单httpResponse.setContentType("text/html;charset=utf-8");httpResponse.getWriter().print(form);//直接将完整的表单html输出到页面}/*** 手机端支付* @param httpRequest* @param httpResponse* @throws ServletException* @throws IOException*/@RequestMapping("/phonePay")public void phonePay(HttpServletRequest httpRequest,  HttpServletResponse httpResponse) throws ServletException, IOException {AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的requestalipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址String wiDout_trade_no=httpRequest.getParameter("WIDout_trade_no");String WIDsubject=httpRequest.getParameter("WIDsubject");String WIDbody=httpRequest.getParameter("WIDbody");String WIDtotal_amount=httpRequest.getParameter("WIDtotal_amount");alipayRequest.setBizContent("{" +"    \"out_trade_no\":\"20150320010101002\"," +"    \"total_amount\":\"88.88\"," +"    \"subject\":\"Iphone6 16G\"," +"    \"product_code\":\"QUICK_WAP_PAY\"" +"  }");//填充业务参数alipayRequest.setBizContent("{" +"    \"out_trade_no\":\""+wiDout_trade_no+"\"," +"    \"product_code\":\"QUICK_WAP_PAY\"," +"    \"total_amount\":"+WIDtotal_amount+"," +"    \"subject\":\""+WIDsubject+"\"," +"    \"body\":\""+WIDbody+"\"," +"    \"timeout_express\":\"90m\"," +"    \"extend_params\":{" +"    \"sys_service_provider_id\":\"2088102170303061\"" +"    }"+"  }");//填充业务参数String form="";try {form = TestPayConfiguration.success().pageExecute(alipayRequest).getBody(); //调用SDK生成表单} catch (AlipayApiException e) {e.printStackTrace();}httpResponse.setContentType("text/html;charset=utf-8");httpResponse.getWriter().print(form);//直接将完整的表单html输出到页面}/*** 将钱转入商家账户* @throws AlipayApiException*/@RequestMapping("/querenshouhuo")public void querenshouhuo() throws AlipayApiException{AlipayClient alipayClient = TestPayConfiguration.success();AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();request.setBizContent("{" +"    \"out_biz_no\":\"31423214231\"," +"    \"payee_type\":\"ALIPAY_LOGONID\"," +"    \"payee_account\":\"shgtxv6441@sandbox.com\"," +//收款方账号"    \"amount\":\"10000\"," +"    \"payer_show_name\":\"买家收货\"," + "    \"payee_real_name\":\"沙箱环境\"," + //收款方账号名称"    \"remark\":\"转账备注\"," +"  }");AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);if(response.isSuccess()){System.out.println("调用成功");System.out.println(response.getBody());} else {System.out.println("调用失败");}}}

到此支付宝的支付就完成了,如有哪里不好,希望还能大家能补足
demo地址 http://download.csdn.net/download/chenyidong521/10132809

支付宝支付接口的使用相关推荐

  1. python调用支付宝支付接口详细示例—附带Django demo代码

    项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...

  2. php编程之如何调用支付宝支付接口的实现

    对于任何一款软件来说,支付功能都是核心的,那么目前的主流支付接口主要是支付宝.微信和银联卡,而大多数开发技术人员对于如何调用支付宝的支付接口还存在很大的困扰,今天就来跟大家分享一下如何正确调用支付宝支 ...

  3. php支付宝接口参数错误,php支付接口_php支付宝支付接口程序及参数详解

    摘要 腾兴网为您分享:php支付宝支付接口程序及参数详解,作业盒子,智能互联,智联招聘,小番茄等软件知识,以及雷电游戏中心,天气预报软件,live电视直播,otcbtc,手机街机,lq-630k驱动 ...

  4. java 调用支付宝支付接口

    最近公司在做支付模块,在接入过程中遇到了很多坑,费了不少事,现在分享一下接入方法,也记录一下,以后可能还用的到.用的是支付宝的即时到帐支付功能和微信的扫码支付功能,相比起来,个人感觉支付宝的文档和接入 ...

  5. 支付宝官方支付接口申请配置教程(如何开通支付宝支付接口)

    支付宝官方支付接口申请配置教程(如何开通支付宝支付接口) 支付产品开通(当面付.手机网站支付.电脑网站支付等) 注册登录支付宝(企业或个体户资质) Alipay 登录[支付宝商家] https://b ...

  6. java后台实现支付宝支付接口、支付宝订单查询接口 前端为APP

    最近项目APP需要接入微信.支付宝支付功能,在分配开发任务时,听说微信支付接口比支付宝支付接口要难实现,由于我开发经验不是那么丰富(现工作经验1年半)且未接触过支付接口开发,组里刚好又有支付接口的老司 ...

  7. 支付宝支付接口调用实现支付功能

    支付宝支付接口调用实现支付功能 支付宝支付 (沙箱版) 1.进入支付宝开发者平台(https://open.alipay.com/platform/home.htm) 2.进入沙箱研发服用应用 3.设 ...

  8. 微信/支付宝支付接口申请

    支付宝支付接口: 支付宝即时到账收款申请:https://b.alipay.com/order/productIndex.htm 注意事项: a.申请的支付宝商家服务必须要是[即时到帐] 登录支付宝商 ...

  9. python 支付宝接口_python调用支付宝支付接口流程

    项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...

  10. PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

    PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,接下来跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试 ...

最新文章

  1. SQL Server中一些常见的性能问题
  2. 工程狮爸爸如何准备儿童节礼物?
  3. jsp前3章试题分析
  4. 一次性通过软考网工方案
  5. aws php 上传文件 限制大小_如何压缩PDF文件大小,满足各种上传大小要求
  6. Ubuntu10.04制作官方源镜像以及搭建本地源
  7. Linux笔记-centos安装elasticsearch7版本
  8. 【JAVA 第三章 流程控制语句】课后习题 键入日期输入星期几
  9. 解决安装CMake报错:Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly.
  10. 美轮美奂渐变炫彩海报素材,荣盛回来!
  11. [MySQL FAQ]系列 -- 新年新思想:MySQL也能并发导入数据
  12. HanLP词性标注集
  13. 使用 Keras搭建一个深度卷积神经网络来识别 c验证码
  14. lintcode:Number of Islands 岛屿的个数
  15. 《剑指offer》面试题60——把二叉树打印成多行(C++)
  16. abp 应用层异常处理(自动控制器中)
  17. AltiumDesigner多通道复用设计教程(亲测可行版本)
  18. torch.cuda.amp.GradScaler(enabled=CFG.apex)是什么意思?
  19. MyBatis - 官方网址
  20. 中国土地市场网landchina.com数据采集心得

热门文章

  1. 2019,一年一度的高考季来临,作文又成热门话题
  2. 如何在visio里将图形进行任意角度旋转
  3. windows服务器迁到_windows服务器搬迁指南
  4. 微服务可用性设计(二):过载保护,限流
  5. NBAapi完全免费啦!
  6. 使用tayga测试无状态nat64功能
  7. IAR环境下的STM32H750片外QSPI Flash下载仿真
  8. veeam备份oracle数据库,实战veeam BR 10备份Oracle RAC 19c PDB容器数据库
  9. 用c语言编译频率求波长,频率与波长的换算公式(c=λv)
  10. 关于u盘文件或目录损坏且无法读取的解决方法