1、支付宝沙箱
1.1 jar包 alipay-sdk
<!-- alipay-sdk -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.10.90.ALL</version>
</dependency>
1.2 信息配置类
1.2.1 配置信息
public class AlipayConfig {
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "";
// 商户应用私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "";
// 对应APPID下的支付宝公钥。
public static String alipay_public_key = "";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "http://localhost:8080(/项目名,没有的不需要)/Alipay/notify_url.do";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://localhost:8080(/项目名,没有的不需要)/Alipay/alipay_return.do";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "UTF-8";
// 支付宝网关
public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
}
1.2.2配置信息来源
登录自己已经入驻的支付宝账号:https://open.alipay.com/develop/sandbox/app
1.2.2.1 APPID
1.2.2.2 公钥,私钥
1.3 支付控制层
/**
* 支付宝支付
*/
@Controller
@RequestMapping("/Alipay")
public class AlipayController {
/**
* 生成订单直接跳转支付宝付款
*/
@RequestMapping("/to_alipay.do")
public void toAlipay(HttpServletResponse response, HttpServletRequest request) throws Exception{
AlipayClient alipayClient = new DefaultAlipayClient(
AlipayConfig.gatewayUrl, AlipayConfig.app_id,
AlipayConfig.merchant_private_key, "json", AlipayConfig.charset,
AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
// 取购买人名称
String in_name = request.getParameter("in_name");
// 取手机号
String in_phone = request.getParameter("in_phone");
// 创建唯一订单号
int random = (int) (Math.random() * 10000);
String dateStr = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
// 订单号拼接规则:手机号后四位+当前时间后四位+随机数四位数
String out_trade_no = in_phone.substring(7) + dateStr.substring(10)
+ random;
// 拼接订单名称
String subject = in_name + "的订单";
// 取付款金额
String total_amount = request.getParameter("in_money");
// 设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.return_url);//支付成功响应后跳转地址
alipayRequest.setNotifyUrl(AlipayConfig.notify_url);//异步请求地址
/*FAST_INSTANT_TRADE_PAY 二维码瞬时支付
* out_trade_no 订单号 total_amount 订单金额 subject 订单名称
*/
alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no
+ "\"," + "\"total_amount\":\"" + total_amount + "\","
+ "\"subject\":\"" + subject + "\"," + "\"body\":\""
+ ""+ "\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
String result = "请求无响应";
// 请求
try {
//通过阿里客户端,发送支付页面请求
result = alipayClient.pageExecute(alipayRequest).getBody();
response.setContentType("text/html;charset=UTF-8");
response.s