1.從賬號和開放平臺開始的旅程
當(dāng)然,支付邏輯接入的最重要的也是必須的一步,就是去各個開發(fā)平臺上申請開發(fā)賬號了,筆者一開始被微信和支付寶各種賬號搞得頭很大,所以決定先從這里入手分析一下.
支付寶:
登錄支付寶,首先需要的是一個支付寶賬號,這個支付寶可以是個人賬戶也可以是公司賬戶,個人賬戶相信每個人都會有,但是支付需要各種業(yè)務(wù)的申請的大部分邏輯都是需要公司賬戶才可以(筆者估計、未親自驗證)。所以建議使用公司的資料去申請一個支付寶商家賬號,以方便將來各種業(yè)務(wù)的開啟,申請所需要的公司材料在注冊界面就會有提示,這里不再贅述。
1.支付寶開放平臺 :http://open.alipay.com/platform/home.htm
這個通往支付寶開發(fā)的第一步,接入支付寶的各種技術(shù)文檔都得從這里查閱,作為一個iOS開發(fā)者,最重要的也是閱讀最多的當(dāng)然是‘支付寶移動支付’的文檔了 ~閱讀文檔請戳這里,你需要仔細(xì)的閱讀文檔并且下載一個Demo查看一下源代碼。
2.支付寶商家賬戶:https://b.alipay.com/newIndex.htm
這是獲取支付寶支付能力的最總要的一個網(wǎng)站,你必須在該網(wǎng)站簽約了各種產(chǎn)品之后才能獲取開發(fā)能力,查看接入指南請猛戳
- 簽約產(chǎn)品中的坑
1.在申請簽約即時到賬產(chǎn)品的時候必填資料中會有一個申請網(wǎng)址,只要保證該網(wǎng)址可以訪問,是一個電商平臺就可以,筆者發(fā)現(xiàn)的坑有:請不要填寫任何知名電商網(wǎng)站的網(wǎng)店鏈接,填寫的網(wǎng)址中不要有煙草類商品,筆者就是出現(xiàn)了上述的錯誤,導(dǎo)致申請被駁回;
2.申請簽約移動支付產(chǎn)品的時候,申請網(wǎng)址不是必填的;
3.申請簽約產(chǎn)品的時候,官方提示為五到七個工作日,但是一般來說3個工作日內(nèi)就會通過,所以申請簽約之后耐心等待吧。
簽約完成之后,就是獲取到PID和秘鑰了。在上述的接入指南中的‘PID和秘鑰管理’已經(jīng)描述的很清晰,這里我在說明一下我開發(fā)中遇到的坑
- 關(guān)于PKCS8編碼的問題,在接入指南關(guān)于RSA公私鑰生成中會有這句話
1.png
生成的私鑰文件.pem打開時候是這個樣子的
2.png
但是如果你在Demo中將上述私鑰(注意拷貝進(jìn)Demo時不要帶著“-----BEGIN RSA PRIVATE KEY-----”、“-----END RSA PRIVATE KEY-----”以及私鑰中不能帶有換行符以及空格)賦值給NSString *privateKey,你會發(fā)現(xiàn)支付是不能成功的。因為在iOSDemo中的RSADataSigner類中有如下方法
- (NSString )formatPrivateKey:(NSString )privateKey {
const char pstr = [privateKey UTF8String];
int len = (int)[privateKey length];
NSMutableString result = [NSMutableString string];
[result appendString:@"-----BEGIN PRIVATE KEY-----\n"];
int index = 0;
int count = 0;
while (index < len) {
char ch = pstr[index];
if (ch == '\r' || ch == '\n') {
++index;
continue;
}
[result appendFormat:@"%c", ch];
if (++count == 79)
{
[result appendString:@"\n"];
count = 0;
}
index++;
}
[result appendString:@"\n-----END PRIVATE KEY-----"];
return result;
}
這個方法是將privateKey裝換為圖2中pem文件中秘鑰的格式,而[result appendString:@"-----BEGIN PRIVATE KEY-----\n"];和[result appendString:@"\n-----END PRIVATE KEY-----"];這兩句代碼標(biāo)志著PKCS8編碼之后的私鑰的開始和結(jié)束,所以結(jié)論就是在Demo中使用的私鑰是需要對需要對私鑰文件進(jìn)行PKCS8編碼的
- 關(guān)于PKCS8編碼的問題,在接入指南關(guān)于RSA公私鑰生成中會有這句話
微信:
1.微信開放平臺 :https://open.weixin.qq.com
當(dāng)然第一步是先閱讀微信開發(fā)文檔,里邊對微信接入的各種邏輯都已比較詳細(xì)的解釋;
對比與支付寶,接入微信是一個比較痛苦的過程。首先你要在微信開放平臺中認(rèn)證開發(fā)者資質(zhì),因為沒有開發(fā)者資質(zhì)除了看開發(fā)文檔是無法做任何事情的。認(rèn)證開發(fā)者資質(zhì)需要RMB300大洋,只支持微信支付,而且需要準(zhǔn)備注冊材料,什么業(yè)務(wù)資料啊,運(yùn)營者信息啊等等一大堆,然后你就要開始漫長的等待(微信宣稱是五到七個工作日,但實際上需要一到三個工作日,微信將這個審核業(yè)務(wù)外包給了其他公司,如果你分配到了一個不太靠譜的公司,可能需要三個工作日或更多)。終于認(rèn)證通過并驗證通過,興沖沖的去創(chuàng)建了一個應(yīng)用,結(jié)果你發(fā)現(xiàn),你的應(yīng)用并沒有獲得微信支付的能力,需要申請開通微信支付能力,,,,申請微信支付能力也需要很多資料并且驗證,最后你會收到驗證郵件并在微信開放平臺的應(yīng)用下看到

點擊查看詳情

點擊驗證之后就進(jìn)入了下面這個個網(wǎng)站
2.微信支付商戶平臺:https://pay.weixin.qq.com/index.php/account
這個平臺主要是處理查詢訂單,退款,充值提現(xiàn)等等操作,各種敏感操作都是需要安裝安全證書之后才可以進(jìn)行操作;里邊的具體功能這里不再贅述
其實筆者看完微信與支付寶的開發(fā)文檔之后其實是一臉懵逼的,因為在沒有接觸過支付之前,對開發(fā)文檔中的各種新名詞毫無反應(yīng),什么叫簽名?為什么這么多參數(shù)都是干嘛用的?notify和return有什么區(qū)別?別著急,接下來就是分析支付寶和微信的Demo了。
下一篇小弟準(zhǔn)備分析一下支付寶和微信支付demo中的代碼,今天先到這里

