在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例J2ME平台开发 → jsp 支付宝pc网页支付

jsp 支付宝pc网页支付

J2ME平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:3.93M
  • 下载次数:60
  • 浏览次数:814
  • 发布时间:2018-03-07
  • 实例类别:J2ME平台开发
  • 发 布 人:智慧点点
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 微信 消息 发送 模板 模板消息

实例介绍

【实例简介】

本文讲解如何在pc网页上完成支付宝的支付功能, 详细讲解了支付宝的配置信息,项目如何使用配置信息等, 本项目中代码可以直接运行, 也可以将代码迁移至你自己的项目中直接使用。 注意: 下面讲解的功能只能用在pc网页上进行支付, 不能用于其它场景支付。

※运行环境※

Eclipse JDK1.6及以上 Tomcat6.0及以上


※使用方法※

SDK下载地址:
https://doc.open.alipay.com/docs/doc.htm?treeId=193&articleId=103419&docType=1

第一步;请下载【JAVA版资源】的SDK。

第二步:下载完毕后,把压缩包解压。

第三步:压缩包alipay-sdk-javaXXX.jar、commons-logging-1.1.1.jar架包文件放入工程项目alipay.trade.page.pay-PHP-UTF-8\WebContent\WEB-INF\lib中。

第四步:打开AlipayConfig.java文件,设置请求参数信息并保存,请求参数信息有:app_id、merchant_private_key、alipay_public_key、return_url、notify_url。
bizContent的各个请求参数用法与拼接方式,见文档:https://doc.open.alipay.com/docs/doc.htm?treeId=270&articleId=105899&docType=1

第五步:运行index.jsp文件

第六步:体验支付流程,看效果等。


※业务处理注意事项※

请配置notify_url文件、return_url文件,其中,notify_url文件主要是写入业务处理逻辑代码,请结合自身情况谨慎编写。

如何验证异步通知数据?

1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号

2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额)

3、校验通知中的seller_id(或者seller_email) 是否为该笔交易对应的操作方(一个商户可能有多个seller_id/seller_email)

4、验证接口调用方的app_id


※说明※

本demo仅仅为学习参考使用,请根据实际情况自行开发,把功能嵌入您的项目或平台中。

【实例截图】



【核心代码】

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>付款</title>
</head>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="com.alipay.config.*"%>
<%@ page import="com.alipay.api.*"%>
<%@ page import="com.alipay.api.request.*"%>
<%-- <%@ page import="com.alipay.sdk.app.EnvUtils"%> --%>
<%
    //获得初始化的AlipayClient
    //com.alipay.sdk.app.EnvUtils
    /* EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX); */
    AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, 
              AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, 
              AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
     
    //设置请求参数
    AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
    alipayRequest.setReturnUrl(AlipayConfig.return_url);
    alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
     
    //商户订单号,商户网站订单系统中唯一订单号,必填
    String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
    //付款金额,必填
    String total_amount = new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"),"UTF-8");
    //订单名称,必填
    String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");
    //商品描述,可空
    String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");
     
    alipayRequest.setBizContent("{\"out_trade_no\":\""  out_trade_no  "\"," 
              "\"total_amount\":\""  total_amount  "\"," 
              "\"subject\":\""  subject  "\"," 
              "\"body\":\""  body  "\"," 
              "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
     
    //若想给BizContent增加其他可选请求参数,以增加自定义超时时间参数timeout_express来举例说明
    //alipayRequest.setBizContent("{\"out_trade_no\":\""  out_trade_no  "\"," 
    //       "\"total_amount\":\""  total_amount  "\"," 
    //       "\"subject\":\""  subject  "\"," 
    //       "\"body\":\""  body  "\"," 
    //       "\"timeout_express\":\"10m\"," 
    //       "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
    //请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节
     
    //请求
    String result = alipayClient.pageExecute(alipayRequest).getBody();
    System.out.println("result:"   result);
     
    //输出
    out.println(result);
%>
<body>
</body>
</html>

     4.2 交易查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>交易查询</title>
</head>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="com.alipay.config.*"%>
<%@ page import="com.alipay.api.*"%>
<%@ page import="com.alipay.api.request.*"%>
<%
    //获得初始化的AlipayClient
    AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, 
               AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, 
               AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
     
    //设置请求参数
    AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest();
     
    //商户订单号,商户网站订单系统中唯一订单号
    String out_trade_no = new String(request.getParameter("WIDTQout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
    //支付宝交易号
    String trade_no = new String(request.getParameter("WIDTQtrade_no").getBytes("ISO-8859-1"),"UTF-8");
    //请二选一设置
     
    alipayRequest.setBizContent("{\"out_trade_no\":\""  out_trade_no  "\"," "\"trade_no\":\""  trade_no  "\"}");
     
    //请求
    String result = alipayClient.execute(alipayRequest).getBody();
     
    //输出
    out.println(result);
%>
<body>
</body>
</html>

   4.3 交易退款

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>退款</title>
</head>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="com.alipay.config.*"%>
<%@ page import="com.alipay.api.*"%>
<%@ page import="com.alipay.api.request.*"%>
<%
    //获得初始化的AlipayClient
    AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, 
                   AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, 
                   AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
     
    //设置请求参数
    AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest();
     
    //商户订单号,商户网站订单系统中唯一订单号
    String out_trade_no = new String(request.getParameter("WIDTRout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
    //支付宝交易号
    String trade_no = new String(request.getParameter("WIDTRtrade_no").getBytes("ISO-8859-1"),"UTF-8");
    //请二选一设置
    //需要退款的金额,该金额不能大于订单金额,必填
    String refund_amount = new String(request.getParameter("WIDTRrefund_amount").getBytes("ISO-8859-1"),"UTF-8");
    //退款的原因说明
    String refund_reason = new String(request.getParameter("WIDTRrefund_reason").getBytes("ISO-8859-1"),"UTF-8");
    //标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传
    String out_request_no = new String(request.getParameter("WIDTRout_request_no").getBytes("ISO-8859-1"),"UTF-8");
     
    alipayRequest.setBizContent("{\"out_trade_no\":\""  out_trade_no  "\"," 
              "\"trade_no\":\""  trade_no  "\"," 
              "\"refund_amount\":\""  refund_amount  "\"," 
              "\"refund_reason\":\""  refund_reason  "\"," 
              "\"out_request_no\":\""  out_request_no  "\"}");
     
    //请求
    String result = alipayClient.execute(alipayRequest).getBody();
     
    //输出
    out.println(result);
%>
<body>
</body>
</html>


实例下载地址

jsp 支付宝pc网页支付

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 KTV成昆 发表于: 2019-08-05 14:58 54
web.xml文件呢?

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警