一、支付宝支付
1、官方文档是最好的教程:
①电脑网站支付文档:https://docs.open.alipay.com/270/105899/
②支付宝沙箱使用教程:https://docs.open.alipay.com/200/105311/
③调用支付宝相关接口的应用创建:https://open.alipay.com/developmentAccess/developmentAccess.htm
2、支付宝支付示例:
在使用支付宝支付时,先要在蚂蚁金服开放平台中下载alipay-sdk-java-3.4.49.ALL.jar。
在调用支付接口乃至很多第三方接口时,很多都有一个发起调用的方法和一个调用成功后的回调方法。在支付宝支付中也是一样,先看看发起支付的方法:
/**
* 发起支付
* @param httpRequest
* @param httpResponse
* @param out_trade_no 订单号
* @param total_amount 订单金额
* @param subject 订单名称
* @param body 商品描述
* @throws ServletException
* @throws IOException
*/
@RequestMapping("aliPay")
public void aliPay(HttpServletRequest httpRequest,
HttpServletResponse httpResponse,String out_trade_no,String total_amount, String subject,String body) throws ServletException, IOException{
doPost(httpRequest, httpResponse, out_trade_no, total_amount, subject, body);
}
/**
* @param httpRequest
* @param httpResponse
* @param out_trade_no 订单号
* @param total_amount 订单金额
* @param subject 订单名称
* @param body 商品描述
* @throws ServletException
* @throws IOException
*/
public void doPost(HttpServletRequest httpRequest, HttpServletResponse httpResponse,
String out_trade_no,String total_amount, String subject,String body)
throws ServletException, IOException {
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.GATEWAYURL, AlipayConfig.APP_ID,
AlipayConfig.APP_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET,
AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE); // 获得初始化的AlipayClient
// 创建API对应的request
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.RETURN_URL);
alipayRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);
alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
+ "\"total_amount\":\""+ total_amount +"\","
+ "\"subject\":\""+ subject +"\","
+ "\"body\":\""+ body +"\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
String form = "";
try {
// 调用SDK生成表单
form = alipayClient.pageExecute(alipayRequest).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
httpResponse.setContentType("text/h