iOS集成支付寶

寫得不錯很詳細,轉一個!其中base64報錯的確實是一個坑,挺惡心,發現支付寶和微信官方文檔都是寫得不怎么詳盡


在iOS中接入支付寶SDK進行支付

首先,需要到支付寶的官網下載SDK ? https://app.alipay.com/market/productIndex.htm

選擇移動支付

點擊進去之后,找到技術集成面板,下載SDK

這個開發包種有技術集成文檔,Demo,需要用到的庫等文件,這個東西需要看一下,關于錢的東西還是耐心一點比較好

其中即時到帳批量退款那一個文件夾我沒有看,應該還用不到

商戶接入支付寶收銀臺界面展示標準這個文件夾需要看,里面有需要用到的logo文件

支付寶錢包支付接口開發包是真正對開發有用的東西,其中有兩個文檔,如果沒有時間的話,就只看那個接入與使用規則文檔,其中第五條集成流程詳解

找到iOS的Demo將其解壓

雖然使用文檔上寫的特別簡單,似乎只需要拖進去兩個文件,但是其實不是這樣的,需要拖進去的文件有很多

libraries中需要存在的文件有

為什么支付寶自己的Demo怎么運行怎么順暢,而我剛把類庫導進去就報錯呢,那是因為支付寶自己的pch文件中寫了兩個import

#import

#import

而且,特么的根本不通知一聲

所以:

可能遇到的報錯問題

1

Cannot find interface declaration for "NSObject', superclass of 'Base64'

解決辦法:暫時不知道內部原因,添加#import 之后錯誤消除

2

解決辦法:暫時不知道內部原因,添加#import 之后錯誤消除

3

解決辦法:

這個東西搞了一天我也是醉了,路徑原因

在Build Settings中搜索“search”關鍵字,找到search paths

在header search paths 中添加新的路徑

$(SRCROOT)/“openssl文件夾所在路徑”

在這個Demo中,路徑就應該是$(SRCROOT)/AliPaySDKTest/CBAliPay

這樣error就消除了

4

沒有添加SystemConfiguration.framework

5 Undefined symbols for architecture x86_64:

"CreateRSADataSigner(NSString*)", referenced from:

-[CBAliPayViewController viewDidLoad] in CBAliPayViewController.o

這是因為你的調用支付寶控件的執行文件使用的是oc與c++混編,這里需要改成使用oc編譯器來編譯

所以,要調用支付寶,最好單獨用一個文件來寫,不然可能會跳坑,比如說我,把網銀的調用代碼和支付寶的調用代碼寫到一起,網銀需要oc混編,而支付寶不讓混編,最后還要再分開單獨寫,不說了,全都是淚

這就是遇到的全部問題,一個問題一個坑,跳坑跳的好酸爽

然后就是在項目中添加代碼

/*============================================================================*//*=======================需要填寫商戶app申請的===================================*//*============================================================================*///這里的三個參數是公司和支付寶簽約之后得到的,沒有這三個參數無法完成支付NSString *partner =@"";

NSString*seller =@"";

NSString*privateKey =@"";/*============================================================================*//*============================================================================*//*============================================================================*///partner和seller獲取失敗,提示if([partner length] ==0||[seller length]==0||[privateKey length]==0)

{

UIAlertView*alert = [[UIAlertView alloc] initWithTitle:@"提示"message:@"缺少partner或者seller或者私鑰。"delegate:self

cancelButtonTitle:@"確定"otherButtonTitles:nil];

[alert show];return;

}/**生成訂單信息及簽名*///將商品信息賦予AlixPayOrder的成員變量Order *order =[[Order alloc] init];

order.partner=partner;

order.seller=seller;#warning這里需要填商品信息order.tradeNO=@"";//訂單ID(由商家自行制定)order.productName =@"測試商品";//商品標題order.productDescription =@"這是一個測試商品";//商品描述order.amount =@"0.01";//商品價格order.notifyURL =@"";//回調URL? 這個URL是在支付之后,支付寶通知后臺服務器,使數據同步更新,必須填,不然支付無法成功//下面的參數是固定的,不需要改變order.service =@"mobile.securitypay.pay";

order.paymentType=@"1";

order.inputCharset=@"utf-8";

order.itBPay=@"30m";

order.showUrl=@"m.alipay.com";//應用注冊scheme,在AlixPayDemo-Info.plist定義URL types//如果不知道scheme是神馬東西,請自行百度NSString *appScheme =@"";//將商品信息拼接成字符串NSString *orderSpec =[order description];//獲取私鑰并將商戶信息簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規范,并將簽名字符串base64編碼和UrlEncodeid signer =CreateRSADataSigner(privateKey);

NSString*signedString =[signer signString:orderSpec];//將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式NSString *orderString =nil;if(signedString !=nil) {

orderString= [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

orderSpec, signedString,@"RSA"];

[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {

NSLog(@"使用支付寶的支付結果 %@",resultDic);

}];

}

支付寶到這里就完了,可喜可賀


轉載至 -- http://www.cnblogs.com/chebaodaren/p/4721344.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第一次寫博客有點小緊張啊,由于自己工作時間也不長,每天工作完都會記錄一下這一天工作中遇到的各種問題和解決的方法,今...
    solace_jg閱讀 653評論 0 3
  • 最近因為項目需要,需要接入移動支付,下面就根據我們項目集成支付的過程做一個簡單總結,包括集成支付寶和微信的大...
    雪上踏痕閱讀 5,017評論 4 15
  • 在記錄支付寶支付的開頭,只想感嘆一句,支付寶的文檔寫的是真真好呀!非常仔細。。。。(__) 嘻嘻…… 一、在支付中...
    艷曉閱讀 7,308評論 6 7
  • 我喜歡走路,一個人走路。這可能跟我的性格有很大關系,一直內向,時而孤僻,不多言,不多語。一個人走路,讓我找到...
    小丸子肉閱讀 370評論 2 3