詳解Python實現(xiàn)支付接口
如今面對N種快速支付的通道,所以在相關(guān)的支持通道的平臺中,競爭就會產(chǎn)生,以下的文章就是對Python支付接口的實際操作方案的具體介紹,以下就是文章的相關(guān)內(nèi)容的具體介紹。忘你會有所收獲。
進入主題,今天的任務(wù)是要打通支付和支付通知接口,根據(jù)一般性規(guī)則,通過http協(xié)議的支付接口的一般設(shè)計都是,通過N個field或者查詢參數(shù)傳遞數(shù)據(jù),其中一個是驗證串,防止篡改數(shù)據(jù),每個申請了Python支付接口的用戶都給了一個編號,相當于用戶名,一個key,相當于密碼,用于加密防篡改字段的鹽值。
易寶的字段定義在文檔中有,這個文檔到處能下到,對發(fā)起請求的url這里文檔倒沒有什么錯,但是文檔里的例子是POST,把數(shù)據(jù)放到隱藏表單里,我這里通過構(gòu)造Get的querystring的方式來發(fā)送數(shù)據(jù)。
根據(jù)文檔,首先定義數(shù)據(jù)如下:用的測試平臺的數(shù)據(jù)
- data=[
- "",
- ("p0_Cmd","Buy"),
- ("p1_MerId","10000432521"),
- ("p2_Order",transid),
- ("p3_Amt",str(fee)),
- ("p4_Cur","CNY"),
- ("p5_Pid","測試一下嘛"),
- ("p6_Pcat","test"),
- ("p7_Pdesc","test"),
- ("p8_Url","http://"),
- ("p9_SAF","1"),
- ("pa_MP","None"),
- ("pd_FrpId","ICBC-NET"),
- ("pr_NeedResponse","1"),
- ]
***個“”不是打醬油的,在下面的運算是有用處的,不要當我寫錯了忽略掉。
首先我們要根據(jù)數(shù)據(jù)來構(gòu)建待加密的驗證源串,根據(jù)文檔描述也就是把每個field的值連接起來,注意,不加任何間隔符,你能猜出是如何構(gòu)造這個字符串的嗎?寫這個文檔的人多半語文重修不下十次根據(jù)這段文檔***有用的一句話參看了源碼,于是把源碼里啰哩吧嗦的一大篇八股文改為一行代碼
- origin_str=reduce(lambda x,y:"%s%s"%(x,y[1]),data)
這里用了reduce函數(shù),就是挨個取出list里的數(shù)據(jù)和下一數(shù)據(jù)累計運算,運算的方法就是把前一次運算的結(jié)果和下一個item作為參數(shù)傳給reduce的***個參數(shù),這里是一個lambda表達式,x就是前一次運算的結(jié)果,y就是下一個item,因為表達式里默認***次運算的結(jié)果是字符串,所以這就是在data這個列表頭上的***個打醬油的””的來歷接下來需要用hmac來加密字符串,在python,我在shell里輸入
- import hmac
回車后居然還真有這個庫,省去麻煩一大堆,以上內(nèi)容就是對Python支付接口是如何實現(xiàn)的步驟的部分介紹。
【編輯推薦】