时间:2021-05-20
这篇文章主要介绍了Java如何实现支付宝电脑支付基于servlet版本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
前期准备:
蚂蚁金融开放平台进行登录操作
进入我的开放平台
在上方找到沙箱,进入沙箱(网络编程虚拟执行环境)。
这里的RSA2密钥设置下,我已经设置好了,所以便有了支付宝公钥(公钥是对外公开的,私钥是自己保留的具体的不多做解释)
至于RSA2密钥的生成,可参考如下操作:
生成后在工具文件夹如下路径可以查看自己生成的公钥和私钥一对
私钥保留,公钥设置到开发者平台RSA2上便可以了。
官方DEMO因为我们需要一些jar包和可参考类,所以拿个DEMO方便很多
所需要的jar包路径如下
实例编写:
工具我这里用的是eclipse,这个影响不大~
新建web项目
项目所需要的类如下
AlipayConfig.java
package cn.taosir.demo;public class AlipayConfig { // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数 public static String return_url = "http://localhost:8080/success.jsp"; // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 public static String notify_url = "http://localhost:8080/notify"; // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 public static String app_id = ""; // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static String alipay_public_key = ""; // 商户私钥,您的PKCS8格式RSA2私钥 public static String merchant_private_key = ""; // 签名方式 public static String sign_type = "RSA2"; // 字符编码格式 public static String charset = "utf-8"; // 支付宝网关 public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";}APPID(在查看支付宝公钥位置上方)、支付宝公钥、自己的私钥,记得配上
NoitfyServlet.java
package cn.taosir.demo;import java.io.IOException;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/notify")public class NotifyServlet extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("接收到支付宝的异步通知请求——"); Map<String,String[]> parameterMap=request.getParameterMap(); System.out.println(parameterMap); //成功处理后返回success response.getWriter().write("success"); }}OrderServlet.java
package cn.taosir.demo;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Calendar;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.alipay.api.AlipayApiException;import com.alipay.api.AlipayClient;import com.alipay.api.DefaultAlipayClient;import com.alipay.api.request.AlipayTradePagePayRequest;import com.alipay.api.response.AlipayTradePagePayResponse;@WebServlet("/order/confirm")public class OrderServlet extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("开始处理OrderServlet的服务"); String title = "涛先森"; String total = "666666"; String message = "如有什么建议欢迎留言评论"; //生成订单号 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String orderSn = simpleDateFormat.format(Calendar.getInstance().getTime()); //向支付宝发送请求 //获得初始化的AlipayClient 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 = orderSn; //付款金额,必填 String total_amount = total; //订单名称,必填 String subject = title; //商品描述,可空 String body = message; 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-请求参数】章节 AlipayTradePagePayResponse alipayResponse = null; try { alipayResponse=alipayClient.pageExecute(alipayRequest); System.out.println(alipayResponse.getBody()); System.out.println(alipayResponse.getMsg()); } catch (AlipayApiException e) { e.printStackTrace(); } response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(alipayResponse.getBody()); }}至此,大功告成
下面开始测试
将项目部署到tomcat上run起来
http://localhost:8080/alipay-demo/order/confirm 可以看到页面通过该请求跳转到了支付宝的接口
下载沙箱环境的支付宝APP可以扫码测试喔
这里我们点击右边登录账户付款
账号和密码可在沙箱平台查看个人账号
之后登录就支付了,正常就跳转到了支付成功页面。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
支付宝小额免支付取消电脑上如何操作,电脑版支付宝小额免密支付怎么关闭呢!大多数朋友可能都知道,在手机上怎么取消支付宝小额免密码支付功能。但还是有一些新手可能还不
支付宝是大家喜欢的支付软件,非常方便快捷,现在支付宝在生活中普及,在国外也可以使用支付宝,支付宝如何在国外支付?支付宝支付安全吗?支付宝如何在国外支付?首先打开
近日,关于支付宝9.9版本的消息真的是铺天盖地,消息称,新版本的支付宝将会有很大的变动。于是小编满心期待的等着支付宝9.9版本的“出世”。今天早上,支付宝9.9
支付宝从2013年12月3日起,不同用户在电脑上进行支付宝账户之间转账需要收取手续费了!最低0.5元,最高10元封顶。下面就就告诉大家如何实现支付宝转账免手续费
支付宝分为多个版本,有企业支付宝和个人支付宝。有时我们是企业用户,需要企业支付宝,首先需要注册支付宝,介绍注册企业支付宝的方法。街道巷道上各种各样的商店和摊位都