先登录支付宝的沙箱环境登录 - 支付宝
我以前已经注册过支付宝沙箱的账号了,此处我就省略了......
登录之后需要获取这几个参数,
GATEWAY_URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE
写一个配置文件,AlipayConfig
public class AlipayConfig {
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static final String APP_ID = "写你自己的";
//商户私钥
public static final String APP_PRIVATE_KEY = "写你自己的";
// 字符编码格式
public static final String CHARSET = "UTF-8";
//支付宝公钥
public static final String ALIPAY_PUBLIC_KEY = "写你自己的";
public static final String FORMAT ="JSON";
//签名方式 RSA2
public static final String SIGN_TYPE = "RSA2";
//支付宝同步通知路径,也就是当付款完毕后跳转本项目的页面,可以不是公网地址
public static final String RETURN_URL = "http://localhost/returnUrl";
}
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();
}
}
}
}
写一个controller
@RestController
@RequestMapping("/order")
public class AlipayController {
@RequestMapping("alipay")
public void alipay(HttpServletResponse httpResponse) throws IOException {
Random r = new Random();
//实例化客户端,填入所需参数
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.GATEWAY_URL, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//在公共参数中设置回跳和通知地址
request.setReturnUrl(AlipayConfig.RETURN_URL);
request.setNotifyUrl(NOTIFY_URL);
//商户订单号,商户网站订单系统中唯一订单号,必填
//生成随机Id
String out_trade_no = UUID.randomUUID().toString();
//付款金额,必填
String total_amount = Integer.toString(r.nextInt(99) + 100);
//订单名称,必填
String subject = "2021款 530Li 领先型 M运动套装";
//商品描述,可空
String body = "尊敬的会员欢迎购买2021款 530Li 领先型 M运动套装";
request.setBizContent("{"out_trade_no":"" + out_trade_no + "","
+ ""total_amount":"" + total_amount + "","
+ ""subject":"" + subject + "","
+ ""body":"" + body + "","
+ ""product_code":"FAST_INSTANT_TRADE_PAY"}");
String form = "";
try {
form = alipayClient.pageExecute(request).getBody();
// 调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
httpResponse.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
httpResponse.getWriter().write(form);
// 直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
}
@ResponseBody
@RequestMapping(value = "/wapPay1")
public void doPost(HttpServletRequest httpRequest,
HttpServletResponse httpResponse) throws ServletException, IOException {
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.GATEWAY_URL, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE); //获得初始化的AlipayClient
AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request
alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");
alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址
alipayRequest.setBizContent("{" +
" "out_trade_no":"20150320010101002"," +
" "total_amount":"88.88"," +
" "subject":"Iphone6 16G"," +
" "product_code":"QUICK_WAP_PAY"" +
" }");//填充业务参数
String form = "";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
httpResponse.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
}
}
然后代码部分就ok了,运行项目,进行测试
打开浏览器,输入请求路径:http://localhost:8088/order/alipay
(8088是你本地的端口号,我这里是8088,看个人设置,也有人设置是8080)
打开命令行,cmd,输入ipconfig,查看你的IP地址
我的是192.168.0.153
打开手机浏览器,输入请求地址,192.168.0.153:8088/order/wapPay1
使用支付宝app付款即可。
这就欧克了,简简单单。有问题,评论区留言



