支付寶是第三方支付平臺,簡單來說就是協調客戶,商戶,銀行三者關系的方便平臺
使用支付寶進行一個完整的支付功能,大致有以下步驟:
a 與支付寶進行簽約,獲得商戶ID(partner)和賬號ID(seller)
b 下載相應的公鑰私鑰文件(加密簽名用)
c 下載支付寶SDK
d 生成訂單信息
e ?調用支付寶客戶端,有支付寶客戶端跟支付寶安全服務器打交道
f ?支付完畢后返回支付結果給客戶端和服務器
支付功能的實現 有兩種方式:
1 ?支付寶的應用可以 用url 直接連接到 支付寶的官網 (當然后臺是要進行處理的)
2 ?第二種就是添加支付寶的第三方了 首先 下載支付寶的demo?
支付寶的demo 一般的常見問題解決
1 No architecutures to compile for (ONLY_ACTIVE_ARCH = YES, active arch = x86_64,VALID_ARCHS = i386)
出現這樣的問題一般是 將 64 位編譯進去就能解決了(這個問題只要你下載的是最新的demo一般很少見了 )
解決方案:
targets -> Architectures 下面的Valid Architectures 添加上 arm64
2 將支付寶的第三方添加到項目中的時候 有時 會出現 openssl 文件中的.h 文件報錯 說此文件不能被找到
出現這樣的問題是 的原因一般是添加的路徑 不對
解決方案:
點擊項目名稱,點擊“Build Settings”選項卡,在搜索框中,以關鍵字“search”搜索,對“Header Search Paths” 增加頭文件路徑:$(SRCRCOT)/項目名稱 設置一下路徑 一般都能解決。
3 ?Cannot find interface declaration for "NSObject", supercalss of 'Base64'
解決方案 ? 打開報錯的文件,增加頭文件
#import <Foundation/Foundation.h>
基本上支付寶中的demo 里面的問題一般都會得到解決。然后 看著demo 跟實際的項目結合一下就ok 了
正式開始 ?支付寶教程:
(因為申請的工作不是我做的 所以就此過程就略了 )
1 將需要的文件,靜態庫等拖入工程中,這里有:include,libs,Utilities,libcrypto.a,libssl.a文件
2 添加 庫 ?
Linked Frameworks and Libraries ?中 添加
libssl.a ? libcrypto.a ? SystemConfiguration.framework ?
AlipaySDK.framework
3 ?如果商戶要在某個文件中使用給支付寶的SDK 類庫,需要增加引用頭文件
#import "Order.h"
#import "DataSigner.h"
#import <AlipaySDK/AlipaySDK.h>
?4 ?后面的基本上都是 按照官方demo寫的
接口調用步驟:
1.封裝訂單模型將商品信息賦予AlixPayOrder的成員變量
Order *order = [[Order alloc] init];
// 應用注冊scheme,在項目的info.plist 定義URL types
NSString *appScheme = @"zhifu";
/生成訂單描述
NSString *orderSpec = [order description];
2.簽名:獲取私鑰并將商戶信息簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規范,并將簽名字符串base64編碼和UrlEncode
idsigner = CreateRSADataSigner(@“私鑰key”);
NSString *signedString = [signer signString:orderSpec];
//傳入訂單描述 進行 簽名
NSString *signedString = [signer signString:orderSpec];
3.生成訂單字符串
NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec,signedString, @"RSA"];
4.調用支付接口
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) { }];