栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot集成沙箱支付-沙箱环境支付-仅支付

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot集成沙箱支付-沙箱环境支付-仅支付

1.引入依赖

        
            com.alipay.sdk
            alipay-easysdk
            2.2.0
        
2.编写Aliconfig
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import org.springframework.stereotype.Component;

@Component
public class AlipayConfig {

    // 1. 设置参数(全局只需设置一次)
    static {
        Factory.setOptions(getOptions());
    }

    private static Config getOptions() {
        Config config = new Config();

        config.protocol = "https";

        // 沙箱环境修改为 openapi.alipaydev.com
        config.gatewayHost = "openapi.alipaydev.com";

        config.signType = "RSA2";

        config.appId = "2016100200644885";

        // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中
        config.merchantPrivateKey = "XXX";

        //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可
        config.alipayPublicKey = "XXX";

        //可设置异步通知接收服务地址(可选)(该地址需要外网能够访问)
        config.notifyUrl = "";

        return config;
    }
}
 3.编写service
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.util.ResponseChecker;
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;


@Service
public class AlipayService {

    
    public String toPay(String subject, BigDecimal money,String generateTradeNo) throws Exception {
        // 最后一个参数是支付完成之后跳转到的界面, 一般为项目的首页
        AlipayTradePagePayResponse pay = Factory.Payment.Page().pay(subject, this.generateTradeNo(),
                String.valueOf(money), "http://localhost:8080/ali/paySuccess?payType=1&orderNo="+ generateTradeNo);
        String payForm = null;
        if (ResponseChecker.success(pay)) {
            payForm = pay.getBody();
        }
        return payForm;
    }

    
    private String generateTradeNo() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
        String tradeNo = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);
        return tradeNo;
    }
}
4.接口调用

4.1 支付接口

 @GetMapping("/topay")
    @ResponseBody
    public String toPay(HttpServletRequest request, @RequestParam("orderNo") String orderNo, HttpSession httpSession, @RequestParam("payType") int payType) throws Exception {
        NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);
        NewBeeMallOrder newBeeMallOrder = newBeeMallOrderService.getNewBeeMallOrderByOrderNo(orderNo);
        request.setAttribute("orderNo", orderNo);
        request.setAttribute("totalPrice", newBeeMallOrder.getTotalPrice());
        if (payType == 1) {
            String form = alipayService.toPay("商品购买", new BigDecimal(newBeeMallOrder.getTotalPrice()),orderNo);
            return form;
        } else {
            return "mall/wxpay";
        }
    }

4.2 支付成功

@GetMapping("/ali/paySuccess")
    public String aliPaySuccess(@RequestParam("orderNo") String orderNo, @RequestParam("payType") int payType) {
        newBeeMallOrderService.paySuccess(orderNo, payType);
        return "redirect:/orders/" + orderNo;
    }

4.3 前端

 window.location.href = '/selectPayType?orderNo=' + 单号;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005922.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号