溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java對接支付寶支付項目怎么實現(xiàn)

發(fā)布時間:2022-06-21 09:24:38 來源:億速云 閱讀:130 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“java對接支付寶支付項目怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“java對接支付寶支付項目怎么實現(xiàn)”吧!

java對接支付寶支付演示

現(xiàn)在有不少的項目都需要對接支付,這里主要是進行講解對接支付寶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 {

        //商戶號
        String APP_ID="";
        //私鑰
        String APP_PRIVATE_KEY="";
        //編碼
        String CHARSET="UTF-8";
        //公鑰
        String ALIPAY_PUBLIC_KEY="";
        //我是沙箱環(huán)境 所有請求地址是沙箱版
        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對應(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 訂單編號
         * total_amount 付款金額
         * subject 商品名稱
         * product_code 支付方式 如手機網(wǎng)站 pc網(wǎng)站 APP支付等
         **/
       JSONObject jsonObject = new JSONObject();
        jsonObject.put("out_trade_no", "264484811515156");
        jsonObject.put("total_amount", "66");
        jsonObject.put("subject", "測試支付");
        jsonObject.put("product_code", "QUICK_WAP_WAY");
        alipayRequest.setBizContent(jsonObject.toJSONString());
        String form="";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody();
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        //因為我不會寫前端 所以直接輸出測試 如果在正式環(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候 可以用string json等接收 我這里只是演示

成功演示圖

java對接支付寶支付項目怎么實現(xiàn)

java對接支付寶支付項目怎么實現(xiàn)

java對接支付寶支付項目怎么實現(xiàn)

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

除去appid 公鑰 私鑰什么的

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

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

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

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

如果有用戶主動查詢是否支付成功的操作 建議根據(jù)訂單號先去數(shù)據(jù)庫查詢是否等于支付成功 如果不等于去官方給的接口去查是否支付成功 這樣做的好處就是有的時候回調(diào)慢了一點 用戶主動去查詢?nèi)绻侵Ц冻晒Σ粫斐煞祷刂Ц妒?/strong>

到此,相信大家對“java對接支付寶支付項目怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI