详解JAVA实现支付宝接口编程

来源:互联网 发布:家园2 网络不可用 编辑:程序博客网 时间:2024/05/16 18:15

//实现java支付宝很简单,只要从支付宝官方下载

http://help.alipay.com/support/index_sh.htm下载程序,配置一下参数就OK了; 

1.先到http://help.alipay.com/support/index_sh.htm下接口程序,右下角有个“接口资料下载”点击下载进入下载页面http://club.alipay.com/read.php?tid=9976972选择你要下载支付宝的接口类型;我是选择“支付宝即时到账收款接口”

2.解压以后,可以看到很多种版本语言的支付宝例子,选择你要的语言类型;这里我是选择的是“alipaydirect\alipaydirect\支付宝即时到帐接口\java\create_direct_pay_by_user_jsp_utf8”是UTR-8的程序; 

3.将项目导入到你的开发平台上,也就是myeclipse平台上,就可以看到项目的结构了。然后配置支付宝,作为测试的话这里只要修改一个文件就可以了,其他文件都不需要修改的,这个文件就是“AlipayConfig.java”里面的//

↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

// 合作身份者ID,以2088开头由16位纯数字组成的字符串

 

public static String partner = "";

 

// 交易安全检验码,由数字和字母组成的32位字符串

 

public static String key = "";

 

// 签约支付宝账号或卖家收款支付宝帐户

 

public static String seller_email = "";

 

// 支付宝服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数

 

// 必须保证其地址能够在互联网中访问的到

 

public static String notify_url = "http://www.xxx.cn/create_direct_pay_by_user_jsp_utf8/notify_url.jsp";

 

// 当前页面跳转后的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数

 

// 域名不能写成http://localhost/create_direct_pay_by_user_jsp_utf8/return_url.jsp ,否则会导致return_url执行无效

 

public static String return_url = "http://127.0.0.1:8080/create_direct_pay_by_user_jsp_utf8/return_url.jsp";

 

//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

 

4.然后开启服务器,运行index.jsp页面就可以看到效果了;

 

5.若需要了解具体得信息,在下载的文件里面有一个帮助文档PDF文件“支付宝即时到账接口集成教程.pdf”和“即时到账交易接口(create_direct_pay_by_user).pdf”;

 

在这个“alipaydirect\alipaydirect\支付宝即时到帐接口\java\create_direct_pay_by_user_jsp_utf8\”还有一个“readme.txt”帮助文件;仔细看一下帮助文档就可以明白的!


接下来用一点实例更加详细的解释一下:

1:拥有自己的支付宝企业账号。去产品商店选择适合自己的方案。并签约合同。

2:选择合适的商家收款产品并去签约。填写相应的信息


3:在商家服务会有PIDKEY是关键的东西。



4:选择自己签约的产品类型,下载对应的接口api与测试代码

  • 即时到账收款 --alipaydirect

  • 网银支付 --alipaydirect_bankpay_single

  • 担保交易收款 --alipaytescow

  • 双功能收款 --alipaydualfun

  • 快捷支付(无线) --WS_SECURE_PAY_SDK

  • 手机网站支付 --WS_WAP_PAYWAP

  • 扫码即时到账 --alipaymobileqrcode

  • 扫码担保交易 --alipaymobileqrcode

  • 批量付款到支付宝账户 --alipaytranspay

  • 快捷登录 --alipayfastlogin 

5:alipaydirect_bankpay_single 测试

在核心代码alipayconfig需要更改自己的partner和key


6:网银银行简码

网银银行简码


BOCB2C  中国银行ICBCB2C 中国工商银行ICBCBTB 中国工商银行(B2B)CMB       招商银行CCB          中国建设银行CCBBTB   中国建设银行(B2B)ABC           中国农业银行ABCBTB   中国农业银行(B2B)SPDB        上海浦东发展银行SPDBB2B 上海浦东发展银行(B2B)CIB              兴业银行GDB            广东发展银行SDB            深圳发展银行CMBC        中国民生银行COMM        交通银行CITIC          中信银行CEBBANK  光大银行NBBANK     宁波银行HZCBB2C  杭州银行SHBANK     上海银行SPABANK   平安银行BJRCB   北京农村商业银行fdb101       富滇银行PSBC-DEBIT    中国邮政储蓄银行 BJBANK  北京银行

7:错误代码错误说明

误代码说明EXPARTNER_INFO_UNCORRECT 传入外部商户接口信息不正确 TRADE_BUYER_NOT_MATCH 买家账户与交易中不一致 TRADE_SELLER_NOT_MATCH卖家账户与交易中不一致 TRADE_DATA_NOT_MATCH请求数据与交易中不一致SELLER_NOT_IN_SPECIFIED_SELLERS 卖家不在指定的商户限制卖家中 ILLEGAL_SIGN 签名验证出错 ILLEGAL_ARGUMENT 输入参数有错误 HASH_NO_PRIVILEGE 没有权限访问该服务 ILLEGAL_SERVICE service参数不正确 ILLEGAL_PARTNER 合作身份者ID不正确 HAS_NO_PUBLICKEY 没有上传公钥 USER_NOT_EXIST 会员不存在 OUT_TRADE_NO_EXIST 外部交易号已经存在 TRADE_NOT_EXIST 交易不存在 ILLEGAL_PAYMENT_TYPE 无效支付类型 BUYER_NOT_EXIST 买家不存在 SELLER_NOT_EXIST 卖家不存在 BUYER_SELLER_EQUAL 买家、卖家是同一帐户 ILLEGAL_SIGN_TYPE 签名类型不正确 COMMISION_ID_NOT_EXIST 佣金收取帐户不存在 COMMISION_SELLER_DUPLICATE 收取佣金帐户和卖家是同一帐户

出现的错误代码为ILLEGAL_PARTNER_EXTERFACE 

1、没有签约这个接口的合同。 
2、签约了相应的接口合同,但没有生效。 
3、签约了相应的接口合同,但由于违规违法等原因被审核部门强制关闭。 

8:页面需要修改的东西alipayapi.jsp

9:跳转页面第6步有截图。卖家账号收款的账号。不是付款的账号哦。

    如果调试登录了收款的支付宝账号。会出错的哦。错误截图如下

错误代码:BUYER_SELLER_EQUAL


     如果调试登录了收款的支付宝账号。而且页面填写的卖家账号非卖家账号(收款账号)会出现如下错误

错误代码:SELLER_NOT_IN_SPECIFIED_SELLERS

    如果没有错误。则会直接跳转付款页面。输入买家账号即可。

10:成功付款的页面。付款页面需要输入购买用户的支付宝账号和支付密码

11:使用springMVC封装写符合自己网站需求的代码。以下代码仅参考

这个是ALIPAYAPI代码要获取数据的

[java] view plain copy
  1. <code class="hljs javascript" style=""><span class="hljs-built_in" style="">Date</span> date = <span class="hljs-keyword" style="">new</span> <span class="hljs-built_in" style="">Date</span>();  
  2.         <span class="hljs-comment" style="">//支付类型  必填 不必修改</span>  
  3.         <span class="hljs-built_in" style="">String</span> payment_type = <span class="hljs-string" style="">"1"</span>;  
  4.           
  5.         <span class="hljs-comment" style="">//服务器异步通知页面路径</span>  
  6.         <span class="hljs-comment" style="">//需http://格式的完整路径,不能加?id=123这类自定义参数</span>  
  7.         <span class="hljs-built_in" style="">String</span> notify_url = <span class="hljs-string" style="">"http://localhost:8080/alipay/async"</span>;  
  8.           
  9.         <span class="hljs-comment" style="">//页面跳转同步通知页面路径</span>  
  10.         <span class="hljs-comment" style="">//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/</span>  
  11.         <span class="hljs-built_in" style="">String</span> return_url = <span class="hljs-string" style="">"http://192.168.0.222:8080/alipay/return_url"</span>;  
  12.           
  13.         <span class="hljs-comment" style="">//订单名称</span>  
  14.         <span class="hljs-comment" style="">//必填</span>  
  15. <span class="hljs-comment" style="">//        String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");</span>  
  16.         <span class="hljs-built_in" style="">String</span> subject = <span class="hljs-keyword" style="">new</span> <span class="hljs-built_in" style="">String</span>(<span class="hljs-string" style="">"测试商品"</span>.getBytes(<span class="hljs-string" style="">"ISO-8859-1"</span>),<span class="hljs-string" style="">"UTF-8"</span>);  
  17.           
  18.         <span class="hljs-comment" style="">//付款金额</span>  
  19.         <span class="hljs-comment" style="">//必填</span>  
  20. <span class="hljs-comment" style="">//        String total_fee = new String(request.getParameter("WIDtotal_fee").getBytes("ISO-8859-1"),"UTF-8");</span>  
  21.         <span class="hljs-built_in" style="">String</span> total_fee = <span class="hljs-string" style="">"0.01"</span>;  
  22.           
  23.           
  24.         <span class="hljs-built_in" style="">Map</span><<span class="hljs-built_in" style="">String</span>, <span class="hljs-built_in" style="">String</span>> sParaTemp = <span class="hljs-keyword" style="">new</span> HashMap<<span class="hljs-built_in" style="">String</span>, <span class="hljs-built_in" style="">String</span>>();  
  25.         sParaTemp.put(<span class="hljs-string" style="">"service"</span>, <span class="hljs-string" style="">"create_direct_pay_by_user"</span>);<span class="hljs-comment" style="">//接口服务----即时到账</span>  
  26.         sParaTemp.put(<span class="hljs-string" style="">"partner"</span>, AlipayConfig.partner);<span class="hljs-comment" style="">//支付宝PID</span>  
  27.         sParaTemp.put(<span class="hljs-string" style="">"_input_charset"</span>, AlipayConfig.input_charset);<span class="hljs-comment" style="">//统一编码</span>  
  28.         sParaTemp.put(<span class="hljs-string" style="">"payment_type"</span>, payment_type);<span class="hljs-comment" style="">//支付类型</span>  
  29.         sParaTemp.put(<span class="hljs-string" style="">"notify_url"</span>, notify_url);<span class="hljs-comment" style="">//异步通知页面</span>  
  30.         sParaTemp.put(<span class="hljs-string" style="">"return_url"</span>, return_url);<span class="hljs-comment" style="">//页面跳转同步通知页面</span>  
  31.         sParaTemp.put(<span class="hljs-string" style="">"seller_email"</span>, Constants.SELLER_EMAIL);<span class="hljs-comment" style="">//卖家支付宝账号</span>  
  32.         sParaTemp.put(<span class="hljs-string" style="">"out_trade_no"</span>, date.getTime()+payment_type);<span class="hljs-comment" style="">//商品订单编号</span>  
  33.         sParaTemp.put(<span class="hljs-string" style="">"subject"</span>, subject);<span class="hljs-comment" style="">//商品名称</span>  
  34.         sParaTemp.put(<span class="hljs-string" style="">"total_fee"</span>, total_fee);<span class="hljs-comment" style="">//价格</span>  
  35.           
  36.         <span class="hljs-comment" style="">//建立请求</span>  
  37.         <span class="hljs-built_in" style="">String</span> sHtmlText = AlipaySubmit.buildRequest(sParaTemp, <span class="hljs-string" style="">"get"</span>, <span class="hljs-string" style="">"立即付款"</span>);  
  38.         request.setAttribute(<span class="hljs-string" style="">"sHtmlText"</span>, sHtmlText);  
  39.           
  40.         <span class="hljs-keyword" style="">return</span> <span class="hljs-literal" style="">null</span>;</code>  

付款是否成功的代码

[java] view plain copy
  1. <code class="hljs javascript" style="">        <span class="hljs-built_in" style="">Map</span><<span class="hljs-built_in" style="">String</span> , <span class="hljs-built_in" style="">String</span>> params = <span class="hljs-keyword" style="">new</span> HashMap<<span class="hljs-built_in" style="">String</span>, <span class="hljs-built_in" style="">String</span>>();  
  2.         <span class="hljs-built_in" style="">Map</span> requestParams = request.getParameterMap();  
  3.         <span class="hljs-keyword" style="">for</span> (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {  
  4.             <span class="hljs-built_in" style="">String</span> name = (<span class="hljs-built_in" style="">String</span>) iter.next();  
  5.             <span class="hljs-built_in" style="">String</span>[] values = (<span class="hljs-built_in" style="">String</span>[]) requestParams.get(name);  
  6.             <span class="hljs-built_in" style="">String</span> valueStr = <span class="hljs-string" style="">""</span>;  
  7.             <span class="hljs-keyword" style="">for</span> (int i = <span class="hljs-number" style="">0</span>; i < values.length; i++) {  
  8.                 valueStr = (i == values.length - <span class="hljs-number" style="">1</span> )? valueStr + values[i]:valueStr+values[i]+<span class="hljs-string" style="">","</span>;  
  9.             }  
  10.             params.put(name, valueStr);  
  11.         }  
  12.         <span class="hljs-built_in" style="">String</span> tradeNo = request.getParameter(<span class="hljs-string" style="">"out_trade_no"</span>);  
  13.         <span class="hljs-built_in" style="">String</span> tradeStatus = request.getParameter(<span class="hljs-string" style="">"trade_status"</span>);  
  14.         <span class="hljs-keyword" style="">if</span>(AlipayNotify.verify(params)){  
  15.             <span class="hljs-keyword" style="">if</span>(tradeStatus.equals(<span class="hljs-string" style="">"TRADE_FINISHED"</span>) || tradeStatus.equals(<span class="hljs-string" style="">"TRADE_SUCCESS"</span>)){  
  16.                 System.out.println(<span class="hljs-string" style="">"ok!>>>>>>>>"</span> + tradeNo);  
  17.             }  
  18.             <span class="hljs-keyword" style="">return</span> <span class="hljs-string" style="">"success"</span>;  
  19.         }<span class="hljs-keyword" style="">else</span>{  
  20.             <span class="hljs-keyword" style="">return</span> <span class="hljs-string" style="">"fail"</span>;  
  21.         }  
  22.     }</code>  

12:使用springMVC封装写符合自己网站需求的代码。以下代码仅参考 全部都写在一个Controller里面

[java] view plain copy
  1. <code class="hljs typescript" style=""><span class="hljs-comment" style="">/** 
  2.  * 支付宝Controller 
  3.  * @author 宗潇帅 
  4.  * @修改日期 2014-9-25下午1:29:53 
  5.  */</span>  
  6. @Controller  
  7. @RequestMapping(value=<span class="hljs-string" style="">"/aliapi"</span>)  
  8. <span class="hljs-keyword" style="">public</span> <span class="hljs-keyword" style="">class</span> AlipayApiController {  
  9.   
  10.     <span class="hljs-keyword" style="">private</span> <span class="hljs-keyword" style="">static</span> Log log = LogFactory.getLog(AlipayApiController.class);  
  11.       
  12.     @RequestMapping(value=<span class="hljs-string" style="">"/index"</span>)  
  13.     <span class="hljs-keyword" style="">public</span> <span class="hljs-built_in" style="">String</span> index(HttpServletRequest request,  
  14.             HttpServletResponse response){  
  15.                 <span class="hljs-keyword" style="">return</span> <span class="hljs-string" style="">"web/pay/fund"</span>;<span class="hljs-comment" style="">//付款的页面。本页面是为了测试而使用的</span>  
  16.     }  
  17.       
  18.     @RequestMapping(value = <span class="hljs-string" style="">"/deposit"</span>, method = RequestMethod.POST,produces = <span class="hljs-string" style="">"application/json"</span>)    
  19.     <span class="hljs-keyword" style="">public</span> <span class="hljs-built_in" style="">String</span> deposit(HttpServletRequest request,HttpServletResponse response,Model model) throws Exception {   
  20. <span class="hljs-comment" style="">//        PrintWriter out = response.getWriter();</span>  
  21.         <span class="hljs-built_in" style="">String</span> result = <span class="hljs-string" style="">""</span>;  
  22.         <span class="hljs-built_in" style="">Date</span> date = <span class="hljs-keyword" style="">new</span> <span class="hljs-built_in" style="">Date</span>();    
  23.         <span class="hljs-comment" style="">// 支付类型  </span>  
  24.         <span class="hljs-comment" style="">// 必填,不能修改  </span>  
  25.         <span class="hljs-built_in" style="">String</span> payment_type = <span class="hljs-string" style="">"1"</span>;    
  26.         <span class="hljs-comment" style="">// 服务器异步通知页面路径  </span>  
  27.         <span class="hljs-comment" style="">// 需http://格式的完整路径,不能加?id=123这类自定义参数  </span>  
  28.         <span class="hljs-built_in" style="">String</span> notify_url = <span class="hljs-string" style="">"http://192.168.0.222:8080/live/aliapi/async"</span>;    
  29.         <span class="hljs-comment" style="">// 页面跳转同步通知页面路径  </span>  
  30.         <span class="hljs-comment" style="">// 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/  </span>  
  31.         <span class="hljs-built_in" style="">String</span> return_url = <span class="hljs-string" style="">"http://192.168.0.222:8080/live/aliapi/return_url"</span>;    
  32.         <span class="hljs-comment" style="">// 商户订单号.  </span>  
  33.         <span class="hljs-comment" style="">// 商户网站订单系统中唯一订单号,必填  </span>  
  34.         <span class="hljs-comment" style="">//String out_trade_no = date.getTime() + "";  </span>  
  35.         <span class="hljs-comment" style="">// 订单名称  </span>  
  36.         <span class="hljs-comment" style="">// 必填  </span>  
  37.         <span class="hljs-built_in" style="">String</span> subject = <span class="hljs-string" style="">"充值测试"</span>;    
  38.         <span class="hljs-comment" style="">// 防钓鱼时间戳  </span>  
  39.         <span class="hljs-comment" style="">// 若要使用请调用类文件submit中的query_timestamp函数  </span>  
  40.         <span class="hljs-built_in" style="">String</span> anti_phishing_key = <span class="hljs-string" style="">""</span>;    
  41.         <span class="hljs-comment" style="">// 客户端的IP地址  </span>  
  42.         <span class="hljs-comment" style="">// 非局域网的外网IP地址,如:221.0.0.1  </span>  
  43.         <span class="hljs-built_in" style="">String</span> exter_invoke_ip = <span class="hljs-string" style="">""</span>;    
  44.             
  45.             
  46.         <span class="hljs-built_in" style="">String</span> total_fee = ServletRequestUtils.getStringParameter(request, <span class="hljs-string" style="">"amount"</span>,<span class="hljs-string" style="">""</span>);  
  47.           
  48.         <span class="hljs-built_in" style="">String</span> body = ServletRequestUtils.getStringParameter(request, <span class="hljs-string" style="">"body"</span>,<span class="hljs-string" style="">"test"</span>);  
  49.         <span class="hljs-comment" style="">//商品展示地址</span>  
  50.         <span class="hljs-built_in" style="">String</span> show_url = ServletRequestUtils.getStringParameter(request, <span class="hljs-string" style="">"show_url"</span>,<span class="hljs-string" style="">"http://www.elve.cn"</span>);  
  51.         <span class="hljs-comment" style="">//需以http://开头的完整路径,例如:http://www.xxx.com/myorder.html</span>  
  52.   
  53.           
  54.           
  55.           
  56.         Map<<span class="hljs-built_in" style="">String</span>, <span class="hljs-built_in" style="">String</span>> sParaTemp = <span class="hljs-keyword" style="">new</span> HashMap<<span class="hljs-built_in" style="">String</span>, <span class="hljs-built_in" style="">String</span>>();  
  57.         sParaTemp.put(<span class="hljs-string" style="">"service"</span>, <span class="hljs-string" style="">"create_direct_pay_by_user"</span>);<span class="hljs-comment" style="">//接口服务----即时到账</span>  
  58.         sParaTemp.put(<span class="hljs-string" style="">"partner"</span>, AlipayConfig.partner);<span class="hljs-comment" style="">//支付宝PID</span>  
  59.         sParaTemp.put(<span class="hljs-string" style="">"_input_charset"</span>, AlipayConfig.input_charset);<span class="hljs-comment" style="">//统一编码</span>  
  60.         sParaTemp.put(<span class="hljs-string" style="">"payment_type"</span>, payment_type);<span class="hljs-comment" style="">//支付类型</span>  
  61.         sParaTemp.put(<span class="hljs-string" style="">"notify_url"</span>, notify_url);<span class="hljs-comment" style="">//异步通知页面</span>  
  62.         sParaTemp.put(<span class="hljs-string" style="">"return_url"</span>, return_url);<span class="hljs-comment" style="">//页面跳转同步通知页面</span>  
  63.         sParaTemp.put(<span class="hljs-string" style="">"seller_email"</span>, Constants.SELLER_EMAIL);<span class="hljs-comment" style="">//卖家支付宝账号</span>  
  64.         sParaTemp.put(<span class="hljs-string" style="">"out_trade_no"</span>, date.getTime()+payment_type);<span class="hljs-comment" style="">//商品订单编号</span>  
  65.         sParaTemp.put(<span class="hljs-string" style="">"subject"</span>, subject);<span class="hljs-comment" style="">//商品名称</span>  
  66.         sParaTemp.put(<span class="hljs-string" style="">"total_fee"</span>, total_fee);<span class="hljs-comment" style="">//价格</span>  
  67.         sParaTemp.put(<span class="hljs-string" style="">"body"</span>, body);  
  68.         sParaTemp.put(<span class="hljs-string" style="">"show_url"</span>, show_url);  
  69.         sParaTemp.put(<span class="hljs-string" style="">"anti_phishing_key"</span>, anti_phishing_key);  
  70.         sParaTemp.put(<span class="hljs-string" style="">"exter_invoke_ip"</span>, exter_invoke_ip);  
  71.            
  72.         <span class="hljs-comment" style="">//建立请求</span>  
  73.         <span class="hljs-keyword" style="">try</span> {  
  74.             <span class="hljs-built_in" style="">String</span> sHtmlText = AlipaySubmit.buildRequest(sParaTemp,<span class="hljs-string" style="">"post"</span>,<span class="hljs-string" style="">"确认"</span>);    
  75.             Gson gson = <span class="hljs-keyword" style="">new</span> GsonBuilder().setDateFormat(<span class="hljs-string" style="">"yyyy-MM-dd HH:mm:ss"</span>).create();  
  76.             <span class="hljs-built_in" style="">String</span> s = gson.toJson(sHtmlText);  
  77.             model.addAttribute(<span class="hljs-string" style="">"sHtmlText"</span>, s);  
  78.             request.setAttribute(<span class="hljs-string" style="">"sHtmlText"</span>, s);  
  79.             result = <span class="hljs-string" style="">"{\"success\":true,\"msg\":\"跳转成功\"}"</span>;  
  80.             StringUtil.writeToWeb(sHtmlText, <span class="hljs-string" style="">"html"</span>, response);  
  81.             <span class="hljs-keyword" style="">return</span> <span class="hljs-literal" style="">null</span>;  
  82.         } <span class="hljs-keyword" style="">catch</span> (Exception e) {  
  83.             <span class="hljs-keyword" style="">if</span>(log.isErrorEnabled()){  
  84.                 log.error(<span class="hljs-string" style="">"ddddddddddddddddddddd"</span>);  
  85.             }  
  86.             result = <span class="hljs-string" style="">"{\"success\":false,\"msg\":\"跳转失败,请稍候再试!\"}"</span>;  
  87.             StringUtil.writeToWeb(result, <span class="hljs-string" style="">"html"</span>, response);  
  88.             <span class="hljs-keyword" style="">return</span> <span class="hljs-literal" style="">null</span>;  
  89.         }  
  90.     }    
  91.     <span class="hljs-comment" style="">/** 
  92.      * 同步通知的页面的Controller 
  93.      * @param request 
  94.      * @param response 
  95.      * @return 
  96.      * @author 宗潇帅 
  97.      */</span>  
  98.     @RequestMapping(value=<span class="hljs-string" style="">"/return_url"</span>)  
  99.     <span class="hljs-keyword" style="">public</span> <span class="hljs-built_in" style="">String</span> Return_url(HttpServletRequest request,HttpServletResponse response){  
  100.         <span class="hljs-keyword" style="">return</span> <span class="hljs-string" style="">"web/pay/success"</span>;  
  101.     }  
  102.     <span class="hljs-comment" style="">/** 
  103.      * 异步通知付款状态的Controller 
  104.      * @param request 
  105.      * @param response 
  106.      * @return 
  107.      * @author 宗潇帅 
  108.      */</span>  
  109.     @SuppressWarnings(<span class="hljs-string" style="">"rawtypes"</span>)  
  110.     @RequestMapping(value=<span class="hljs-string" style="">"/async"</span>,method = RequestMethod.GET)  
  111.     <span class="hljs-keyword" style="">public</span> <span class="hljs-built_in" style="">String</span> async(HttpServletRequest request,  
  112.             HttpServletResponse response){  
  113.          Map<<span class="hljs-built_in" style="">String</span>,<span class="hljs-built_in" style="">String</span>> params = <span class="hljs-keyword" style="">new</span> HashMap<<span class="hljs-built_in" style="">String</span>,<span class="hljs-built_in" style="">String</span>>();    
  114.             Map requestParams = request.getParameterMap();    
  115.             <span class="hljs-keyword" style="">for</span> (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {    
  116.                 <span class="hljs-built_in" style="">String</span> name = (<span class="hljs-built_in" style="">String</span>) iter.next();    
  117.                 <span class="hljs-built_in" style="">String</span>[] values = (<span class="hljs-built_in" style="">String</span>[]) requestParams.get(name);    
  118.                 <span class="hljs-built_in" style="">String</span> valueStr = <span class="hljs-string" style="">""</span>;    
  119.                 <span class="hljs-keyword" style="">for</span> (int i = <span class="hljs-number" style="">0</span>; i < values.length; i++) {    
  120.                     valueStr = (i == values.length - <span class="hljs-number" style="">1</span>) ? valueStr + values[i]: valueStr + values[i] + <span class="hljs-string" style="">","</span>;    
  121.                 }    
  122.                 params.put(name, valueStr);    
  123.             }    
  124.             <span class="hljs-built_in" style="">String</span> tradeNo = request.getParameter(<span class="hljs-string" style="">"out_trade_no"</span>);    
  125.             <span class="hljs-built_in" style="">String</span> tradeStatus = request.getParameter(<span class="hljs-string" style="">"trade_status"</span>);    
  126.             <span class="hljs-comment" style="">//String notifyId = request.getParameter("notify_id");  </span>  
  127.             <span class="hljs-keyword" style="">if</span>(AlipayNotify.verify(params)){<span class="hljs-comment" style="">//验证成功  </span>  
  128.                 <span class="hljs-keyword" style="">if</span>(tradeStatus.equals(<span class="hljs-string" style="">"TRADE_FINISHED"</span>) || tradeStatus.equals(<span class="hljs-string" style="">"TRADE_SUCCESS"</span>)) {    
  129.                     <span class="hljs-comment" style="">//要写的逻辑。自己按自己的要求写</span>  
  130.                     log.error(<span class="hljs-string" style="">"ok......."</span>);  
  131.                     System.out.println(<span class="hljs-string" style="">">>>>>充值成功"</span> + tradeNo);    
  132.                 }    
  133.                 <span class="hljs-keyword" style="">return</span> <span class="hljs-string" style="">"web/pay/success"</span>;    
  134.             }<span class="hljs-keyword" style="">else</span>{<span class="hljs-comment" style="">//验证失败  </span>  
  135.                 <span class="hljs-keyword" style="">return</span> <span class="hljs-string" style="">"web/pay/fail"</span>;    
  136.             }    
  137.           
  138.     }  
  139. }</code>  

13:JSP付款页面表单提交数据并弹出付款页面         


<%@ page contentType="text/html;charset=UTF-8" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><%include file="/common/webMeta.jsp"%><title>www.elve.cn</title><meta content="www.elve.cn" name="keywords" /><meta content="www.elve.cn" name="description" /></head><script type="text/javascript">    $(function(){    $("#amount").focus();    $("#doSubmit").click(function(){        form1.submit();    });});</script><body>    <form id="form1" action"${ctx }/aliapi/deposit" method="post" target="_blank">                  <table cellpadding="10">                      <tr>                          <td>充值测试</td>                          <td class="balance" id="userBalance"></td>                      </tr>                      <tr>                          <td><i class="zfb"></i></td>                          <td style="padding-bottom: 0px;">亲爱的<span                              class="suppliment_user" id="suppliment_user"></span>,您可以使用支付宝充值积善分,请填写以下信息                          </td>                      </tr>                      <tr>                          <td></td>                          <td>                                金额<input type="text" name="amount" id="amount">                        </td>                      </tr>                        <tr>                          <td></td>                          <td><a href="javascript:void(0);" id="doSubmit" class="blank_btn">确认</a></td>                      </tr>                  </table>      </form>  </body></html>


如果以上还是有问题,那就直接去看支付宝接口文档吧!

原创粉丝点击