1. 程式人生 > >支付寶稍看底層流程與加密

支付寶稍看底層流程與加密

如何整合支付寶

現在不少app內都集成了支付寶功能
使用支付寶進行一個完整的支付功能,大致有以下步驟:
  1. 向支付寶申請, 與支付寶簽約,獲得商戶ID(partner)和賬號ID(seller)
  2. 下載支付寶SDK
  3. 生成訂單資訊,進行數字簽名
  4. 呼叫支付寶客戶端,由支付寶客戶端跟支付寶安全伺服器打交道
  5. 支付完畢後,支付寶客戶端會自動跳回到原來的應用程式
  6. 在原來的應用程式中顯示支付結果給使用者看

支付寶資料流程圖


官方資料流程圖


注:其實就只有1,3,7步是我們的客戶端需要處理的,其餘的只需要瞭解流程即可.

  1. 構造訂單資料並簽名 

    商戶客戶端根據支付寶錢包支付開發包的介面規則,通過程式生成得到簽名結果及 要傳輸給支付寶錢包支付開發包的資料集合。

  2. 傳送請求資料 把構造完成的資料集合傳遞給支付寶錢包支付開發包。
  3. 支付寶錢包支付開發包對請求資料進行處理 

    支付寶錢包支付開發包將請求資料根據業務規則包裝後傳遞給支付寶服務端,服務端得到這些集合後,會先進行安全校驗等驗證,一系列驗證通過後便會處理完成這 次傳送過來的資料請求。

  4. 返回處理的結果資料 

    對於處理完成的交易,支付寶會以兩種方式把資料分別反饋給商戶應用和商戶服務 器。

    1. 在手機客戶端上,開發包客戶端直接把處理的資料結果反饋給商戶客戶端;
    2. 支付寶伺服器主動發起通知,呼叫商戶在請求時設定好的頁面路徑(引數 notify_url,如果商戶沒設定,則不會進行該操作)。
  5. 對獲取的返回結果資料進行處理 

    商戶在客戶端同步通知接收模組或服務端非同步通知接收模組獲取支付寶返回的結 果資料後,可以結合商戶自身業務邏輯進行資料處理(如:訂單更新、自動充值到 會員賬號中等)。同步通知結果僅用於結果展示,入庫資料需以非同步通知為準。 

支付寶整合步驟

  1. 如何簽約
  2. 如何整合

我們這裡主要講解整合,簽約按照步驟一步步搞就可以了.

支付寶整合

  1. 檔案目錄   
    1. 使用規則文件主要描述如何繼承
    2. 介面開發包2.0標準版 文件主要描述相關介面
  2. 建立專案,把SDK匯入專案中
  3. 搭建基本的演示介面
  4. 匯入Demo 中的 libcrypto.a,libssl.a 靜態庫, openssl,Util 資料夾和Order,APAuthV2Info
  5. 報錯修正

    1. 如果遇到執行後報錯,類似於以下提示資訊:

       Cannot find interface declaration for 'NSObject', superclass of 'Base64'
      

      那麼需要開啟報錯了的檔案,增加標頭檔案。

      #import <Foundation/Foundation.h>
      
    2. 如果商戶要在某個檔案中使用支付寶的開發包類庫,需增加引用標頭檔案。 

           #import <AlipaySDK/AlipaySDK.h>
      
    3. 'openssl/asn1.h' file not found 錯誤

      點選專案名稱,點選Build Settings選項卡,在搜尋框中,以關鍵字search 搜尋,對Header Search Paths增加標頭檔案路徑:$(SRCROOT)/專案名 稱。如果標頭檔案資訊已增加,可不必再增加。

    4. 點選專案名稱,點選“Build Settings”選項卡,在搜尋框中,以關鍵字bitcode ,設定為NO
    5. AlipaySDK.h 匯入 UIKit 框架
    6. 點選專案名稱,點選“Build Phases”選項卡,在“Link Binary with Librarles” 選項中,“SystemConfiguration.framework” 系統庫檔案.
  6. 生成簽名訂單字串

        //生成訂單字串
        NSString *orderSpec = [order description];
        //根據私鑰建立訂單簽名
        id<DataSigner> signer = CreateRSADataSigner(privateKey);
        //生成簽名字串
        NSString *signedString = [signer signString:orderSpec];
    
  7. 設定Scheme


  8. 呼叫支付介面,監聽支付結果回撥

    • block 回撥
      [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
       NSLog(@"reslut = %@",resultDic);
      }];
      
    • 支付寶錢包開啟的時候回撥 在AppDelegate 中

        - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
          sourceApplication:(NSString *)sourceApplication
                 annotation:(id)annotation {
      
             //跳轉支付寶錢包進行支付,處理支付結果
              [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                            NSLog(@"result = %@",resultDic);
                }];
      
            return YES;
        }
      

      10.處理支付寶錢包回撥,在AppDelegate 中 

        - (BOOL)application:(UIApplication *)application
                    openURL:(NSURL *)url
          sourceApplication:(NSString *)sourceApplication
                 annotation:(id)annotation {
             //跳轉支付寶錢包進行支付,處理支付結果
              [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                            NSLog(@"result = %@",resultDic);
                }];
      
            return YES;
        }
      
  9. 生成商家公鑰私鑰(RSA金鑰生成與使用)

    1. 開啟終端
    2. 進入一個合適目錄(我這裡放到桌面的RSA資料夾下)
    3. 生成RSA私鑰,輸入 openssl genrsa -out rsa_private_key.pem 1024 生成rsa_private_key.pem
    4. 生成RSA公鑰,輸入openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem命令回車 後,在當前資料夾中生成一個rsa_public_key.pem檔案為原始 的商戶公鑰(請妥善儲存該檔案,PHP 開發語言中需要使用該檔案),以下為命 令正確執行截圖:
    5. 生成PKCS8 編碼的私鑰, 輸入命令openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt並回車,當前介面中會直接顯示出生成結果:複製PKCS8編碼的私鑰把複製的內容粘 貼進一個新的記事本中,可隨意命名,只要知道這個是 PKCS8 格式的私鑰即可(請 妥善儲存該檔案)。
  10. 公鑰與私鑰的使用 # 支付寶


    其加密過程可分下面:(自己理解的,不喜勿噴)先將客戶端私鑰加密某一段資訊MD,再將團購資訊和那段被加密過的資訊MD做一個會話加密,成一個會話加密包,再將會話鑰匙用支付寶公鑰加密,再將加密包和被加密過的會話鑰匙傳到後臺伺服器做解密,先將加密過的會話祕鑰用支付寶私鑰解密成會話祕鑰,再用會話祕鑰解密加密包,再取出裡面的團購資訊和驗證簽名(計算並加密的MD,只用來做一個驗證),再用客戶端的公鑰做一個簽名驗證,防止以後出現某些問題出現抵賴問題

相關推薦

支付底層流程加密

如何整合支付寶 現在不少app內都集成了支付寶功能 使用支付寶進行一個完整的支付功能,大致有以下步驟: 向支付寶申請, 與支付寶簽約,獲得商戶ID(partner)和賬號ID(seller)下載支付寶SDK生成訂單資訊,進行數字簽名呼叫支付寶客戶端,由支付寶客戶端跟支

支付小程式開發之微信小程式不同的地方

前言: 本文僅彙總微信小程式移植支付寶小程式過程中遇到的一些不同的地方,詳細請參考官方開發文件。 網路請求: 對於網路請求,基本上改動不大,也就支付寶小程式沒有responseType屬性及響應碼欄位改成了status。 使用者授權登入: 1. 登入: wx.login   ====&nb

支付小程序開發之微信小程序不同的地方

示例代碼 調用 頁面 同步 get 沒有 小程序開發 bsp success 前言: 本文僅匯總微信小程序移植支付寶小程序過程中遇到的一些不同的地方,詳細請參考官方開發文檔。 網絡請求: 對於網絡請求,基本上改動不大,也就支付寶小程序沒有responseType屬性及

從香港地鐵接入支付背後移動發展新趨勢?

11月15日,香港地鐵宣佈獨家接入香港版“支付寶”(Alipay HK),後者將為港鐵提供包括二維碼支付系統、票務機、出入境閘門等一系列軟硬體改造。根據香港地鐵的規劃,預計到2020年中,香港的Alipay HK使用者只需掃碼即可過閘坐地鐵,移動支付方式帶動香港產業新發展,新的時代來臨了。 1.

IDEA支付小程式開發流程——專案搭建

伺服器端 在平臺上建立spring boot小程式應用 建立小程式 登入 螞蟻金服開放平臺,選擇 開發者中心 > 開發接入 > 小程式(立即接入) > 立即建立 > 建立。 填寫 基本資訊,點選 建立 按鈕,建立應用名為 Demo 小程式。

IDEA支付小程式開發流程——授權登入

IDEA,支付寶小程式 grammar_cjkRuby: true 前置條件 獲取APPID 新增獲取會員資訊服務 詳情 > 開發管理 > 功能列表 > 新增功能 > 勾選 獲取會員資訊 > 確認,新增完成後的效果如下圖

支付介面原理和流程 使用TP框架

tp框架的支付教程http://www.thinkphp.cn/code/240.html 重點來線上支付介面的原理和流程: 1、使用者向商城網站發起確認訂單的請求 2、商城網站接收到請求儲存訂單資料到資料庫或其他儲存介質 3、返回訂單確認頁面,頁面上應該顯示訂

Java支付支付開發流程原理【沙箱環境】【分散式事務解決方案】

不管是支付寶支付,還是微信支付,還是銀聯支付等,大部分的支付流程都是相似的,學會了其中的思想,那麼其他支付方式也就很簡單了。 支付寶支付流程: 1、A網站以POST請求方式提交引數給支付寶介面,在支付寶端進行支付處理。 POST請求方式一定程度下保證了安全性,即在url

Http協議請求, Post請求Get請求的區別,Base64和URL編碼,md5,sha-1加密,對稱和非對稱加密,支付微信第三方支付

Http協議與請求 Post請求 Post請求與Get請求的區別 Get請求的引數是直接放在url後面的,而Post請求是放在請求體中的 Get請求引數的長度會根據瀏覽器的不同實現有一定限制,而Post請求引數長度沒有限制

快速申請支付小程序流程

管理 lan color com get 工具 att 協議 width 2017年9月21日,支付寶小程序正式上線,那麽如何快速申請支付寶小程序?附上流程 準備工具: 1.支付寶賬號 2.螞蟻金服|開放平臺 步驟: 一、支付寶賬號登錄螞蟻金服|開放平臺 使用企業支

支付離線也能支付收款原理,流程

支付寶離線支付隨著移動支付的盛行,我們的衣食住行,基本上都離不開手機網絡,可是如果你的手機因為停機或信號不好等原因,無法聯網,但又沒有帶現金該怎麽辦呢? 今天就和大家解析一下,支付寶的離線支付功能。在沒有網絡時,借助離線支付技術,你依然可以通過手機進行支付。 原理1.離線支付的關

支付app支付java後臺流程及原理分析

system 分析 req eterm 格式 prop 通過 false 由於 java版支付寶app支付流程及原理分析   本實例是基於springmvc框架編寫 一、流程步驟 1.執行流程 當手機端app(就是你公司開發的a

android 集成支付app支付(原生態)-包括android前端java後臺

請求 call 修改 quest ali log gif 操作 asm 本文講解了 android開發的原生態app集成了支付寶支付, 還提供了java後臺服務器處理支付寶支付的加密代碼, app前端與java後臺服務器使用json數據格式交互信息,java後臺服務主要用來

支付支付流程

port dai 驗證 .py django unsigned utf mage dumps 註意:保存   支付寶公鑰(通過商戶公鑰生成)   商戶私鑰 settings.py中ALLOWED_HOSTS=["*"] 點擊支付,發送POST請求,提供商品信息及訂單號

GoDaddy用支付付款時出現我們無法處理這筆交易,請查您的付款信息並重試。

style 提示 com 信息 系統 國家 域名 ffffff AC 一、GoDaddy操作流程 在GoDaddy上購買及註冊域名的操作步驟,請參考https://www.jianshu.com/p/05289a4bc8b2進行操作。 二、我遇到的問題 今天用GoDaddy

pc 端支付支付流程

timestamp dbo 接口調用 div i++ hid jsp ids 分享 用戶在商戶網站上完成支付 一、商戶申請流程和業務場景 即時到賬:網上交易時,買家的交易資金直接打入賣家支付寶賬戶,快速回籠交易資金。 申請條件: 1) 申請前必須擁有經過實名認證的支付寶賬

支付開放平臺—開發中心—沙箱環境—詳細步驟操作說明

.bat png AS mda ref bat 詳細步驟 class 配置 1.第一步:要註冊企業賬號或者個人支付寶賬號,使用企業賬號或者個人賬號進行登錄的開放平臺。 2.第二步:首次進入系統界面有三個選項,用戶可以根據個人自由選擇第一項,第二項或者第三項的入住。 3.

支付H5 網頁端支付開發

接下來 們的 mage col 研發 http 進行 地址 產品 在日常生活中,我們基本上都是進行微信與支付寶的支付方式盡心支付,這種方式確實大大便利了我們的生活,那麽如何在我們的產品中進行微信與支付寶支付的植入開發呢? 我們先進行支付寶的H5與網頁端支付開發 支付寶的開發

支付介面(掃碼支付的原理)使用文件說明 支付非同步通知(notify_url)return_url.

支付寶介面使用文件說明 支付寶非同步通知(notify_url)與return_url.  現支付寶的通知有兩類。  A伺服器通知,對應的引數為notify_url,支付寶通知使用POST方式  B頁面跳轉通知,對應的引數為return_url,支

搞定支付接口—支付即時到賬支付接口詳細流程和代碼

getc 配置 鍵值 writer his 僅供參考 ttr package art 搞定支付接口(