1.從賬號(hào)和開放平臺(tái)開始的旅程
當(dāng)然,支付邏輯接入的最重要的也是必須的一步嘶炭,就是去各個(gè)開發(fā)平臺(tái)上申請(qǐng)開發(fā)賬號(hào)了抱慌,筆者一開始被微信和支付寶各種賬號(hào)搞得頭很大,所以決定先從這里入手分析一下.
支付寶:
登錄支付寶眨猎,首先需要的是一個(gè)支付寶賬號(hào)抑进,這個(gè)支付寶可以是個(gè)人賬戶也可以是公司賬戶,個(gè)人賬戶相信每個(gè)人都會(huì)有睡陪,但是支付需要各種業(yè)務(wù)的申請(qǐng)的大部分邏輯都是需要公司賬戶才可以(筆者估計(jì)寺渗、未親自驗(yàn)證)。所以建議使用公司的資料去申請(qǐng)一個(gè)支付寶商家賬號(hào)兰迫,以方便將來各種業(yè)務(wù)的開啟信殊,申請(qǐng)所需要的公司材料在注冊(cè)界面就會(huì)有提示,這里不再贅述汁果。
1.支付寶開放平臺(tái) :http://open.alipay.com/platform/home.htm
這個(gè)通往支付寶開發(fā)的第一步涡拘,接入支付寶的各種技術(shù)文檔都得從這里查閱,作為一個(gè)iOS開發(fā)者,最重要的也是閱讀最多的當(dāng)然是‘支付寶移動(dòng)支付’的文檔了 ~閱讀文檔請(qǐng)戳這里据德,你需要仔細(xì)的閱讀文檔并且下載一個(gè)Demo查看一下源代碼鳄乏。
2.支付寶商家賬戶:https://b.alipay.com/newIndex.htm
這是獲取支付寶支付能力的最總要的一個(gè)網(wǎng)站跷车,你必須在該網(wǎng)站簽約了各種產(chǎn)品之后才能獲取開發(fā)能力,查看接入指南請(qǐng)猛戳
- 簽約產(chǎn)品中的坑
1.在申請(qǐng)簽約即時(shí)到賬產(chǎn)品的時(shí)候必填資料中會(huì)有一個(gè)申請(qǐng)網(wǎng)址橱野,只要保證該網(wǎng)址可以訪問朽缴,是一個(gè)電商平臺(tái)就可以,筆者發(fā)現(xiàn)的坑有:請(qǐng)不要填寫任何知名電商網(wǎng)站的網(wǎng)店鏈接水援,填寫的網(wǎng)址中不要有煙草類商品密强,筆者就是出現(xiàn)了上述的錯(cuò)誤,導(dǎo)致申請(qǐng)被駁回蜗元;
2.申請(qǐng)簽約移動(dòng)支付產(chǎn)品的時(shí)候或渤,申請(qǐng)網(wǎng)址不是必填的;
3.申請(qǐng)簽約產(chǎn)品的時(shí)候许帐,官方提示為五到七個(gè)工作日劳坑,但是一般來說3個(gè)工作日內(nèi)就會(huì)通過,所以申請(qǐng)簽約之后耐心等待吧成畦。
簽約完成之后距芬,就是獲取到PID和秘鑰了。在上述的接入指南中的‘PID和秘鑰管理’已經(jīng)描述的很清晰循帐,這里我在說明一下我開發(fā)中遇到的坑
- 關(guān)于PKCS8編碼的問題框仔,在接入指南關(guān)于RSA公私鑰生成中會(huì)有這句話
1.png
生成的私鑰文件.pem打開時(shí)候是這個(gè)樣子的
2.png
但是如果你在Demo中將上述私鑰(注意拷貝進(jìn)Demo時(shí)不要帶著“-----BEGIN RSA PRIVATE KEY-----”、“-----END RSA PRIVATE KEY-----”以及私鑰中不能帶有換行符以及空格)賦值給NSString *privateKey
拄养,你會(huì)發(fā)現(xiàn)支付是不能成功的离斩。因?yàn)樵趇OSDemo中的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;
}
這個(gè)方法是將privateKey裝換為圖2中pem文件中秘鑰的格式,而[result appendString:@"-----BEGIN PRIVATE KEY-----\n"];
和[result appendString:@"\n-----END PRIVATE KEY-----"];
這兩句代碼標(biāo)志著PKCS8編碼之后的私鑰的開始和結(jié)束瘪匿,所以結(jié)論就是在Demo中使用的私鑰是需要對(duì)需要對(duì)私鑰文件進(jìn)行PKCS8編碼的
- 關(guān)于PKCS8編碼的問題框仔,在接入指南關(guān)于RSA公私鑰生成中會(huì)有這句話
微信:
1.微信開放平臺(tái) :https://open.weixin.qq.com
當(dāng)然第一步是先閱讀微信開發(fā)文檔,里邊對(duì)微信接入的各種邏輯都已比較詳細(xì)的解釋;
對(duì)比與支付寶跛梗,接入微信是一個(gè)比較痛苦的過程。首先你要在微信開放平臺(tái)中認(rèn)證開發(fā)者資質(zhì)棋弥,因?yàn)闆]有開發(fā)者資質(zhì)除了看開發(fā)文檔是無法做任何事情的核偿。認(rèn)證開發(fā)者資質(zhì)需要RMB300大洋,只支持微信支付顽染,而且需要準(zhǔn)備注冊(cè)材料漾岳,什么業(yè)務(wù)資料啊,運(yùn)營(yíng)者信息啊等等一大堆粉寞,然后你就要開始漫長(zhǎng)的等待(微信宣稱是五到七個(gè)工作日尼荆,但實(shí)際上需要一到三個(gè)工作日,微信將這個(gè)審核業(yè)務(wù)外包給了其他公司唧垦,如果你分配到了一個(gè)不太靠譜的公司捅儒,可能需要三個(gè)工作日或更多)。終于認(rèn)證通過并驗(yàn)證通過,興沖沖的去創(chuàng)建了一個(gè)應(yīng)用野芒,結(jié)果你發(fā)現(xiàn)蓄愁,你的應(yīng)用并沒有獲得微信支付的能力双炕,需要申請(qǐng)開通微信支付能力狞悲,,妇斤,摇锋,申請(qǐng)微信支付能力也需要很多資料并且驗(yàn)證,最后你會(huì)收到驗(yàn)證郵件并在微信開放平臺(tái)的應(yīng)用下看到
點(diǎn)擊查看詳情
點(diǎn)擊驗(yàn)證之后就進(jìn)入了下面這個(gè)個(gè)網(wǎng)站
2.微信支付商戶平臺(tái):https://pay.weixin.qq.com/index.php/account
這個(gè)平臺(tái)主要是處理查詢訂單站超,退款荸恕,充值提現(xiàn)等等操作,各種敏感操作都是需要安裝安全證書之后才可以進(jìn)行操作死相;里邊的具體功能這里不再贅述
其實(shí)筆者看完微信與支付寶的開發(fā)文檔之后其實(shí)是一臉懵逼的融求,因?yàn)樵跊]有接觸過支付之前,對(duì)開發(fā)文檔中的各種新名詞毫無反應(yīng)算撮,什么叫簽名生宛?為什么這么多參數(shù)都是干嘛用的?notify和return有什么區(qū)別肮柜?別著急陷舅,接下來就是分析支付寶和微信的Demo了。
下一篇小弟準(zhǔn)備分析一下支付寶和微信支付demo中的代碼审洞,今天先到這里