扫码支付:https://blog.youkuaiyun.com/csdn_hyp/article/details/82427504
上篇文章已经详细的讲解了支付宝扫码支付流程,今天在扫码支付的基础上为大家带来PC网站支付和wap端网站支付的流程
一、PC网站支付(账号密码登陆与扫码)
直接调用支付宝封装方法DefaultAlipayClient传递对应参数--AlipayTradePagePayRequest,代码如下
public void tradeAliPayPage(HttpServletResponse httpResponse, Integer orderId){
//获得初始化的AlipayClient
System.out.println("-----------支付宝配置-gatewayUrl----------"+AlipayConfig.gatewayUrl);
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
//设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(baseConfigService.getByHandle(ALIPAY_RETURN_URL).getValue());
alipayRequest.setNotifyUrl(baseConfigService.getByHandle(ALIPAY_NOTIFY_URL).getValue());
Order order = orderService.selectByPrimaryKey(orderId);
//商户订单号,商户网站订单系统中唯一订单号,必填
String out_trade_no = orderId.toString();
//付款金额,必填
String total_amount = order.getPayAmt().toString();
//订单名称,必填
String subject = this.getGoogsName(order);
//商品描述,可空
String body = "";
String timeout_express ="5m";
try {
//增加自定义超时时间参数timeout_express
alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
+ "\"total_amount\":\""+ total_amount +"\","
+ "\"subject\":\""+ subject +"\","
+ "\"body\":\""+ body +"\","
+ "\"timeout_express\":\""+timeout_express+"\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求
String result = alipayClient.pageExecute(alipayRequest).getBody();
httpResponse.setContentType("text/html;charset="+AlipayConfig.charset);
httpResponse.getWriter().write(result);//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
其中AlipayConfig与baseConfigService等类为个人数据配置类,各位码农需自己配置
二、wap网站支付(调起支付宝app授权支付)
直接调用支付宝封装方法DefaultAlipayClient传递对应参数----AlipayTradeWapPayRequest,代码如下
public void tradeAliPayWapPage(HttpServletResponse httpResponse, Integer orderId){
//获得初始化的AlipayClient
System.out.println("-----------支付宝配置-gatewayUrl----------"+AlipayConfig.gatewayUrl);
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
//设置请求参数
AlipayTradeWapPayRequest alipayWapPayRequest = new AlipayTradeWapPayRequest();
alipayWapPayRequest.setReturnUrl(baseConfigService.getByHandle(ALIPAY_RETURN_URL_H5).getValue());
alipayWapPayRequest.setNotifyUrl(baseConfigService.getByHandle(ALIPAY_NOTIFY_URL).getValue());
Order order = orderService.selectByPrimaryKey(orderId);
AlipayTradeWapPayModel model=new AlipayTradeWapPayModel();
//商户订单号,商户网站订单系统中唯一订单号,必填
String out_trade_no = orderId.toString();
//付款金额,必填
String total_amount = order.getPayAmt().toString();
//订单名称,必填
String subject = this.getGoogsName(order);
//商品描述,可空
String body = "";
//增加自定义超时时间参数timeout_express
String timeout_express ="5m";
// 销售产品码 必填
String product_code="QUICK_WAP_WAY";
model.setOutTradeNo(out_trade_no);
model.setSubject(subject);
model.setTotalAmount(total_amount);
model.setBody(body);
model.setTimeoutExpress(timeout_express);
model.setProductCode(product_code);
try {
alipayWapPayRequest.setBizModel(model);
//请求
String result = alipayClient.pageExecute(alipayWapPayRequest).getBody();
httpResponse.setContentType("text/html;charset="+AlipayConfig.charset);
httpResponse.getWriter().write(result);//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
支付完成回调方法同上篇文章扫码支付流程中回调方法一致
如需更为详细的代码,请留言
对接期间遇到的问题,可以留言共同探讨,共同进步
本文介绍了支付宝的PC网站支付和WAP端网站支付流程,包括调用DefaultAlipayClient,使用AlipayTradePagePayRequest和AlipayTradeWapPayRequest参数进行支付,并提到了支付回调方法与扫码支付流程相似。对于详细代码和对接问题的讨论,作者鼓励读者留言互动。
333

被折叠的 条评论
为什么被折叠?



