
前言
Hello,你有没有想辉哥呀?最近有不少小伙伴私信辉哥,问我有没有支付开发的相关教程。只要你有需要,Java架构栈这就给你安排,今个辉哥就给你谈谈如何实现java里的支付开发。保证纯干货,无套路哟!
关注Java架构栈,干货天天都不断。
一. 支付宝官方支付
1.访问地址
https://docs.open.alipay.com/270/106291/
2.下载Java版Demo

3.访问沙箱环境
https://openhome.alipay.com/platform/appDaily.htm
选择沙箱环境

4.下载并安装软件
访问地址:https://docs.open.alipay.com/291/105971

5.双击 “支付宝开放平台开发助手” 生成密钥

6.设置密钥
复制上个页面中的应用公钥,返回如下页面,点击设置密钥。

7.更换公钥
点击 查看/设置 会看到如下页面,然后点击 ”更换应用公钥“。

8.生成支付宝公钥
把刚才复制的应用公钥粘贴过来,生成支付宝公钥。

9.获取生成的支付宝公钥
最终要获取的是生成的支付宝公钥。

10.配置公钥到代码中
此时需要注意的是:支付宝公钥相当于加密,应用私钥相当于解密
然后创建项目,把之前下载好的Java版本的Demo导入即可
然后找到AlipayConfig.java进行配置,然后启动项目进行测试

11.添加maven依赖
如果是Maven工程,我们可以导入如下依赖,替换掉Java版本Demo中的jar包。
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.8.10.ALL</version>
</dependency>12.测试付款页面
访问:http://localhost:8080/alipay/ 选择付款

13.以测试账号登录
当前是沙箱环境,可以使用沙箱账号进行登录测试

14.点击登录账户付款,跳转到如下页面。

15.找到沙箱账号
沙箱环境下是不能使用手机扫码支付的,所以我们需要找到之前页面,点击沙箱账号,找到买家账号,然后回到上述页面进行登录。

16.输入密码进行支付

17.点击确认付款,然后跳转到支付成功页面

18.正式环境的开发配置
上述完成的是沙箱环境下的支付测试,如果是正式环境下,需要企业申请账号才能进行支付。正式环境下只需要在AlipayConfig.java中修改四个地方即可。
APPID
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "";
千锋的 app_id:2017091608770636
私钥
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key ="";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm
//对应APPID下的支付宝公钥。
public static String alipay_public_key = "";
正式环境的网关都为:"https://openapi.alipay.com/gateway.do"
// 支付宝网关
public static String gatewayUrl = "";19.此时已经是正式环境了,可以使用手机进行扫码支付了

20.扫码支付成功后会跳转如下页面

二. 支付宝支付
为了方便大家操作,辉哥专门给大家封装了一个支付宝的工具类,你可以拿去直接使用哟。
public class AliPayUtil {
private static final String APP_ID="2017091608770636";
private static final String APP_PRIVATE_KEY="";
private static final String ALIPAY_PUBLIC_KEY="";
private static final AlipayClient client;
static {
//获得初始化的AlipayClient
client=new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
APP_ID, APP_PRIVATE_KEY, "json", "UTF-8", ALIPAY_PUBLIC_KEY,
"RSA2");
}
/**发起支付,获取支付页面
*@param no 订单号
*@param money 订单支付金额
*@param title 订单标题*/
public static String createPayPC(String no,double money,String title){
//1.创建请求对象
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//2.设置请求信息
//回调地址,必须公网
request.setNotifyUrl("https://y192580h27.goho.co/server/pay/alipay.do");
//付款成功,要跳转页面
request.setReturnUrl("");
JSONObject bizContent = new JSONObject();
//订单号
bizContent.put("out_trade_no", no);
//订单支付金额 单位元
// bizContent.put("total_amount", money);
bizContent.put("total_amount", 0.01);
//设置订单的标题
bizContent.put("subject", title);
//设置商品码,固定
bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
request.setBizContent(bizContent.toString());
try {
//3.发起请求,获取响应
AlipayTradePagePayResponse response=client.pageExecute(request);
//4.验证请求是否成功
if(response.isSuccess()){
//5.返回支付页面
return response.getBody();
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 查询支付状态
* @param no 订单号*/
public static String queryPay(String no){
//1.实例化 请求对象
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
//2.设置请求信息
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", no);
request.setBizContent(bizContent.toString());
try {
//3.发起请求 获取响应
AlipayTradeQueryResponse response = client.execute(request);
//4.验证请求是否成功
if(response.isSuccess()){
//5.返回支付状态
return response.getTradeStatus();
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 发起退款*/
public static boolean refoundPay(String no,double money){
//1.创建请求对象
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
//2.设置请求信息
JSONObject bizContent = new JSONObject();
bizContent.put("refund_amount", money);
bizContent.put("out_trade_no", no);
request.setBizContent(bizContent.toString());
//3.发起请求 获取响应
try {
AlipayTradeRefundResponse response = client.execute(request);
return response.isSuccess();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return false;
}
/**
* 关闭支付,未支付的订单
* @param no 订单号*/
public static boolean closePay(String no){
//1.创建请求对象
AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
//2.设置请求信息
JSONObject bizContent = new JSONObject();
bizContent.put("trade_no", "2013112611001004680073956707");
request.setBizContent(bizContent.toString());
//3.发起请求 获取响应
try {
AlipayTradeCloseResponse response = client.execute(request);
return response.isSuccess();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return false;
}
/**
* 生成对账单
* @param date 请求对应的对账日期
* @return 对账单的下载地址*/
public static String downBill(String date){
//1.实例化请求对象
AlipayDataDataserviceBillDownloadurlQueryRequest request = new AlipayDataDataserviceBillDownloadurlQueryRequest();
//2.设置请求信息
request.setBizContent("{" +
" \"bill_type\":\"trade\"," +
" \"bill_date\":\""+date+"\"," +
" \"smid\":\"2088123412341234\"" +
"}");
//3.发起请求 获取响应
try {
AlipayDataDataserviceBillDownloadurlQueryResponse response = client.execute(request);
if(response.isSuccess()){
return response.getBillDownloadUrl();
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 生成二维码支付请求,返回二维码的串码
*@param no 订单号
*@param money 订单支付金额
*@param title 订单标题*/
public static String createQrCodePay(String no,double money,String title){
//1.实例化请求对象
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
//2.设置请求信息
request.setNotifyUrl("");
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", no);
bizContent.put("total_amount", money);
bizContent.put("subject", title);
request.setBizContent(bizContent.toString());
//3.发起请求获取响应
try {
AlipayTradePrecreateResponse response=client.execute(request);
//4.验证是否成功
if(response.isSuccess()){
//5.返回支付的二维码的串码
return response.getQrCode();
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
return null;
}
}
三. 总结
好了,今天的文章就到这啦,辉哥希望大家可以通过这个案例,完成支付宝的支付功能哈。如果你还有其他的问题,欢迎私聊辉哥,在学习的路上,辉哥与你一路相伴!
扫码咨询了解课程详情,获取课程配套资料!

扫码或者点击文末左下角【阅读原文】快速进入学习!

原文作者:Java架构栈;如有侵权,请联系管理员删除。