java实现支付宝简易支付

首先进入蚂蚁金服开发平台

点击添加功能–> 添加沙箱应用、沙箱账号、沙箱工具即可

进入沙箱应用
在这里插入图片描述
可以看到APPID、支付宝网关、RSA2密钥这些稍后会用到
注意:这里的RSA2密钥我已经设置好了,设置方式如下图:
在这里插入图片描述
点击“生成方法”之后,可以看到如图进行工具下载(上面步骤很详细):
在这里插入图片描述
生成后在工具文件夹中既可查看生成的公钥和私钥:
在这里插入图片描述
之后私钥保存后面配置文件会用到,应用公钥设置到RSA2即可
在这里插入图片描述
所需要的jar包可以从官方Demo出下载解压即可:
在这里插入图片描述
项目所需要的类:
在这里插入图片描述
AlipayConfig.java`

package com.yc.alipay;

import java.io.FileWriter;
import java.io.IOException;


public class AlipayConfig {
	
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

	// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
	public static String app_id = "2016*************";
	
	// 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "";
	
	// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "";

	// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String notify_url = "http://localhost:8080/notify";

	// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String return_url = "http://localhost:8080/ownStudy/success.jsp";

	// 签名方式
	public static String sign_type = "RSA2";
	
	// 字符编码格式
	public static String charset = "utf-8";
	
	// 支付宝网关
	public static String gatewayUrl = " https://openapi.alipaydev.com/gateway.do";
	
	// 支付宝网关
	public static String log_path = "C:\\";


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

    /** 
     * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
     * @param sWord 要写入日志里的文本内容
     */
    public static void logResult(String sWord) {
        FileWriter writer = null;
        try {
            writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");
            writer.write(sWord);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


NotifyServlet.java

package com.yc.alipay;

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 com.yc.alipay;

	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 = "6";
	        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进行访问如图:

在这里插入图片描述
注意:这里的支付宝开发是用沙箱环境下开发的,所以这里需要下载一个沙箱版的支付宝app才能扫码支付(沙箱版是做测试,不会涉及财产)
或者登陆账号(这里的账号是下面的买家账号)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值