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

Spring MVC 使用支付寶接口完成在線支付的示例代碼

 更新時間:2017年08月11日 15:17:03   作者:geekzsp  
本篇文章主要介紹了Spring MVC 使用支付寶接口完成在線支付的示例代碼,具有一定的參考價值,有興趣的可以了解一下

項目中要使用到在線支付功能 目前常用的在線支付手段主要是 支付寶 和微信。

這里我使用的是支付寶支付,支付寶有個好處就是他有一個沙箱模式 即使沒有申請渠道的資格也可以體驗一把在線支付。

第一步:完善沙箱信息

進入支付寶的開發(fā)者中心 就可以看到有個沙箱環(huán)境

使用支付寶提供的秘鑰生成工具 生成對應(yīng)的秘鑰 一定要保存好。支付寶推薦使用RSA2(SHA256)秘鑰

把自己的公鑰填上去就可以了。

第二步 閱讀在線支付開發(fā)文檔

里面需要的配置信息 對應(yīng)的使用沙箱環(huán)境的信息

第三步 環(huán)境搭建

下載服務(wù)端SDK 并添加到項目中

這里我使用的maven項目 導(dǎo)入本地jar包采用了下列方式

 <dependency>
      <groupId>com.alipay</groupId>
      <artifactId>alipay</artifactId>
      <version>1.1.1</version>
      <scope>system</scope>
      <!--本地jar的路徑,相對或者絕對都可以-->
      <systemPath>${project.basedir}/lib/alipay-sdk-java20170307171631.jar</systemPath>
    </dependency>
    <dependency>
      <groupId>com.alipay1</groupId>
      <artifactId>commons</artifactId>
      <version>1.1.1</version>
      <scope>system</scope>
      <!--本地jar的路徑,相對或者絕對都可以-->
      <systemPath>${project.basedir}/lib/commons-logging-1.1.1.jar</systemPath>
    </dependency>

1、調(diào)用接口 啟動支付頁面 具體參數(shù)說明 請查看文檔

//轉(zhuǎn)到支付頁面
    //初始化客戶端 只需要實例化一次(線程安全)
    AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do"
        , "2016080300153333", GlobalConstant.APP_PRIVATE_KEY, "json", "UTF-8", GlobalConstant.ALIPAY_PUBLIC_KEY, "RSA2");
    AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//創(chuàng)建API對應(yīng)的request
    //在公共參數(shù)中設(shè)置回跳和通知地址
    alipayRequest.setReturnUrl("回跳地址");
    //異步回調(diào)一定是要在外網(wǎng) 不然支付寶服務(wù)器無法訪問
    alipayRequest.setNotifyUrl("異步回調(diào)地址");
    alipayRequest.setBizContent("{" +
        "  \"out_trade_no\":\"" + orderId + "\"," +
        "  \"total_amount\":\"" + fetchParcel.getMoney() + "\"," +
        "  \"subject\":\"代領(lǐng)快遞\"," +
        "  \"seller_id\":\"2088102169684935\"," +
        "  \"product_code\":\"QUICK_WAP_PAY\"" +
        " }");//填充業(yè)務(wù)參數(shù)
    String form = alipayClient.pageExecute(alipayRequest).getBody(); //調(diào)用SDK生成表單
    httpResponse.setContentType("text/html;charset=utf-8");
    httpResponse.getWriter().write(form);//直接將完整的表單html輸出到頁面
    httpResponse.getWriter().flush();

1、接收同步回調(diào)展示 結(jié)果 此結(jié)果只是展示,具體狀態(tài)必須依賴支付寶的異步通知

2、接收異步回調(diào)更改訂單狀態(tài) 支付寶的異步回調(diào) 是服務(wù)器之間的通訊并不會產(chǎn)生頁面 并且 設(shè)置的回調(diào)地址

一定是要在外網(wǎng)上的 不然支付寶的服務(wù)器是無法訪問該地址的

對回調(diào)得到的信息要使用支付寶的api進行校驗

  //將異步通知中收到的所有參數(shù)都存放到map中
    Map<String, String> paramsMap =new HashMap<>();
    paramsMap.put("tarde_no",trade_no);
    paramsMap.put("trade_status",trade_status);
    paramsMap.put("total_amount",total_amount);
    paramsMap.put("out_trade_no",out_trade_no);
    boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, GlobalConstant.ALIPAY_PUBLIC_KEY, "UTF-8", "RSA2");     //調(diào)用SDK驗證簽名
    if (signVerified) {
      //驗簽成功后,按照支付結(jié)果異步通知中的描述,對支付結(jié)果中的業(yè)務(wù)內(nèi)容進行二次校驗,校驗成功后在response中返回success并繼續(xù)商戶自身業(yè)務(wù)處理,校驗失敗返回failure
      String out_trade_no1 = paramsMap.get("out_trade_no");
      String trade_status1 = paramsMap.get("trade_status");
      logger.info(out_trade_no1+":"+trade_status1);
      return "success";
    } else {
      //驗簽失敗則記錄異常日志,并在response中返回failure.
      return "failure";
    }

第4步 進行支付體驗

這里選擇支付寶賬號登錄 賬號 密碼 在沙箱環(huán)境中可以找到 (買家賬號)建議下載支付寶沙箱錢包 可以模擬在線支付調(diào)用錢包客戶端的效果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 據(jù)說這個是可以擼到2089年的idea2020.2(推薦)

    據(jù)說這個是可以擼到2089年的idea2020.2(推薦)

    這篇文章主要介紹了據(jù)說這個是可以擼到2089年的idea2020.2,本教程給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 關(guān)于Java中增強for循環(huán)使用的注意事項

    關(guān)于Java中增強for循環(huán)使用的注意事項

    for循環(huán)語句是java循環(huán)語句中最常用的循環(huán)語句,一般用在循環(huán)次數(shù)已知的情況下使用,這篇文章主要給大家介紹了關(guān)于Java中增強for循環(huán)使用的注意事項,需要的朋友可以參考下
    2021-06-06
  • 詳解spring cloud如何使用spring-test進行單元測試

    詳解spring cloud如何使用spring-test進行單元測試

    這篇文章主要介紹了spring cloud如何使用spring-test進行單元測試,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能

    Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能

    Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強大。接下來通過本文給大家分享Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能,感興趣的朋友一起看看吧
    2019-11-11
  • 使用SpringBoot發(fā)送郵箱驗證碼的簡單實現(xiàn)

    使用SpringBoot發(fā)送郵箱驗證碼的簡單實現(xiàn)

    這篇文章主要介紹了使用SpringBoot發(fā)送郵箱驗證碼的簡單實現(xiàn),咱們今天來講使用QQ郵箱來發(fā)送和接收驗證碼,首先來介紹一下它在SpringBoot項目中的具體應(yīng)用,需要的朋友可以參考下
    2023-04-04
  • Java三目運算符的實戰(zhàn)案例

    Java三目運算符的實戰(zhàn)案例

    三目運算符在java中運用可以說非常的廣泛,下面這篇文章主要給大家介紹了關(guān)于Java三目運算符的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • SpringBoot集成redis實現(xiàn)分布式鎖的示例代碼

    SpringBoot集成redis實現(xiàn)分布式鎖的示例代碼

    這篇文章主要介紹了SpringBoot集成redis實現(xiàn)分布式鎖的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • springboot整合JPA過程解析

    springboot整合JPA過程解析

    這篇文章主要介紹了springboot整合JPA過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Spring Data中domain模塊的使用

    Spring Data中domain模塊的使用

    Spring Data是一個流行的數(shù)據(jù)訪問框架,本文主要介紹了Spring Data中domain模塊的使用,并展示如何使用它來優(yōu)化我們的數(shù)據(jù)訪問層,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • java反射超詳細講解

    java反射超詳細講解

    本文非常詳細的講解了java反射具體的內(nèi)容以及使用,java反射在現(xiàn)今的使用中很頻繁,希望此文可以幫大家解答疑惑,可以幫助大家理解
    2021-08-08

最新評論

西畴县| 涪陵区| 周宁县| 南靖县| 科尔| 扬州市| 沙雅县| 合川市| 巴青县| 进贤县| 廉江市| 宜章县| 香港 | 泗阳县| 吉木乃县| 防城港市| 宝山区| 福州市| 莱阳市| 井冈山市| 莱州市| 靖宇县| 阿克| 黔西| 深泽县| 高尔夫| 子洲县| 改则县| 唐河县| 延边| 湟中县| 吉木乃县| 剑河县| 洪江市| 于田县| 奉新县| 绥阳县| 凤阳县| 武宁县| 渑池县| 永城市|