這兩天寫支付寶接口,, 這個(gè)話題不新了, 因?yàn)楹芏嗳硕?做過了,, 在這里我說說我的看法吧,, 先說一下實(shí)現(xiàn) 其實(shí)支付寶公司已經(jīng)給我們做的很好了,, 只要少量的改動(dòng)就OK了,只是有的程序員不太明天他們的動(dòng)作流程而以,,我就以及時(shí)到帳為例子來說了,,呵呵 在這之前就大家先下載一下c#版的及時(shí)到帳代碼 先看一下程序的結(jié)構(gòu)吧 支付寶有一個(gè)類文件叫 AliPay 是一些加密算法之類的東西,包括構(gòu)造URL 要吧看一下這個(gè)類的全部?jī)?nèi)容 [C#] 純文本查看 復(fù)制代碼
而我們一般不用管這個(gè)類,只要保證能調(diào)用 的到就行了,,不用管他 我們要做的很少,他是怎么工作的呢,, 這是開發(fā)文檔里的工作圖 其實(shí)我們要處理的只有三個(gè)Aspx的文件,, 先看第一個(gè)吧 Default.aspx 這是一個(gè)請(qǐng)求的界面 [C#] 純文本查看 復(fù)制代碼
代碼里的key和 partner的獲取方法 現(xiàn)在我們只要按代碼里的信息填寫一樣就可以了,, 然后遠(yuǎn)行網(wǎng)頁 點(diǎn)提交 就會(huì)進(jìn)入 下面的操作就是在支付平臺(tái)的完成了,, 跟咱的程序沒有關(guān)系了 現(xiàn)在我們應(yīng)該想,那付完錢之后呢,? 我們有兩個(gè)界面來處理這個(gè)問題一個(gè)是 Alipay_Return.aspx [C#] 純文本查看 復(fù)制代碼
這個(gè)是當(dāng)交易成功后要調(diào)用 的界面 在這里只要改動(dòng)一下就行了,, 其實(shí)我們要做的只是改一下這里,只要在這里更新一下你的數(shù)據(jù)庫就行了 [C#] 純文本查看 復(fù)制代碼
大家現(xiàn)在會(huì)問我為什么會(huì)把他們注釋了呢? 我測(cè)試過,,,,這個(gè)界面呢是只到成功的時(shí)候 調(diào)用 一次以后就再不會(huì)調(diào)用 了, 所以這樣有一個(gè)不好的地方 ,,就是有些客戶他們對(duì)轉(zhuǎn)帳操作的很老手,,當(dāng)交易成功之后不等調(diào)用這個(gè)界面就關(guān)閉了瀏覽器,這個(gè)時(shí)候會(huì)出現(xiàn)什么問題呢,? 那支付寶就再也不會(huì)調(diào)用這個(gè)界面 了,,只能等下次交易,錢是打上了,,我們也收到了,,但是就是沒有給客戶充上錢,這個(gè)時(shí)候客戶就會(huì)打電話到公司,,怎么回事啊,, 錢打過去了, 可是我這邊還沒有上帳,,我們上支付寶一看有啊,,但就是沒有上帳 ,怎么辦,,最后只能手動(dòng)給客戶上了,,但又怕他程序再自動(dòng)上一把,呵呵 所以在這里不我建議使用這個(gè)頁面,,如果你只是修改自己的訂單狀態(tài)的話當(dāng)然是可以的 修改余額就不要在這里寫了,,而是寫在這個(gè)Alipay_Notify.aspx頁面里,這個(gè)界面是當(dāng)交易狀態(tài) 發(fā)生變化時(shí)就會(huì)調(diào)用 ,,在沒有收到成功的消息前就會(huì)一直調(diào)用,, 時(shí)效是24小時(shí),這樣的話我們就不用管他是不是轉(zhuǎn)到了成功頁面了,,只要把這個(gè)頁面掛在網(wǎng)上等通知就行了,, 當(dāng)交易成功的時(shí)候上帳 就OK了 [C#] 純文本查看 復(fù)制代碼
最好是記錄一下日志文件,,這樣一但出了問題還可以有個(gè)參考的地方 我的代碼寫的有點(diǎn)亂大家可以適當(dāng)?shù)母囊幌拢呛? 短短兩年的時(shí)間,我公司也寫過不少接口方面的東東了,,在這里和大家分享我的心得和體會(huì),,一般人一說到和什么接口對(duì)接可能會(huì)感覺 到很難,或是感覺很利害的樣子,如果是和銀行的接口對(duì)接,那首先想到的就是安全問題,,再就是技術(shù)含量,其實(shí)不然,接口的產(chǎn)生是為了方便雙方的合作,基本沒有聽說過有那兩家公司因?yàn)槌绦驅(qū)?不上而放棄合作的,,基本沒有,,都是其它方面的原因,接口是為了方便對(duì)接和不同公司和程序之間的交互和通信的,,都是為了方便,不是我們想像的那樣難,,高技術(shù)含量,,要說技術(shù)含量吧也是有一些 我根據(jù)自己的開發(fā)心得總結(jié)一下吧 這種方式的做法是,,服務(wù)方提供一個(gè)方法,,但是一般會(huì)在第一個(gè)參數(shù)或是最后一個(gè)參數(shù)驗(yàn)證一下加密串,,這個(gè)加密串一般是用所傳的參數(shù)組合加密而來,最常見的就是MD5加密了,,像支付寶的就是,。我把這一類型的看做是最低級(jí)的一種,因?yàn)檫@種是最不安全的,,只要我知道了你的加密算法和后就可以自己改動(dòng)參數(shù)了 對(duì)于Http的方法最重要的只有一個(gè)方法 [C#] 純文本查看 復(fù)制代碼
只要我們把要傳的參數(shù)和URL對(duì)接后傳給這 個(gè)方法就算是完事了,,另外在MD5加密是時(shí)間注意對(duì)方是否要區(qū)分大小寫,,最好是把加密串一下子全轉(zhuǎn)成小寫或是大寫的 加密的方法一般如下 [C#] 純文本查看 復(fù)制代碼 在做這樣的接口的時(shí)候一定要注意一定要驗(yàn)證的地方有三點(diǎn):第一點(diǎn)就是驗(yàn)證加密串了 這里就是把所需要的參數(shù)在本地加一下密然后和服務(wù)端發(fā)來的對(duì)比 第二點(diǎn)就是控制頁面只在首次加載時(shí)執(zhí)行這個(gè)我們可以通過下面的方式來實(shí)現(xiàn) 我們只要在IF塊里面寫我們的代碼就可以了 第三點(diǎn)也是最關(guān)鍵的一點(diǎn)那就是驗(yàn)證一下請(qǐng)求過來的DNS或是IP 就是說你要驗(yàn)證一下發(fā)過來請(qǐng)求的來源電腦是不是你的服務(wù)商的DNS或是IP,,如果不是就可以不執(zhí)行程序或是提示為非法操作,,這樣可以防止有人知道了你的加密算法后自己生成一些代碼來高亂你的程序給公司帶來損失,特別是即使到賬的接口,,這一點(diǎn)一定要驗(yàn)證好,,而且在IIS服務(wù)器最好是綁定一下IP,只接收授權(quán)的IP發(fā)來的消息,。這樣基本可以保證安全問題了,。 好了對(duì)于 這種方法我來用一個(gè)Http的例子來演示一下吧 [C#] 純文本查看 復(fù)制代碼
Http的方法有的接口還是要帶證書才能實(shí)現(xiàn)的 關(guān)于這一塊的做方法大家請(qǐng)參考一下我的另一個(gè)文章 HttpRequest訪問Https帶有證書并使用WSDL文檔生成代理類方案 應(yīng)該注意的地方 1.驗(yàn)證加密串 2.驗(yàn)證首次加載時(shí)執(zhí)行 3.驗(yàn)證DNS或是IP 4.IIS服務(wù)器綁定IP或是DNS 5.一般要在關(guān)鍵的地方記錄日志文件,或是存入數(shù)據(jù)庫,,要把發(fā)過來的請(qǐng)求原封不動(dòng)的存儲(chǔ)一下,一是方便查對(duì),,二是一但出現(xiàn)問題這就是證據(jù)?。。,?! 6.注意一下官方的加密串有沒有統(tǒng)一大小寫的問題 |
|