最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java對(duì)接支付寶支付項(xiàng)目的實(shí)戰(zhàn)記錄

 更新時(shí)間:2022年06月20日 15:59:03   作者:簡(jiǎn)單喲  
最近公司有一個(gè)需求是接入第三方支付(微信&支付寶),我接到了支付寶支付,所以下面這篇文章主要給大家介紹了關(guān)于java對(duì)接支付寶支付項(xiàng)目的相關(guān)資料,需要的朋友可以參考下

java對(duì)接支付寶支付演示

現(xiàn)在有不少的項(xiàng)目都需要對(duì)接支付,這里主要是進(jìn)行講解對(duì)接支付寶H5支付

廢話不多說 上代碼

引入支付寶官方的sdk

 <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-easysdk</artifactId>
            <version>2.2.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.10.124.ALL</version>
        </dependency>

編寫調(diào)用支付的方法

 @RequestMapping("/test")
    public void doPost(HttpServletRequest httpRequest,
                       HttpServletResponse httpResponse) throws ServletException, IOException {

        //商戶號(hào)
        String APP_ID="";
        //私鑰
        String APP_PRIVATE_KEY="";
        //編碼
        String CHARSET="UTF-8";
        //公鑰
        String ALIPAY_PUBLIC_KEY="";
        //我是沙箱環(huán)境 所有請(qǐng)求地址是沙箱版
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //獲得初始化的AlipayClient
        AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//創(chuàng)建API對(duì)應(yīng)的request
        //這里主要是設(shè)置回調(diào) 也就是支付成功之后你要做什么操作的地址
        alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");
        alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共參數(shù)中設(shè)置回跳和通知地址
        /**
         * @description:
         * @author: hwk
         * @date: 2022/6/14 16:34
         * @param: out_trade_no 訂單編號(hào)
         * total_amount 付款金額
         * subject 商品名稱
         * product_code 支付方式 如手機(jī)網(wǎng)站 pc網(wǎng)站 APP支付等
         **/
       JSONObject jsonObject = new JSONObject();
        jsonObject.put("out_trade_no", "264484811515156");
        jsonObject.put("total_amount", "66");
        jsonObject.put("subject", "測(cè)試支付");
        jsonObject.put("product_code", "QUICK_WAP_WAY");
        alipayRequest.setBizContent(jsonObject.toJSONString());
        String form="";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody();
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        //因?yàn)槲也粫?huì)寫前端 所以直接輸出測(cè)試 如果在正式環(huán)境中 建議直接return 返回的from表單
        httpResponse.setContentType("text/html;charset=" + CHARSET);
        httpResponse.getWriter().write(form);//直接將完整的表單html輸出到頁面
        httpResponse.getWriter().flush();
        httpResponse.getWriter().close();
    }
    //支付回調(diào)
    @RequestMapping("/test1")
    public void aliPayNotify() {
            Map<String, String> params = getAllRequestParam(request);
            String tradeStatus = params.get("trade_status");
            if ("TRADE_SUCCESS".equals(tradeStatus)) {
                System.out.println("支付成功");
            }else {
                System.out.println("支付失敗");
            }
    }


    private Map<String, String> getAllRequestParam(final HttpServletRequest request) {
        Map<String, String> res = new HashMap<>(8);
        Enumeration<?> temp = request.getParameterNames();
        while (temp.hasMoreElements()) {
            String en = (String) temp.nextElement();
            String value = request.getParameter(en);
            res.put(en, value);
        }
        return res;
    }

入?yún)⒄街Ц兜臅r(shí)候 可以用string json等接收 我這里只是演示

成功演示圖

講解一下實(shí)際支付的時(shí)候所需要的參數(shù)吧

除去appid 公鑰 私鑰什么的

你正常支付所需要的參數(shù)無非 就是商品的id(主要是用于根據(jù)商品id查詢商品的名稱價(jià)格等后續(xù)調(diào)用支付的時(shí)候需要)、購買人
然后查詢到商品的詳情 set到對(duì)應(yīng)的參數(shù)里面 去調(diào)用支付寶sdk 來生成from表單

你們可以在回調(diào)里面進(jìn)行支付成功之后的一些操作

比如說:購買的是會(huì)員 然后在支付成功之后去給他進(jìn)行開通會(huì)員或者續(xù)費(fèi)會(huì)員

有一點(diǎn)要提醒你們 發(fā)起支付前創(chuàng)建的訂單一定要是未支付 在回調(diào)里面判斷用戶是否成功

如果有用戶主動(dòng)查詢是否支付成功的操作 建議根據(jù)訂單號(hào)先去數(shù)據(jù)庫查詢是否等于支付成功 如果不等于去官方給的接口去查是否支付成功 這樣做的好處就是有的時(shí)候回調(diào)慢了一點(diǎn) 用戶主動(dòng)去查詢?nèi)绻侵Ц冻晒Σ粫?huì)造成返回支付失敗

總結(jié)

到此這篇關(guān)于java對(duì)接支付寶支付項(xiàng)目的文章就介紹到這了,更多相關(guān)java對(duì)接支付寶支付內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot?整合?SA-Token?使用詳解

    springboot?整合?SA-Token?使用詳解

    本文詳細(xì)介紹了SA-Token這款安全框架的使用,并結(jié)合實(shí)際操作演示了如何集成到springboot項(xiàng)目中,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • springboot讀取resource配置文件生成容器對(duì)象的示例代碼

    springboot讀取resource配置文件生成容器對(duì)象的示例代碼

    這篇文章主要介紹了springboot讀取resource配置文件生成容器對(duì)象的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • hadoop的wordcount實(shí)例代碼

    hadoop的wordcount實(shí)例代碼

    這篇文章主要介紹了hadoop的wordcount實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 一文秒懂idea的git插件跟翻譯插件

    一文秒懂idea的git插件跟翻譯插件

    idea之類的開發(fā)軟件真的超級(jí)多的插件,今天給大家分享idea的git插件跟翻譯插件,感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • Spring Security實(shí)現(xiàn)自動(dòng)登陸功能示例

    Spring Security實(shí)現(xiàn)自動(dòng)登陸功能示例

    自動(dòng)登錄在很多網(wǎng)站和APP上都能用的到,解決了用戶每次輸入賬號(hào)密碼的麻煩。本文就使用Spring Security實(shí)現(xiàn)自動(dòng)登陸功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • spring-integration連接MQTT全過程

    spring-integration連接MQTT全過程

    這篇文章主要介紹了spring-integration連接MQTT全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 在Java中實(shí)現(xiàn)線程安全的單例模式的常見方式

    在Java中實(shí)現(xiàn)線程安全的單例模式的常見方式

    單例模式是一種常用的軟件設(shè)計(jì)模式,它確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問點(diǎn),在多線程環(huán)境下,確保單例模式的線程安全性是非常重要的,因?yàn)槎鄠€(gè)線程可能會(huì)同時(shí)嘗試創(chuàng)建實(shí)例,導(dǎo)致實(shí)例不唯一的問題,本文介紹了在Java中實(shí)現(xiàn)線程安全的單例模式有幾種常見的方式
    2024-09-09
  • 詳解Spring Boot實(shí)戰(zhàn)之Restful API的構(gòu)建

    詳解Spring Boot實(shí)戰(zhàn)之Restful API的構(gòu)建

    這篇文章主要介紹了詳解Spring Boot實(shí)戰(zhàn)之Restful API的構(gòu)建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • 頁面設(shè)計(jì)之事件處理綜合介紹

    頁面設(shè)計(jì)之事件處理綜合介紹

    頁面設(shè)計(jì)之事件處理,當(dāng)你把界面都設(shè)計(jì)好了,總需要添加相應(yīng)的執(zhí)行動(dòng)作給組件,在有相應(yīng)的時(shí)間處理機(jī)制
    2012-12-12
  • Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源

    Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源

    持久層是JavaEE中訪問數(shù)據(jù)庫的核心操作,SpringBoot中對(duì)常見的持久層框架都提供了自動(dòng)化配置,例如JdbcTemplate、JPA 等,MyBatis 的自動(dòng)化配置則是MyBatis官方提供的。接下來分別向讀者介紹Spring Boot整合這持久層技術(shù)中的整合JdbcTemplate
    2022-08-08

最新評(píng)論

漳州市| 分宜县| 烟台市| 乐陵市| 咸丰县| 定襄县| 南木林县| 泽州县| 轮台县| 叙永县| 舞钢市| 尚志市| 蓝田县| 葫芦岛市| 壶关县| 兴业县| 共和县| 庆元县| 丰原市| 瑞金市| 德保县| 大理市| 工布江达县| 平和县| 宝丰县| 阳朔县| 澄迈县| 桃源县| 邵阳县| 北海市| 齐齐哈尔市| 玛纳斯县| 商河县| 新津县| 福州市| 海丰县| 蚌埠市| 洪洞县| 常宁市| 仁布县| 江油市|