1. 程式人生 > >支付寶支付Java後臺總結

支付寶支付Java後臺總結

這個支付的流程是前端H5(APP等)需要支付時呼叫後臺的介面拿到我們加密的簽名去調起支付寶的支付介面(支付寶APP)進行支付操作,並且前端在支付成功後,支付寶後臺會回撥一個我們在簽名時寫入的一個介面地址進行支付結果的非同步通知。

前置準備

  • 1、在整個編寫過程中使用到的變數主要有私鑰、公鑰以及你的APPID(H5支付不需要),這些都是你在螞蟻金服註冊之後拿到的。
  • 2、使用到的jar包:

    • alipay-sdk-java*.jar—————————支付寶SDK編譯檔案jar
    • alipay-sdk-java*-source.jar——————支付寶SDK原始碼檔案jar
    • commons-logging-1.1.1.jar——————SDK依賴的日誌jar
    • commons-logging-1.1.1-sources.jar———SDK依賴的日誌原始碼jar

      支付寶的SDK的jar包沒有在maven repository裡註冊,因此要自己去官網上下載生成jar包並打進maven倉庫裡,懶得寫的同學可以點選這裡直接下載。

程式碼

獲取簽名的介面

@ResponseBody
@RequestMapping(value="/alipaySign",method=RequestMethod.POST)
public JSONObject signprams(Double totalAmount,String userId,String out_trade_no){
    String subject = "Your Subject";        //主題
    String body = "Your Body";              //主題內容
    String CHARSET = "utf-8";

    /**
     * 例項化客戶端
     */
    AlipayClient alipayClient = new DefaultAlipayClient
    (PayConstants.Ali_Open_Api_Domain,PayConstants.Ali_AppId,
        PayConstants.ALI_PRIVATE_KEY,"json",CHARSET,PayConstants.ALI_PUBLIC_KEY,"RSA2");
    //例項化具體API對應的request類,類名稱和介面名稱對應
    AlipayTradeAppPayRequest alirequest = new AlipayTradeAppPayRequest();
    //sdk中的model入參
    AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
    model.setPassbackParams(body);      //描述資訊,新增附加資料
    model.setSubject(subject);          //商品標題
    model.setOutTradeNo(out_trade_no);  //訂單號
    model.setTimeoutExpress("30m");     //超時關閉該訂單時間
    model.setTotalAmount(Double.toString(totalAmount));     //將double數值轉換成String類
    model.setProductCode(PayConstants.Ali_ProductCode);
    alirequest.setBizModel(model);
    alirequest.setNotifyUrl(PayConstants.Ali_Notify_Url);   //回撥地址

    String orderStr = "";
    try {
        AlipayTradeAppPayResponse response = alipayClient.sdkExecute(alirequest);
        orderStr = response.getBody();
    } catch (AlipayApiException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    String sign = DigestUtils.md5Hex(out_trade_no).toUpperCase();

    /////////////////處理你自己的邏輯/////////////////////////

    JSONObject resObj = new JSONObject();
    resObj.put("code", "SUCCESS");
    resObj.put("out_trade_no", out_trade_no);
    resObj.put("sign", sign);
    resObj.put("orderStr",orderStr);
    System.out.println(resObj.toJSONString());
    System.out.println(resObj.toString());
    return resObj;
}

回撥的介面
回撥的地址一定要保證是外網的地址,內網開發地址因為防火牆的限制不一定能訪問到。

@ResponseBody
@RequestMapping(value="/alipayNotify",method=RequestMethod.POST)
public String getNotify(HttpServletRequest request){
    Map requestParams = request.getParameterMap();
    logger.info("支付寶支付結果通知:"+requestParams.toString());
    //獲取支付寶POST過來反饋資訊
    Map<String,String> params = new HashMap<String,String>();

    for(Iterator iter=requestParams.keySet().iterator();iter.hasNext();){
        String name = (String)iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr= "";
        for(int i=0;i < values.length;i++){
            valueStr = (i == values.length - 1) ? valueStr + values[i]
                    : valueStr + values[i] + ",";
            logger.info(valueStr);
            //亂碼解決,這段程式碼在出現亂碼時使用。
            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }
    }

    ///////////////////處理自己的邏輯//////////////////////

    try {
        boolean flag = AlipaySignature.rsaCheckV1
        (params, PayConstants.ALI_PUBLIC_KEY, "UTF-8", "RSA2");
        if(flag){
            if("TRADE_SUCCESS".equals(params.get("trade_status")))

        }
    } catch (AlipayApiException e) {
        e.printStackTrace();
    }
    return "SUCCESS";
}

相關推薦

支付支付Java後臺總結

這個支付的流程是前端H5(APP等)需要支付時呼叫後臺的介面拿到我們加密的簽名去調起支付寶的支付介面(支付寶APP)進行支付操作,並且前端在支付成功後,支付寶後臺會回撥一個我們在簽名時寫入的一個介面地址進行支付結果的非同步通知。 前置準備 1、在整個編寫過

Java 從零開始實現支付支付(後臺)

框架使用的是spring boot 我們整合支付寶支付 也就需要提供兩個接口出來.一個是給前端 作用是拿到請求引數加簽返回給前端前端拿到我們返回的資料.進行調起支付就行了,第二個介面是提供給支付寶的伺服器,支付成功或者失敗的時候.支付寶的伺服器會回撥我們的這個介面.非同步通

微信APP支付Java後臺總結

出於興趣寫了一個純支付的模組,有興趣的同學可以去看看(戳我) ———————————分隔線———————————– 微信APP支付大致的流程和支付寶APP支付有很大不同(想了解支付寶APP支付的同學點這裡),其中略坑的一點就是MD5加密的方法需要自己寫,好在

支付支付接入(Android/IOS(swift)/Java後臺)

本文章僅作為個人筆記 IOS端(swift): //從伺服器獲取支付簽名字串,這裡在後面伺服器程式碼裡會說明,交給伺服器處理即可 var signStr = getAliPayPaySignStrFromService() //調起支付寶

java 微信與支付退款介面開發總結

目錄 0、概述 此文件為了指導在wordpress下使用Markdown on Save外掛編寫markdown。 markdown語法說明請參閱:http://wowubuntu.com/markdown/index.html 1、段落 1.1

微信app支付(android端+java後臺)

微信 APP 支付本文講解使用微信支付接口完成在android開發的原生態app中完成微信支付功能, 文章具體講解了前端android如何集成微信支付功能以及後臺如何組裝前端需要支付信息, 話不多話, 具體看文章內容吧00:00 / 07:03正常 本實例項目運行條件: 開發環境: 【Android St

支付退款java實現

line params _id roc 開頭 result gets .html ice //config public class AlipayRefundConfig { private final String charset = "UTF-8";

java實現沙箱測試環境支付支付(demo)和整合微信支付支付支付到ssm

mar 文件 fun Go examples IT === throws 由於 文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關註我的微信公眾號:好好學java,獲取優質學習資源。 一、支付寶測試環境代碼測試 1.下載電腦網站的官方demo: 下載地址:https:

支付支付總結

else rspec 原因 client private nslog oid vat net 現在不少app內都集成了支付寶功能 使用支付寶進行一個完整的支付功能,大致有以下步驟: 1>先與支付寶簽約,獲得商戶ID(partner)和賬號ID(seller)

JAVA項目實戰,項目架構,高並發,分布式,微服務架構,微信支付支付支付,理財系統,並發編程

等等 搭建 服務器 net 三方庫 必須 服務發現 netflix 分布式 Spring Cloud集成項目有很多,下面我們列舉一下和Spring Cloud相關的優秀項目,我們的企業架構中用到了很多的優秀項目,說白了,也是站在巨人的肩膀上去整合的。在學習Spring Cl

Java呼叫支付支付介面 詳細教程

1,先去支付寶螞蟻金服官網申請電腦網站支付簽約。 網址:https://b.alipay.com/signing/authorizedProductSet.htm?navKey=all#/ 2,去官網下載java開發的demo 環境:Eclipse+JDK1.6及以上+Tomcat6.0

支付支付介面總結

登陸 螞蟻金服提供了支付的測試環境和測試商家賣家賬號和賣家賬號,也提供了一套demo 登陸時使用自己真實線上的支付寶,服務可選擇個人自研開發。 ~> 開放平臺-沙箱環境 沙箱配置 APPID和支付寶閘道器都是其自動生成提供的,不需要配置,沙箱只需要在在這裡

支付支付--即時到賬 開發總結

轉載:LazyCat_Ky 的部落格 http://www.cnblogs.com/LzayCat/p/5539095.html 在支付寶支付的開發過程中,通過自己的理解和嘗試做出一點流程總結記錄:   一.前往 https://doc.open.

支付支付Java程式碼

支付寶呼叫流程 開發前的準備工作 配置應用閘道器 應用閘道器裡面填寫的值就是商戶後臺的非同步回撥地址.也就是在支付寶付完款之後,由支付寶呼叫商戶,便於商戶驗證訂單各資訊和更新訂單狀態 授權回撥地址 授權回撥地址的值是指使用者在使用支付寶付款成功後從支付寶跳轉到商戶自己的頁面. 介面加密方式 這個用於商戶

java版+支付支付和微信支付(一)

最近公司在做支付模組,在接入過程中遇到了很多坑,費了不少事,現在分享一下接入方法,也記錄一下,以後可能還用的到。用的是支付寶的即時到帳支付功能和微信的掃碼支付功能,相比起來,個人感覺支付寶的文件和接入方式都比微信的容易理解和操作,也不用自己寫頁面,接入起來比較方便,畢竟是支付

呼叫微信和支付第三方介面方法總結

<span style="white-space:pre">  </span>    //判斷證書               if (resHandler.getParameter("sign").equals(                   WeixinSignUtil.

Java 支付支付,退款,單筆轉賬到支付賬戶(支付支付)

  最近一直在接觸第三方,剛接入完支付寶的API做一下總結,個人能力薄弱有不對的地方望指教.  做的是一個小型電商專案,所以會接入第三方的支付和登入功能, 第一次接入第三方擼了很多官方文件.   進入主題, 支付寶支付先要去 螞蟻金服開放平臺註冊賬號:https://open.alipay.co

Java支付支付(電腦網站支付)案例實戰

摘要:最近的一個專案中涉及到了支付業務,其中用到了微信支付和支付寶支付,在做的過程中也遇到些問題,正好馬上放假了,公司不忙了,所以現在總結梳理一下,分享給有需要的人,也為自己以後回顧留個思路。 一:支付寶支付接入準備工作: 首先,支付寶支付和微信支付意願,都是隻支援企業使

後端---史上最全最小白最簡單最細緻的Java接入支付支付介面方法

昨天Boss在講專案的業務需求的時候對我突然說讓我做一下支付寶微信支付介面這塊功能,我的心裡是充滿問號的????,但是我的嘴卻堅定的說出了沒問題!!!                     &n

支付支付流程總結

.... 藍水晶商城網站開發 這是一個B2C網站,採用開源商城Ecshop進行二次開發。我主要負責前 臺模板的套用,新增爆款功能和新增部分後臺功能。 bambin嬰兒用品品牌商城網開發這是一個響應式品牌網站,採用ThinkPHP框架搭建。較之以前,我做了後臺的批量刪除,為了