支付宝PC网站支付与wap端网站支付流程

本文介绍了支付宝的PC网站支付和WAP端网站支付流程,包括调用DefaultAlipayClient,使用AlipayTradePagePayRequest和AlipayTradeWapPayRequest参数进行支付,并提到了支付回调方法与扫码支付流程相似。对于详细代码和对接问题的讨论,作者鼓励读者留言互动。

扫码支付: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();
   }
}

支付完成回调方法同上篇文章扫码支付流程中回调方法一致

如需更为详细的代码,请留言

对接期间遇到的问题,可以留言共同探讨,共同进步

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值