https://open.alipay.com/
进入上边网站注册登录,找到沙箱
前端代码
//传入订单编号、订单名称、价格到后端
this.$http.post('/alipay/create?orderNo='+orderNo+'&orderName='+orderName+'&payPrice='+payPrice).then((response)=>{
//返回的页面
const div = document.createElement('div');
div.innerHTML = response.data;
document.body.appendChild(div);
document.forms[document.forms.length-1].submit();
}).catch((err)=>{loading.close();this.$msg.error(err)})
代码引入依赖
<!-- alipay-sdk-java 依赖 -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.10.192.ALL</version>
</dependency>
controller层
//注解注入
@Autowired
private AlipayService alipayService;
//支付接口
@ResponseBody
@PostMapping(value = "/create", produces = "text/html;charset=utf-8")
public String create(@RequestParam("orderNo") String orderNo,
@RequestParam("orderName") String orderName,
@RequestParam("payPrice") String payPrice) {
return alipayService.create(orderNo, orderName, payPrice);
}
//退款接口
//退款成功返回String类型
@ResponseBody
@RequestMapping(value = "/refund")
public String refund(@RequestParam("orderNo") String orderNo,
@RequestParam("payPrice") String payPrice) {
try {
alipayService.refund(orderNo, payPrice);
} catch (AlipayApiException e) {
log.error("【支付宝支付】退款失败", e);
return "退款失败";
}
return "退款成功";
}
service层
public interface AlipayService {
/**
* 创建支付订单
*
* @param orderId 订单编号
* @param orderName 订单名称
* @param payPrice 支付金额
* @return 支付表单
*/
String create(String orderId, String orderName, String payPrice);
/**
* 订单退款
*
* @param orderId 订单编号
* @param payPrice 退款金额
* @throws AlipayApiException 支付异常
*/
void refund(String orderId, String payPrice) throws AlipayApiException;
}
service实现类AlipayServiceImpl
@Slf4j
@Service
public class AlipayServiceImpl implements AlipayService {
private static final String PRODUCTCODE = "FAST_INSTANT_TRADE_PAY";
//支付接口
@Override
public String create(String orderId, String orderName, String payPrice) {
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID,
AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT,
AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,
AlipayConfig.SIGNTYPE);
//电脑支付页面
AlipayTradePagePayRequest payRequest = new AlipayTradePagePayRequest();
//手机端支付接口
// AlipayTradeWapPayRequest payRequest = new AlipayTradeWapPayRequest();
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
model.setOutTradeNo(orderId);
model.setSubject(orderName);
model.setTotalAmount(payPrice);
model.setProductCode(PRODUCTCODE);
payRequest.setBizModel(model);
payRequest.setReturnUrl(AlipayConfig.RETURN_URL);
payRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);
try {
return client.pageExecute(payRequest).getBody();
} catch (AlipayApiException e) {
log.error("[支付宝] 支付失败", e);
}
return null;
}
//退款
@Override
public void refund(String orderId, String payPrice) throws AlipayApiException {
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID,
AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET,
AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
AlipayTradeRefundRequest payRequest = new AlipayTradeRefundRequest();
AlipayTradeRefundModel model = new AlipayTradeRefundModel();
model.setOutTradeNo(orderId);
model.setRefundAmount(payPrice);
payRequest.setBizModel(model);
client.execute(payRequest).getBody();
}
}
config配置类
@Data
@Component
public class AlipayConfig {
//沙箱appId
public static final String APPID = "";
//应用私钥 pkcs8格式
public static final String RSA_PRIVATE_KEY = "";
//沙箱支付宝公钥
public static final String ALIPAY_PUBLIC_KEY = "";
//请求网关 固定
public static final String URL = "https://openapi.alipaydev.com/gateway.do";
//编码
public static final String CHARSET = "UTF-8";
//返回格式
public static final String FORMAT = "json";
//RSA2
public static final String SIGNTYPE = "RSA2";
//异步通知地址
public static final String NOTIFY_URL = "http://localhost:8080/alipay/notify";
//同步地址
public static final String RETURN_URL = "http://localhost:8080/alipay/success";
private AlipayConfig() {
}
}