1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        搞定支付寶網(wǎng)頁(yè)支付,實(shí)戰(zhàn)來(lái)了!

        共 1082字,需瀏覽 3分鐘

         ·

        2021-04-28 15:07

        點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

        作者:叁滴水
        博客:https://blog.csdn.net/qq_30285985/

        前言

        了解了支付寶秘鑰設(shè)置的原理之后,可更加快速的進(jìn)行開(kāi)發(fā)支付寶支付。在此示例一下支付寶支付較為簡(jiǎn)單的場(chǎng)景——電腦網(wǎng)站支付。

        這個(gè)場(chǎng)景對(duì)于后端開(kāi)發(fā)者是比較友好的,官方的demo中已經(jīng)提供了html頁(yè)面,只需要進(jìn)行簡(jiǎn)單的配置即可運(yùn)行。

        一、電腦網(wǎng)站支付

        1.1 沙箱環(huán)境配置

        登錄支付寶,進(jìn)入控制臺(tái)進(jìn)入沙箱環(huán)境。

        進(jìn)入之后配置沙箱環(huán)境秘鑰。由上圖可見(jiàn),用來(lái)計(jì)算簽名的RSA加密是必須要配置的,開(kāi)發(fā)者要下載支付寶開(kāi)發(fā)工具獲取一對(duì)RSA秘鑰,另外選填部分的應(yīng)用網(wǎng)關(guān)授權(quán)地址容易搞混,解釋如下:

        應(yīng)用網(wǎng)關(guān)

        用于接收由支付寶服務(wù)器通知 主要用于:

        1、生活號(hào)被動(dòng)通知

        2、口碑門(mén)店的被動(dòng)通知

        3、單筆轉(zhuǎn)賬到支付寶賬戶

        4、現(xiàn)金紅包

        5、以及其他部分產(chǎn)品和訂閱消息

        授權(quán)回調(diào)地址

        顧名思義僅用于授權(quán)接口主要用于:

        1、第三方應(yīng)用授權(quán)

        2、用戶信息授權(quán)

        3、以及其他涉及授權(quán)的產(chǎn)品(如商戶會(huì)員卡)

        不管是授權(quán)回調(diào)地址還是應(yīng)用網(wǎng)關(guān)都是需要傳入http或是https開(kāi)頭的網(wǎng)頁(yè)地址。更詳細(xì)的說(shuō)明可查看支付寶官方。

        AES加密在選填部分??梢?jiàn)在對(duì)接支付寶時(shí),官方并不強(qiáng)制要求使用AES加密,可以根據(jù)自己的實(shí)際情況自行選擇是否使用AES加密。

        1.2、demo加載

        1.2.1、idea直接添加

        至今官方提供的demo還是比較古老的一種方式,是采用的Eclipse開(kāi)發(fā)工具編寫(xiě)的,里面有一些簡(jiǎn)單的jsp頁(yè)面,只需要下載即可。

        現(xiàn)在開(kāi)發(fā)工具基本都換成了idea,也可以通過(guò)idea直接打開(kāi)eclipse工程。另外,關(guān)注公眾號(hào)Java技術(shù)棧,在后臺(tái)回復(fù):激活碼,可以獲取我寫(xiě)的獲取正版 IDEA 激活碼的方式,很多人都獲取到了。

        1.2.2、maven添加

        現(xiàn)在大部分都是maven工程,我的idea中javaee都沒(méi)有,很是尷尬,因此,我選擇直接轉(zhuǎn)換成springboot工程。Spring Boot 基礎(chǔ)教程就不介紹了,系列教程可以看這里:https://github.com/javastacks/spring-boot-best-practice

        將jsp代碼和java配置類復(fù)制到一個(gè)純凈的springboot工程中,結(jié)構(gòu)大概如此,webapp是需要自己新建的,將原有工程的類和jsp復(fù)制進(jìn)來(lái)即可。

        pom文件中添加對(duì)jsp的支持,另外打包時(shí)將默認(rèn)的jar包改成war包,war包對(duì)jsp更加友好,配置示例如下。

        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

         <modelVersion>4.0.0</modelVersion>
         <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.2.5.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
         </parent>
         <groupId>com.example</groupId>
         <artifactId>alipay</artifactId>
         <version>0.0.1-SNAPSHOT</version>
         <name>alipay</name>
         <packaging>war</packaging>
         <description>Demo project for Spring Boot</description>
         <properties>
          <java.version>8</java.version>
         </properties>
         <dependencies>
          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter</artifactId>
          </dependency>
          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
          </dependency>
          
        <!--  添加支持jsp-->
          <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
          </dependency>
          <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>jstl</artifactId>
          </dependency>
          <!-- tomcat的支持-->
          <dependency>
           <groupId>org.apache.tomcat.embed</groupId>
           <artifactId>tomcat-embed-jasper</artifactId>
          </dependency>
          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-tomcat</artifactId>
           <scope>provided</scope>   <!-- 編譯時(shí)依賴  運(yùn)行是不需要此包 -->
          </dependency>
         </dependencies>

         <build>
          <finalName>${project.artifactId}</finalName>
          <plugins>
           <plugin>   <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
           <!-- 添加war 插件 -->
           <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
             <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
           </plugin>
          </plugins>
          
         </build>
        </project>

        在官方提供的demo中,有3個(gè)包需要進(jìn)行添加。

        因?yàn)槭菧y(cè)試,而且依賴的代碼寫(xiě)在了jsp中,不影響打包,索性可以直接先打包,然后將3個(gè)jar復(fù)制到服務(wù)器的lib目錄。

        1.3、參數(shù)配置

        demo中提供了一個(gè)配置類AlipayConfig.java。

        這里需要將沙箱環(huán)境提供的參數(shù)配置上。

        // 應(yīng)用ID,您的APPID,收款賬號(hào)既是您的APPID對(duì)應(yīng)支付寶賬號(hào)
        public static String app_id = "";

        // 商戶私鑰,您的PKCS8格式RSA2私鑰
        public static String merchant_private_key = "";

        // 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對(duì)應(yīng)APPID下的支付寶公鑰。
        public static String alipay_public_key = "";

        // 服務(wù)器異步通知頁(yè)面路徑  需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網(wǎng)可以正常訪問(wèn)
        public static String notify_url = "http://{服務(wù)器ip}/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";

        // 頁(yè)面跳轉(zhuǎn)同步通知頁(yè)面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網(wǎng)可以正常訪問(wèn)
        public static String return_url = "http://{服務(wù)器ip}/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";

        // 簽名方式
        public static String sign_type = "RSA2";

        // 字符編碼格式
        public static String charset = "utf-8";

        // 支付寶網(wǎng)關(guān)
        public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";

        // 日志路徑
        public static String log_path = "/";
        1. app_id 應(yīng)用id。每個(gè)應(yīng)用都有自己的唯一標(biāo)示。這個(gè)參數(shù)在支付寶、微信等許多開(kāi)放平臺(tái)都有出現(xiàn)。
        2. merchant_private_keyalipay_public_key這是用來(lái)計(jì)算簽名的秘鑰。
        3. notify_url 這個(gè)是用來(lái)接收支付寶回調(diào)通知的接口地址,這個(gè)接口需要進(jìn)行冪等處理。
        4. return_url 配置支付成功之后跳轉(zhuǎn)的頁(yè)面地址。
        5. sign_type 簽名方式,這個(gè)就默認(rèn)的RSA2加密即可。一般不需要修改。
        6. gatewayUrl 支付寶網(wǎng)關(guān),這個(gè)在app配置的時(shí)候官方提供了,復(fù)制下來(lái)即可。

        1.4、啟動(dòng)工程

        配置完成之后即可啟動(dòng)工程,進(jìn)入首頁(yè)index.jsp。

        我的路徑是/alipay/index.jsp,大家參考下。

        官方的demo中提供了付款、交易查詢、退款、退款查詢、交易關(guān)閉等功能。開(kāi)發(fā)者可自行選擇調(diào)試。

        另外沙箱環(huán)境是一套獨(dú)立的支付寶環(huán)境,需要下載官方提供的沙箱支付寶app(只有安卓)。

        點(diǎn)即付款功能的支付按鈕,即可跳入支付頁(yè)面,支付完成之后會(huì)自行跳轉(zhuǎn)到配置的return_url地址。

        注:有時(shí)候會(huì)提示存在釣魚(yú)風(fēng)險(xiǎn)提示頁(yè)面。只需要關(guān)閉瀏覽器,只打開(kāi)支付入口頁(yè)面index.jsp,不要打開(kāi)其他的支付寶頁(yè)面就解決了。

        本文來(lái)自作者「叁滴水」投稿,謝謝分享,也歡迎愛(ài)好技術(shù)分享的各位技術(shù)朋友向「Java技術(shù)棧」投稿,讓更多人看到,投稿方式:關(guān)注公眾號(hào)「Java技術(shù)?!乖诤笈_(tái)回復(fù):投稿。






        關(guān)注Java技術(shù)??锤喔韶?/strong>



        獲取 Spring Boot 實(shí)戰(zhàn)筆記!
        瀏覽 72
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

          <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            丰满人妻一区二区三区精品高清 | 欧美色涩在线第一页 | 成人国产精品秘 久久久网站 | 七三一女兵一级毛片 | 超逼网| 亚洲va欧美va天堂v国产桃 | 欧美国产激情 | 欧美色图俺去了 | 仙女棒坐着使用图片黄 | 成人a在线视频免费观看 |