package com.pay.config;
import java.io.FileWriter;
import java.io.IOException;
public class AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "你的appid";
// 商户私钥,您的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这类自定义参数,必须外网可以正常访问,假设这里的公网IP和端口为:49.269.31.237:8081
public static String notify_url = " http://49.269.31.237:8081 /pay/synnotify";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问,假设这里的公网IP和端口为:49.269.31.237:8081
public static String return_url = "http://localhost:8080/pay/pay_success";
// 签名方式
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:\";
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
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();
}
}
}
}
}
七、PayController
package com.pay.controller.pay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.pay.config.AlipayConfig;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/pay")
public class PayController {
@ResponseBody
@PostMapping("/aliPay")
public String aliPay(String orderId,
String amount,
String product,
String body) throws AlipayApiException {
//获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,
AlipayConfig.app_id,
AlipayConfig.merchant_private_key,
"json",
AlipayConfig.charset,
AlipayConfig.alipay_public_key,
AlipayConfig.sign_type);
// page
AlipayTradePagePayRequest alipayPageRequest = new AlipayTradePagePayRequest();
alipayPageRequest.setReturnUrl(AlipayConfig.return_url);
alipayPageRequest.setNotifyUrl(AlipayConfig.notify_url);
//拼接参数
alipayPageRequest.setBizContent("{"out_trade_no":"" + orderId + "","
+ ""total_amount":"" + amount + "","
+ ""subject":"" + product + "","
+ ""body":"" + body + "","
+ ""product_code":"FAST_INSTANT_TRADE_PAY"}");
//请求
return alipayClient.pageExecute(alipayPageRequest).getBody();
}
@RequestMapping("/test")
public String sub(){
return "test";
}
}
结构如下图所示
test.html
测试支付
pay.html
跳转的中转页面
要配置application.yml ,不然会启动失败
server:
port: 8080
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///minsu?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123456
#mybatis-plush配置
mybatis-plus:
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mappers/*.xml
configuration:
map-underscore-to-camel-case: true
logging:
level:
com.jt.mapper: debug
输入请求地址:localhost/pay/test,输入对应的订单信息,进行提交
提交后会自动跳转到支付宝支付页面,输入开发平台给出的账号和 密码进行支付,或者下载沙箱版支付宝,输入开发平台提供的账密登录后就可以扫码支付了,如下图
一个简单的支付宝demo就是这样了



