<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          搞定支付寶網(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)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲优优色在线 | 91天天干视频 | 草草视频在线 | 爱搞搞爱搞搞爱搞搞 | 一区二区成人电影 |