分階段付款 學php,項目整理-支付寶的支付問題

支付寶作為一個被廣泛使用的支付工具,在是用的時候可以被廣泛使用。

可以使用demo提取(由于當時開發時SDK下載路徑無法下載,直接從DEMO中篩選了需要部分)

------------------我是開始開發思路的分割線--------------------------

本次主要是APP支付的流程。(本寶寶會陸續整理出前后端的詳盡資料,抽空寫下簡單的DEMO)

5fa7955fbd57b91cc178c74d44d15348.png

這里主要整理支付寶后臺交互的一些內容。

由于支付寶的簽名需要和SDK關聯吊起支付寶應用。這里在開始開發前需要確認兩端SDK的匹配問題。

----------------------------------我是開始開發SDK文件描述的分割線-------------------------------------

與前端直接引入SDK不同。這里要注意版本的一致或對應問題

支付寶在支付的過程中有需要后臺參與的主要兩個部分:

一)提交簽名等信息

1.預提交訂單。返回前端簽名后的訂單信息。

二)驗簽名信息

1.驗證前端同步的簽名信息(伴讀項目暫時沒有這個模塊)

2.獲取異步回調的信息

在目前的SDK可以直接使用的類文件是

1.接入SDK的文件

2.主要的SDK接入文件

3.接入SDK生成簽名所需要的類文件

9cd3ba63e6a80b737080fe6fae7e3b1f.png

-------------------我是開始開發描述的分割線-----------------------

由于本次項目是基于YII框架的PHP開發,基于框架配置將相關文件配置在項目的核心代碼的輔助文件部分

(1)文件引入位置:c**e/c**-**se/he**ers/

此處由于引入相關文件的管理問題,添加Alipay路徑進行統一管理。另外參照DEMO。將部分文件統一管理在aop目錄下。如上圖所示

(2)文件的使用。

首先去掉兩眼一抓瞎的整個看文檔看DEMO的前提。按照做需要的去一一實現,在實踐的問題里找解決方案。

按照之前分析的必要套路:

I) ?訂單與生成的處理->按要求生成加密字符給前段

II) 支付同步通知(通知到前端,前端主動調取驗證接口,驗證簽名等相應信息)->前端同步信息進行驗簽返回,成功通知用戶支付成功

III) 支付異步回調(支付寶主動回調)->驗簽,確認訂單信息

------------------我是開始開發代碼描述的分割線—————————————

首先對于文件的引入。簡單閱讀示例demo和文檔。根據描述配置相關的參數。

支付的業務主要在開放平臺存在。在開放平臺上申請應用,并申請相關業務支付金額后可以針對改應用進行詳盡的設置。https://doc.open.alipay.com/docs/doc.htm?docType=1&articleId=106541這是關于產品簽約的相關文檔描述以及秘鑰的相關配置方式。在正式開始編寫代碼前你需要:

(1)一個注冊好應用,申請好相關業務并簽約的平臺賬號

(2)設置好相關的秘鑰。并留有相關秘鑰的pem文件(沒有也可以,但是一定要留下商戶公鑰和商戶私鑰的具體內容)

(3)預留下相關商戶信息以便于配置,例如商戶ID;APPID;支付寶公鑰等

這里由于開發時間的關系沒有再次封裝,或對配置參數進行封裝(后期開始優化,不影響直接使用)

e2ead81242fa5d22a156135c2e83a134.png

上面是支付寶SDK在代碼里的使用。

參見新的支付寶文檔:

a761e3e15b7db6b5a28250fac00cc157.png

可以看出基本沒什么修改的。

我的代碼邏輯除了跟隨前端業務要求和需求添加商戶ID方便后期業務擴展幾乎沒有修改。

簡單講下,其實在支付寶的支付過程只要前后端的SDK對的上幾乎沒有坑。平緩進入第二階段,所以,SDK版本很重要,不要隨便下載一個SDK就直接使用啊親。當然支付只是付款了是不夠的!

關于回調

回調分為兩部分

(1)同步回調

(2)異步回調

支付寶注重講解了異步回調。此處也是在項目中主要實現了異步回調的問題。

先來談談異步回調

對于異步回調要先明確下異步回調的地址問題。在官方的平臺頁面上要設置notify_url

這里的url要是一個接口或一個PHP絕對路徑文件。支付寶建議為絕對路徑文件。但是這里個人建議仍使用和之前一致的標準接口所繼承的類的文件就好。

值得注意的是

(A)這個接口不可以有參數,有cookie等,或者頁面跳轉重定向,當訪問地址的時候是一個白頁即可。仍需注意的是,這個地址必須是公網可以自由訪問的。避免后期文件類的修改問題。

(B)這個地址要在生成訂單的時候直接設置在回調地址的位置。

(C)回調文件會值調取。調取到的參數獲取用JSON通知時使用的是$_POST

(D)文件驗簽的時候記得什么類型的簽名就用什么類型驗簽,一般的簽名類型為RAS2,但是DEMO上是RAS哦。

在驗簽和核實訂單信息后就可以修改相應訂單信息,記得在數據庫中需改目前訂單的狀態

67c674c7384dd9459d8d2a417a3681f9.png

這是主要驗簽的核心,這里的第一個參數是支付寶回調到的信息,第二個參數是證書(pem)文件的地址,沒有可以寫NULL,第三個是簽名加密方式。這里我們的是RSA

9584ed6b7a1464dcc40eb2e7b31ec8e6.png

部分代碼展示分析。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539523.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539523.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539523.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用sqlldr導入文本數據到oracle

1.sqlldr介紹 用法: SQLLDR keywordvalue [,keywordvalue,...]有效的關鍵字:userid -- ORACLE 用戶名/口令 control -- 控制文件名 log -- 日志文件名 bad -- 錯誤文件名 data -- 數據文件名 dis…

Mac os區別_SN及Mac地址燒錄

platform:RK3399 OS:Android 7.1 參考: 1.比特人生 https://blog.csdn.net/ielife/article/details/86719313 2.KrisFei https://blog.csdn.net/kris_fei/article/details/79447343?ops_request_misc%257B%2522request%255Fid%2522%253A%2522158883304619726869022990%2522%25…

linux 查看數據庫和表 mysql 命令

2019獨角獸企業重金招聘Python工程師標準>>> 查看是否有安裝數據庫 :rpm -qa|grep -i mysql 如圖已安裝: 未安裝: 查看MySQL版本的四種方法 1 在終端下執行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看…

php mvc 邏輯層在哪,mvc的業務邏輯應該放哪里?

背景: 基于laravel的后臺管理系統,CURD密集型業務問題:當直接在控制器方法中調用orm處理業務邏輯時,代碼復用性差,控制器層很肥嘗試解決1:新建一個model層,將原先在控制器中的處理邏輯移到mode…

servlet/filter/listener/interceptor區別與聯系

下面從幾個方面闡述一下題目中四個概念的區別與聯系: 1、概念 2、生命周期 3、職責 4、執行過程 一、概念: 1、servlet:servlet是一種運行服務器端的Java應用程序,具有獨立于平臺和協議的特性,并且可以動態的生成web頁…

電腦系統哪個最好用_袪痘袪痘印哪個產品最好 祛痘印最好用的產品十大推薦...

原標題:袪痘袪痘印哪個產品最好 祛痘印最好用的產品十大推薦痘痘下去了,痘印卻頑固不化。有些痘印如果不及時修復,會留下疤痕和坑。我們真的不敢去想他們。所以有痘印痘印的時候一定要及時使用護膚品,不要在臉上留下什么遺憾&…

python中集合符號,Python 集合符號

Android SDK Manager 無法下載更新,或者更新速度超慢,或者待安裝包列表不顯示解決方法: 轉自 http://www.cnblogs.com/tc310/archive/2012/12/21/2828450.html http://jingyan.baidu.com/artic ...AJAX學習AJAX即“Asynchronous Javascript And XML”(異…

五阿哥鋼鐵電商平臺Docker容器云平臺建設實踐——你想知道的都在這里!

前言 五阿哥鋼鐵電商平臺(www.wuage.com)是由鋼鐵行業第一的中國五礦與互聯網第一的阿里巴巴聯手打造,并充分運用雙方股東優勢資源,即:阿里巴巴在大數據、電商運營、互聯網產品技術上的巨大優勢,尤其是在B2…

oracle數據導入導出

一、exp/imp與expdp/impdp的區別 1:把用戶usera的對象導到用戶userb,用法區別在于fromuserusera touseruserb ,remap_schemausera:usera 。例如 imp system/passwd fromuserusera touseruserb file/oracle/exp.dmp log/oracle/exp.log; impdp system/passwd directo…

web瀏覽器_Web上的分享(Share)API

我認為Web Share API非常酷,簡而言之,它會利用您所使用的平臺上的原生共享功能(如果該平臺支持的話)。我喜歡這個:在iOS上激活的Web Share API遠遠不止這些東西:為什么?Web Share API只是幾行代碼。簡單!沒…

Oracle視圖添加約束,Oracle創建視圖的語法

Oracle創建視圖的語法導讀:就愛閱讀網友為大家分享了多篇關于 "oracle 創建序列語法" 資料,內容精辟獨到,非常感謝網友的分享,希望從中能找到對您有所幫助的內容。相關資料一 : Oracle 創建視圖的語法Oracle 創建視圖的…

linux壓縮和解壓縮命令

tar命令解包:tar zxvf FileName.tar打包:tar czvf FileName.tar DirNamegz命令解壓1:gunzip FileName.gz解壓2:gzip -d FileName.gz壓縮:gzip FileName.tar.gz 和 .tgz解壓:tar zxvf FileName.tar.gz壓縮&a…

【Java進階】Java Lambda 表達式、Stream API完整梳理

一、Lambda表達式 Lambda 表達式是一種匿名函數,它可以用來定義函數式接口的實現。Lambda 表達式可以用來簡化代碼,提高代碼的可讀性和可維護性。 1、Lambda 表達式 1.1、語法介紹 Lambda 表達式的語法如下: (parameters) -> express…

使用T-SQL語句操作數據表-刪除數據

1.使用 delete 語句刪除表中的數據&#xff1a;語法&#xff1a;delete from <表名> [where <刪除條件>]delete 是刪除的意思 where是選填內容可以不加&#xff0c;但是不加條件的話是刪除整個表 例子&#xff1a;delete from 成績表 where 姓名張三含義&#xff1…

Oracle expdp/impdp導出導入命令及數據庫備份

經常報錯&#xff1a; ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation 解決方法&#xff1a; 1、 CREATE OR REPLACE DI…

exfat單元分配要設置多少_微軟宣布,支持往Linux內核里添加exFAT存儲了!跨系統存儲的福音...

栗子 發自 凹非寺 量子位 報道 | 公眾號 QbitAIexFAT&#xff0c;是微軟開發的文件系統&#xff0c;為閃存而生。你的U盤、SD卡、手機等等存儲設備&#xff0c;能存4G以上的大文件&#xff0c;很大程度上是它的功勞。可exFAT一直是專有的&#xff0c;微軟手握多項專利。所以&am…

在linux中安裝oracle中文包,在Linux命令行下安裝Oracle 10g

Oracle 10g支持在命令行下用靜默模式(Silent)安裝&#xff0c;給那些沒有安裝圖形界面的Linux系統提供了極大的便利。下面以Fedora Core 6為例&#xff0c;介紹在命令行下安裝OracleOracle 10g的方法。1 安裝前的準備準備工作要用登錄為root用戶來進行。1.1 選擇安裝環境的語言…

Jetbrains 系 IDE 編輯器的代碼提示功能

著名的 Jetbrains 可謂編程界的一大福音&#xff0c;眾多有名代碼編輯器比如 ItelliJ IDEA、PHPStorm、WebStorm、PyCharm 等&#xff0c;均出自這家公司麾下。 對于中國的Java開發者來說&#xff0c;可能使用 Eclipse 的人最多。 使用Idea的程序員也不少, 而且每個人都在鼓吹其…

Oracle下的Databse,Instance,Schemas

1、DATABASE&#xff0c;對oracle而言&#xff0c;是指物理上的數據庫&#xff0c;一般你安裝了一個oracle的數據庫軟件后&#xff0c;就是一個database。 2、instance&#xff0c;在同一個數據庫上&#xff0c;可以建立多個實例&#xff0c;這些實例互相不干擾&#xff0c;每個…

oracle實驗數據庫和表,1oracle創建數據庫和表.doc

1oracle創建數據庫和表.doc實驗一&#xff1a;創建數據庫和表一、實驗目的1. 掌握使用DBCA創建數據庫2. 掌握手工創建Oracle數據庫的方法3. 掌握創建數據表的方法二、實驗內容及步驟1. 使用DBCA創建數據庫(1) 打開DBCA組件,創建數據庫sale.(2) 安裝完后進入D:\oracle\product\1…