第三方支付流程

支付

一.支付寶和銀聯(lián)的支付流程

常用的支付方式有:

1、支付寶支付

https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/viewKbDoc.htm?key=236714&type=cat

支付流程:

(1)先與支付寶簽約,獲取商戶id(partner)和賬號id(seller)

(2)下載相應(yīng)的公私鑰文件(加密簽名使用),在客戶端我們可能只需要私鑰

(3)下載支付寶sdk

(4)生成訂單信息,可以直接客戶端或者自己服務(wù)端生存都可以,但是大多是服務(wù)端生存的。

(5)調(diào)用支付寶客戶端,有支付寶客戶端跟支付寶打交道

(6)支付完畢之后返回結(jié)果給客戶端和服務(wù)端。

2、微信支付

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417694084&token=cd674b2fe840f8e60d09126cc5c7e2cd1317ffe6&lang=zh_CN

支付流程:

(1)注冊微信開放平臺,創(chuàng)建應(yīng)用獲取appid,appSecret,申請支付功能,申請成功之后會返回一些參數(shù)詳情見圖

(2)下載微信支付sdk

(3)客戶端請求訂單,后臺與微信后臺交互,返回給客戶端支付參數(shù);

(4)調(diào)用微信客戶端,由微信客戶端和微信服務(wù)器打交道;

(5)客戶端和服務(wù)端都會收到支付結(jié)果;(前臺消息不可靠,我們需要去后臺驗證,如果后臺沒有收到支付通知,后臺去微信服務(wù)器驗證然后將結(jié)果返回給客戶端)

注意事項:

1)如果APP里面已經(jīng)使用了ShareSDK,就有一些地方要注意。不要再重復(fù)導(dǎo)入微信的SDK,因為shareSDK里面的extend已經(jīng)包括了微信的SDK。

2)微信本身是鼓勵客戶APP把簽名算法放到服務(wù)器上面,這樣信息就不容易被破解。但是如果客戶APP本身沒有服務(wù)器端,或者認(rèn)為不需要放到服務(wù)器端,也可以直接把簽名(加密)的部分直接放在APP端。Sample代碼的注釋有點亂,多次提到服務(wù)器云云,但是其實可以不這么做。

3、銀聯(lián)

支付流程:

(1)注冊申請就不是前端的事了,直接介入sdk

(2)從自己的服務(wù)端獲取流水號

(3)然后調(diào)用銀聯(lián)sdk,不用跳轉(zhuǎn),銀聯(lián)sdk直接是內(nèi)嵌的

(4)支付完成之后會回調(diào)代理方法

4、內(nèi)購

?請求有效的產(chǎn)品代號集合

?購買指定產(chǎn)品

?驗證購買

?恢復(fù)購買

http://www.tairan.com/archives/2215/

5、Ping++

https://pingxx.com/guidance/products/apple-pay

Ping++同時支持微信支付、公眾賬號支付、支付寶錢包、百度錢包、銀聯(lián)手機支付、掃碼支付 開發(fā)者不再需要編寫冗長的代碼,簡單幾步就可以使你的應(yīng)用獲得支付功能。

支付流程:

(1) Client發(fā)送支付要素給Server

(2) Server發(fā)送支付請求并將返回的支付憑據(jù)傳給Client

(3) Client調(diào)起支付控件完成支付

(4)渠道同步返回支付結(jié)果給Client

(5).Server收到Ping++發(fā)送的交易結(jié)果的異步通知

6、BeeCloud

https://beecloud.cn/doc/?from=timeline&isappinstalled=1#sec_pay?index=1

目前已經(jīng)包含微信APP、支付寶APP、銀聯(lián)在線APP、PayPal、百度錢包APP支付功能,以及支付訂單和退款訂單的查詢功能。還包含了線下收款功能(包括微信掃碼、微信刷卡、支付寶掃碼、支付寶條形碼),以及訂單狀態(tài)的查詢與訂單撤銷

支付流程:

? (1)app向發(fā)送支付要素 ?做完這一步之后就會跳到相應(yīng)的支付頁面(如微信app中),讓用戶繼續(xù)后續(xù)的支付步驟

(2)SDK向BeeCloud服務(wù)器發(fā)送預(yù)支付請求

(3)BeeCloud服務(wù)器返回預(yù)支付數(shù)據(jù)

? (4)SDK發(fā)起支付請求

(5)同步返回支付結(jié)果給app

付款完成或取消之后,會回到客戶app中,需要做相應(yīng)界面展示的更新(比如彈出框告訴用戶"支付成功"或"支付失敗")。非常不推薦用同步回調(diào)的結(jié)果來作為最終的支付結(jié)果,因為同步回調(diào)可能(雖然可能性不大)出現(xiàn)結(jié)果不準(zhǔn)確的情況,最終支付結(jié)果應(yīng)以下面的異步回調(diào)為準(zhǔn)。

(6)異步返回支付結(jié)果 給BeeCloud服務(wù)器

? ?(7)(在客戶服務(wù)端)處理異步回調(diào)結(jié)果(Webhook

付款完成之后,根據(jù)客戶在BeeCloud后臺的設(shè)置,BeeCloud會向客戶服務(wù)端發(fā)送一個Webhook請求,里面包括了數(shù)字簽名,訂單號,訂單金額等一系列信息。客戶需要在服務(wù)端依據(jù)規(guī)則要驗證數(shù)字簽名是否正確,購買的產(chǎn)品與訂單金額是否匹配,這兩個驗證缺一不可。驗證結(jié)束后即可開始走支付完成后的邏輯。

7.支付功能-需要返回哪些參數(shù)

公共返回參數(shù)

result_code返回碼0為正常

result_msg返回信息,OK為正常

err_detail具體錯誤信息

id成功發(fā)起支付后返回支付表記錄

不同的支付方式的返回參數(shù)有些不同,可以到官方文檔去看。

支付寶返回參數(shù)說明

1、支付寶的返回有兩種:return的客戶端返回,notify的服務(wù)器通知返回。

支付完成后立刻返回到外部網(wǎng)站的客戶端上,是可見的,返回機制:以GET的方式返回

返回信息包括提交給支付寶的訂單信息,可根據(jù)這個返回信息做相應(yīng)的操作顯示給客戶看。

notify_url:服務(wù)器的返回

服務(wù)器的通知返回是由支付寶的服務(wù)器發(fā)起,以POST的方式返回到合作伙伴的網(wǎng)站上。返回信息包括提交給支付寶的訂單信息,在返回的文件中,需要輸出success做為支付寶通知返回信息成功,若沒有這個success的輸出,那么支付寶的服務(wù)器會24小時內(nèi)返回同樣的返回消息,返回的時間頻率會逐漸減弱,(1分鐘、3分鐘、5分鐘、10分鐘、15。。。。。。。。。。)

notify_url頁面中只能做對數(shù)據(jù)庫的業(yè)務(wù)操作

建議:return_url和notify_url可以都設(shè)置,前者做數(shù)據(jù)顯示,后者做更新數(shù)據(jù)庫

2、 注意的地方,每種返回都是有一個sign和mysign的驗證,作用,驗證參數(shù)是否有效和是否是支付寶發(fā)出的消息。還有一個交易狀態(tài)的判斷:trade_status是判斷交易狀態(tài)是否成功,例如:

返回狀態(tài):

trade_status = "WAIT_BUYER_PAY"等待買家付款

trade_status = "WAIT_SELLER_SEND_GOODS"買家付款,等待買家發(fā)貨

trade_status = "WAIT_BUYER_CONFIRM_GOODS"賣家付款,等待買家確認(rèn)

rade_status = "TRADE_FINISHED"交易完成

基本上會有以上幾種重要的交易狀體需要判斷,還有一些詳細(xì):請以支付寶接口文檔為主,當(dāng)然不是每種接口都有這些交易狀態(tài),虛擬的即時到帳接口是不存在買賣雙方確認(rèn)的環(huán)節(jié)的。

service ? ? ?= ? "create_direct_pay_by_user"即時到帳接口的服務(wù)名稱

service ? ? ?= ? "trade_create_by_buyer"標(biāo)準(zhǔn)實務(wù)雙接口服務(wù)名稱

HAS_NO_PRIVILEGE出現(xiàn)這個樣的錯誤,請注意您說開通的接口權(quán)限是否是以上兩種,或者在您集成的接口中是否有用您與支付寶簽約后的ID和key

4.支付的安全處理;

(1)請求基于https

(2)可多次進(jìn)行數(shù)據(jù)加密

關(guān)于支付方面安全的處理不用我們?nèi)ス埽唧w的安全問題是由支付寶、微信等支付三方的自己內(nèi)部去做的。

二、有沒有做過支付?需要注意哪些問題?

有:

1、產(chǎn)品的支付驗證服務(wù)器選擇

當(dāng)創(chuàng)建好產(chǎn)品后,客戶端進(jìn)行IAP服務(wù)監(jiān)聽后,由于IAP在支付后成功后,會收到蘋果服務(wù)器的支付憑證,客戶端在獲取到支付憑證后,需要將支付憑證反饋給server服務(wù)器進(jìn)行支付驗證確認(rèn)。此時,不管是采用客戶端APP的server驗證方式還是客戶端APP驗證方式,都需要根據(jù)當(dāng)前APP的支付環(huán)境選擇正確的驗證地址,在蘋果服務(wù)器中,沙盒測試環(huán)境的IAP驗證地址為:https://sandbox.itunes.apple.com/verifyReceipt,正常線上交易的驗證地址為:https://buy.itunes.apple.com/verifyReceipt,為保證審核的通過,需要在客戶端或server進(jìn)行雙重驗證,即,先以線上交易驗證地址進(jìn)行驗證,如果蘋果正式驗證服務(wù)器的返回驗證碼code為21007,則再一次連接沙盒測試服務(wù)器進(jìn)行驗證即可。

在應(yīng)用提審時,蘋果IAP提審驗證時是在沙盒環(huán)境的進(jìn)行的,即:蘋果在審核App時,只會在sandbox環(huán)境購買,其產(chǎn)生的購買憑證,也只能連接蘋果的測試驗證服務(wù)器,如果沒有做雙驗證,需要特別注意此問題,否則會被拒;

2、產(chǎn)品線上支付過程中的不同環(huán)境處理

IAP沙盒環(huán)境及線上環(huán)境在處理過程中有些問題,需進(jìn)行特殊處理;

在沙盒環(huán)境下,進(jìn)行支付時,無銀行支付驗證過程,此時應(yīng)用一直處于IAP支付過程中,直至支付完成;

而在線環(huán)境下,由于IOS6添加了支付確認(rèn)過程,導(dǎo)致在銀行密碼確認(rèn)過程中確認(rèn)完畢后,應(yīng)用未能及時返回APP,且此時會收到server下推的SKPaymentTransactionStateFailed事件,當(dāng)返回到應(yīng)用后,如果此時已經(jīng)注冊了IAP支付消息處理,當(dāng)剛才的支付成功后,蘋果服務(wù)器會反饋SKPaymentTransactionStatePurchased或SKPaymentTransactionStateRestored事件,此時客戶端在此事件中獲取憑證并進(jìn)行支付確認(rèn);

由于部分類型具有購買恢復(fù)操作Restore,所以當(dāng)刪除APP后,又重新安裝APP,此時需要恢復(fù)之前的購買時,在IAP處理中仍需進(jìn)行SKPaymentTransactionStateRestored事件的處理,如果通過server方式進(jìn)行支付憑證驗證的,需要判斷當(dāng)前的Restore事件是恢復(fù)支付還是購買支付,以保證servver的統(tǒng)計正確;此時可由server根據(jù)驗證憑證中的有效信息(如有效期信息)進(jìn)行判斷是為新的購買還是以往支付的恢復(fù);

3、IAP事件注冊時機

對于IAP支付,當(dāng)支付成功時但由于網(wǎng)絡(luò)等引起的支付憑證驗證失敗或未進(jìn)行驗證時,在IAP事件注冊后,蘋果服務(wù)器會通過SKPaymentTransactionStatePurchased或SKPaymentTransactionStateRestored事件進(jìn)行返回支付憑證,客戶端需對此支付憑證進(jìn)行驗證,以保證支付完整性;為此,在app啟動時,應(yīng)直接進(jìn)行IAP事件注冊;即:[SKPaymentQueuedefaultQueue]addTransactionObserver操作;

4、越獄手機的IAP問題

由于越獄手機可能安裝了黑客的惡意程序,監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù),支付憑證中并不包含任何用戶的apple id信息,所以我們的app和服務(wù)器無法知道這個憑證是誰買的,如果惡意程序截獲蘋果服務(wù)器的有效支付憑證,但惡意程序?qū)⒓俚闹Ц稇{證發(fā)給后臺server導(dǎo)致原支付的賬號驗證失敗,而此時惡意程序?qū)⒔孬@的有效支付憑證對應(yīng)到另外的支付賬號上,就會導(dǎo)致該惡意程序設(shè)置的賬號通過正確的支付憑證而獲取server的認(rèn)證。

所以,對于越獄的手機可禁用IAP支付,采用第三方支付平臺進(jìn)行支付的方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,695評論 2 370

推薦閱讀更多精彩內(nèi)容