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

springboot 集成支付寶支付的示例代碼

 更新時(shí)間:2020年06月19日 15:33:27   作者:一朵野花2  
這篇文章主要介紹了springboot 集成支付寶支付的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

最簡(jiǎn)單的springboot集成支付寶

1 注冊(cè)沙箱

沙箱是一個(gè)模擬環(huán)境登錄,百度螞蟻金服開(kāi)放平臺(tái),支付寶掃碼登錄如下


然后沙箱需要注冊(cè)一下,非常之簡(jiǎn)單,注冊(cè)好以后進(jìn)入到如下頁(yè)面,選沙箱工具,然后下載一個(gè)生成密鑰的工具。然后解壓按照里面的readme生成公私密鑰,

選擇沙箱應(yīng)用 上傳公鑰即可。。沙箱到這里就基本完成了,里面還有沙箱版本的的android app可以下載下來(lái)。

java 程序

1 新建一個(gè)springboot項(xiàng)目

因?yàn)槲覀儎?chuàng)建的是一個(gè)web工程,所以,僅僅演示支付寶的demo,只需要勾選web就足夠了。

2 添加alipay-sdk-java和fastjson

fastjson 的作用是用到了其中的JSON.toString方法。
alipay-sdk-java的作用不用說(shuō)自然是支付寶的sdk,是必不可少的。

 <dependency>
      <groupId>com.alipay.api</groupId>
      <artifactId>alipay-sdk-java</artifactId>
      <version>20170615110434</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.7</version>
    </dependency>

3 Config

新建一個(gè)支付寶的config文件,如下
因?yàn)橹Ц秾氈Ц锻瓿梢院髸?huì)有一個(gè)回調(diào)函數(shù)返回商家頁(yè)面

該頁(yè)面完成過(guò)一會(huì)兒結(jié)束以后會(huì)有一個(gè)回調(diào),,因?yàn)榛卣{(diào)地址必須是公網(wǎng)可以直接訪問(wèn),這也就是下面用到了netapp映射的原因neturl即為映射的公網(wǎng)地址。

package com.example.pay.config.pay;

import org.springframework.context.annotation.Configuration;

import java.io.FileWriter;
import java.io.IOException;

/**
 * @author ligen
 * @title: AliPayConfig
 * @projectName demo
 * @description:
 * @date 2019/6/1014:20
 */
@Configuration
public class AliPayConfig {

//↓↓↓↓↓↓↓↓↓↓請(qǐng)?jiān)谶@里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
 //  netapp映射的地址,,,根據(jù)自己的需要修改
  private static String neturl = "http://g5kike.natappfree.cc";

  // 應(yīng)用ID,您的APPID,收款賬號(hào)既是您的APPID對(duì)應(yīng)支付寶賬號(hào) 按照我文章圖上的信息填寫(xiě)
  public static String app_id = "2016092800619078";

  // 商戶私鑰,您的PKCS8格式RSA2私鑰 剛剛生成的私鑰直接復(fù)制填寫(xiě)
  public static String merchant_private_key ="粘貼生成的私鑰";

  // 支付寶公鑰,對(duì)應(yīng)APPID下的支付寶公鑰。 按照我文章圖上的信息填寫(xiě)支付寶公鑰,別填成商戶公鑰
  public static String alipay_public_key = "粘貼生成的公鑰";
  // 服務(wù)器異步通知頁(yè)面路徑 需http://格式的完整路徑,不能加?id=123這類(lèi)自定義參數(shù),其實(shí)就是你的一個(gè)支付完成后返回的頁(yè)面URL
  public static String notify_url = neturl+"/alipay/notify_url";

  // 頁(yè)面跳轉(zhuǎn)同步通知頁(yè)面路徑 需http://格式的完整路徑,不能加?id=123這類(lèi)自定義參數(shù),其實(shí)就是你的一個(gè)支付完成后返回的頁(yè)面URL
  public static String return_url = neturl+"/alipay/return_url";

  // 簽名方式
  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";

  // 支付寶網(wǎng)關(guān)
  public static String log_path = "C:\\";


//↑↑↑↑↑↑↑↑↑↑請(qǐng)?jiān)谶@里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

  /**
   * 寫(xiě)日志,方便測(cè)試(看網(wǎng)站需求,也可以改成把記錄存入數(shù)據(jù)庫(kù))
   * @param sWord 要寫(xiě)入日志里的文本內(nèi)容
   */
  public static void logResult(String sWord) {
    FileWriter writer = null;
    try {
      writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");
      writer.write(sWord);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (writer != null) {
        try {
          writer.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }
}

4 Service

調(diào)用支付寶的支付接口就是將一包數(shù)據(jù)通過(guò)支付寶SDK的一個(gè)接口發(fā)送給支付寶的服務(wù)器,然后他會(huì)返回給你一個(gè)輸入密碼確認(rèn)支付的界面。
所以只需要干兩件事

1 組裝數(shù)據(jù)

數(shù)據(jù)最少有5項(xiàng),注意map的key和value都是字符串

2 創(chuàng)建客戶端

創(chuàng)建一個(gè) Client實(shí)例,其中的值即為我們Config中的值

3 發(fā)送數(shù)據(jù)

這里面先將數(shù)據(jù)轉(zhuǎn)化為request 最后將request通過(guò)Client發(fā)出去。用到了fastjson的toString方法。也就是前面導(dǎo)入fastjson依賴(lài)的原因

package com.example.pay.config.pay;

import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.example.pay.domain.AlipayVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author ligen
 * @title: AliPayService
 * @projectName demo
 * @description:
 * @date 2019/6/119:11
 */
@Service
public class AliPayService {
  Logger logger = LoggerFactory.getLogger("AliPayService.class");


  @Autowired
  AlipayVo staticVo;

  //  支付服務(wù)
  public String aliPay() throws AlipayApiException {

    // 構(gòu)建支付數(shù)據(jù)信息
    Map<String, String> data = new HashMap<>();
    data.put("subject", staticVo.getSubject()); //訂單標(biāo)題
    data.put("out_trade_no", new SimpleDateFormat().format(new Date())); //商戶訂單號(hào),64個(gè)字符以內(nèi)、可包含字母、數(shù)字、下劃線;需保證在商戶端不重復(fù)   //此處模擬訂單號(hào)為時(shí)間
    data.put("timeout_express", staticVo.getTimout_express()); //該筆訂單允許的最晚付款時(shí)間
    data.put("total_amount", staticVo.getTotle_amout()); //訂單總金額,單位為元,精確到小數(shù)點(diǎn)后兩位,取值范圍[0.01,100000000]
    data.put("product_code", "FAST_INSTANT_TRADE_PAY"); //銷(xiāo)售產(chǎn)品碼,商家和支付寶簽約的產(chǎn)品碼,為固定值QUICK_MSECURITY_PAY


    //構(gòu)建客戶端
    DefaultAlipayClient alipayRsa2Client = new DefaultAlipayClient(
        AliPayConfig.gatewayUrl,
        AliPayConfig.app_id,
        AliPayConfig.merchant_private_key,
        "json",
        AliPayConfig.charset,
        AliPayConfig.alipay_public_key,
        AliPayConfig.sign_type);
//    AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();// APP支付
    AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); // 網(wǎng)頁(yè)支付
//    AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); //移動(dòng)h5
    request.setNotifyUrl(AliPayConfig.notify_url);
    request.setReturnUrl(AliPayConfig.return_url);
    request.setBizContent(JSON.toJSONString(data));
    logger.info(JSON.toJSONString(data));
    String response = alipayRsa2Client.pageExecute(request).getBody();
    logger.info(response);
    return response;
  }
}

5 controller 層很簡(jiǎn)單 代碼如下

package com.example.pay.controller;

import com.alipay.api.AlipayApiException;
import com.example.pay.config.pay.AliPayService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**

@author ligen
@title: PayController
@projectName demo
@description:
@date 2019/6/1013:25
*/
@Api(tags = “支付寶測(cè)試”)
@RestController
public class PayController {

Logger logger = LoggerFactory.getLogger("PayController.class");

@Autowired
AliPayService aliPayService;

@ApiOperation("支付接口")
@RequestMapping(value = "alipay/toPay/{amount}", method = RequestMethod.GET)
public String alipay(@PathVariable(value = "amount") Integer amount) throws AlipayApiException {
  return aliPayService.aliPay(amount);
}

@ApiOperation("支付異步通知接口")
@GetMapping("alipay/notify_url")
public String notifyAlipay() {

  logger.info("----notify-----");
  return " a li pay notify ";
}

@ApiOperation("支付完成以后的回調(diào)接口")
@GetMapping("alipay/return_url")
public String returnAlipay() {
  logger.info("----return-----");
  return " a li pay return ";
}
}

6 運(yùn)行

瀏覽器訪問(wèn)(我這里設(shè)置了端口號(hào)為1234) 路徑最后面200是金額參數(shù)。

會(huì)跳轉(zhuǎn)到如下頁(yè)面,

此時(shí)可以使用沙箱支付寶app支付了,這里我們使用賬戶登錄。。。記住是付款用戶登錄,而不是收款用戶。。。那么哪里看付款收款呢。
打開(kāi)螞蟻金服->開(kāi)發(fā)者中心->沙箱 如下圖

登錄第二個(gè)賬號(hào)后如下圖 密碼默認(rèn)都是111111

如果設(shè)置了return url 將在該頁(yè)面結(jié)束以后自動(dòng)跳轉(zhuǎn)至return url對(duì)應(yīng)的頁(yè)面,如下 我在return url只是返回了一個(gè)字符串。

代碼git 地址

https://github.com/ligengithub/pay.git

到此這篇關(guān)于springboot 集成支付寶支付的示例代碼的文章就介紹到這了,更多相關(guān)springboot 集成支付寶支付內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot使用Druid連接池的示例代碼

    Spring Boot使用Druid連接池的示例代碼

    Druid是Java語(yǔ)言中最好的數(shù)據(jù)庫(kù)連接池。這篇文章主要介紹了Spring Boot使用Druid連接池的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • mybatis模糊查詢like語(yǔ)句該如何寫(xiě)

    mybatis模糊查詢like語(yǔ)句該如何寫(xiě)

    MyBatis模糊查詢通常使用LIKE關(guān)鍵字,結(jié)合concat函數(shù)拼接通配符%實(shí)現(xiàn),在MyBatis配置文件中,通過(guò)#{keyword}傳遞參數(shù),生成帶有通配符的查詢語(yǔ)句,MyBatis-Plus中,通過(guò)LambdaQueryWrapper類(lèi)和like方法構(gòu)建模糊查詢條件,簡(jiǎn)化查詢操作
    2024-09-09
  • springboot2.0整合dubbo的示例代碼

    springboot2.0整合dubbo的示例代碼

    這篇文章主要介紹了springboot2.0整合dubbo的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Java中漢字轉(zhuǎn)拼音pinyin4j用法實(shí)例分析

    Java中漢字轉(zhuǎn)拼音pinyin4j用法實(shí)例分析

    這篇文章主要介紹了Java中漢字轉(zhuǎn)拼音pinyin4j用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了pinyin4j庫(kù)的具體使用技巧,需要的朋友可以參考下
    2015-12-12
  • Java經(jīng)典面試題匯總:網(wǎng)絡(luò)編程

    Java經(jīng)典面試題匯總:網(wǎng)絡(luò)編程

    本篇總結(jié)的是Java 網(wǎng)絡(luò)編程相關(guān)的面試題,后續(xù)會(huì)持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實(shí)習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯(cuò)誤還望大家多多包涵,不吝賜教,謝謝
    2021-07-07
  • Java 位圖法排序的使用方法

    Java 位圖法排序的使用方法

    本篇文章,小編將為大家介紹關(guān)于Java 位圖法排序的使用方法,有需要的朋友可以參考一下
    2013-04-04
  • Java使用Spire.Doc for Java輕松搞定Word文檔打印

    Java使用Spire.Doc for Java輕松搞定Word文檔打印

    在 Java 應(yīng)用程序中實(shí)現(xiàn) Word 文檔的直接打印功能是許多企業(yè)級(jí)應(yīng)用的需求,本文將詳細(xì)介紹如何使用 Spire.Doc for Java實(shí)現(xiàn)從加載 Word 文檔到指定打印機(jī)打印的完整解決方案,感興趣的小伙伴可以了解下
    2026-02-02
  • 淺談java 執(zhí)行jar包中的main方法

    淺談java 執(zhí)行jar包中的main方法

    下面小編就為大家?guī)?lái)一篇淺談java 執(zhí)行jar包中的main方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • Java實(shí)現(xiàn)迷你圖書(shū)管理系統(tǒng)案例全程

    Java實(shí)現(xiàn)迷你圖書(shū)管理系統(tǒng)案例全程

    這篇文章主要為大家詳細(xì)介紹了如何利用java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • springboot與mybatis整合實(shí)例詳解(完美融合)

    springboot與mybatis整合實(shí)例詳解(完美融合)

    大家都知道springboot搭建一個(gè)spring框架只需要秒秒鐘。下面通過(guò)實(shí)例代碼給大家介紹一下springboot與mybatis的完美融合,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09

最新評(píng)論

怀化市| 灌南县| 泗洪县| 乃东县| 屏山县| 托里县| 南投市| 北票市| 汾西县| 斗六市| 英山县| 民权县| 木兰县| 龙南县| 阜城县| 南乐县| 绍兴市| 如东县| 政和县| 荣昌县| 巢湖市| 柳林县| 格尔木市| 康乐县| 盖州市| 乌拉特后旗| 开鲁县| 光山县| 桓仁| 利川市| 山东省| 柏乡县| 南宁市| 石屏县| 五寨县| 平和县| 中方县| 澄江县| 曲麻莱县| 荃湾区| 昆明市|