国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS支付寶開發流程與常見的問題

2019-11-09 17:04:29
字體:
來源:轉載
供稿:網友

From: http://www.jianshu.com/p/e95080d8b464

接入支付寶的大致流程如下:

1.向支付寶申請, 與支付寶簽約,獲得商戶ID(partner)和賬號ID(seller)和私鑰(PRivateKey)

(1)生成公鑰和秘鑰的方法  打開終端

生成私鑰pem,執行命令   openssl genrsa -outrsa_private_key.pem 1024

生成公鑰,執行命令    openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

//如果服務器端已經生成公私密鑰,那么獲取他們的公私密鑰文件,然后編碼,然后將私鑰發給服務器,然后開始調試。

將RSA私鑰轉換成PKCS8格式,命令執行openssl pkcs8 -topk8 -inform PEM -in

rsa_private_key.pem -outform PEM -nocrypt  php服務端語言讀取私鑰不需要PKCS8轉換。

2. 下載支付寶的demo

3. 生成訂單,簽名加密

4.調用支付寶客戶端,由支付寶客戶端跟支付寶安全服務器打交道

5.支付完畢后,支付寶客戶端會自動跳回到原來的應用程序

6.在原來的應用程序中顯示支付結果給用戶看


下面開始正式的接入支付寶,假設你已經獲得了 獲得商戶ID(partner- 一般以2088開頭)和賬號ID(seller)和私鑰(privateKey)

1.先將支付寶demo 中把下圖的文件拷貝到工程中

這個步驟值得注意的是,不要直接拖拽文件拷貝的工程,這樣你的路徑會出錯。

解決方法先拷貝到一個文件夾中,然后在拷貝到工程中。

2. 添加依賴庫,在Build Phases選項卡的Link Binary With Libraries中

值得注意的是

如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;

如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib


可能遇到的困難

1.

不要慌張看到這么多錯誤,這是阿里比較坑的地方,原因是缺少

#import<UIKit/UIKit.h>  和 #import<Foundation/Foundation.h> 這兩個頭文件在

支付寶中AliSDKDemo-Prefix.pch 這個文件里添加了頭文件,我們只需要添加上即可。


問題2  找不不這個文件

解決:Build Settings --> Search Paths --> Header Search paths : $(SRCROOT)/支付寶的文件路徑

例如:

問題3

遇到這樣的問題是因為自己粗心而導致,沒有添加下圖的這兩個文件


接下來我們開始生成訂單 (必須按照要求嚴格配置訂單,必須嚴格,必須嚴格,重要的事情說三遍)

//1.添加寫partner/seller/privateKey,簽約后獲得

NSString *partner =@"partner";

NSString*seller =@"seller";

NSString*privateKey =@"privateKey";

2.1.創建訂單Order *order =[[Order alloc] init];

order.partner = partner;

order.sellerID = seller;

order.outTradeNO = [self generateTradeNO]; //訂單ID(由商家自行制定)

order.subject = @“”; //商品標題

order.body = @“”; //商品描述

order.totalFee = [NSString stringWithFormat:@"0.01"]; //商品價格

order.notifyURL =  @""; //回調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    

NSString *appScheme = @"alisdkdemo";        

//將商品信息拼接成字符串    NSString *orderSpec = [order description];    NSLog(@"orderSpec = %@",orderSpec);       

//獲取私鑰并將商戶信息簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規范,并將簽名字符串base64編碼和UrlEncode

idsigner = 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(@"reslut = %@",resultDic);

}];

}

上面為 生成訂單和 簽名的代碼。 

值得注意的是官方推薦,一般生成訂單和簽名,獲得商戶ID(partner- 一般以2088開頭)和賬號ID(seller)和私鑰(privateKey) 都應該放在后臺進行,這樣極大方面的保護了金錢安全。我們只需要負責調用支付寶的回調方法,來處理結果。


配置完成后,我們快點興奮的來檢測一下,誒,好像遇到什么問題了。

我擦嘞,好不容易配置好了,可以測試了,他竟然又出現了錯誤

             顯示系統繁忙,請稍后再試(ALI10)

這個問題很好解釋,字面意思就是錯了唄。 解決方法

1. 你配置的秘鑰有問題,由于調用支付寶接口的那個平臺,他的秘鑰可能過期導致,或者是一些其他的協議出現了問題。

2.請聯系客服(不過我沒有試過)


解決了上面的問題我們在來測試下,oh 買噶的。 又遇到了問題,我也是醉了。

交易訂單處理失敗,請稍后再試。(ALI59)

小伙子們不要慌張,這個問題也是我們粗心而導致的,是因為我們生成的訂單有問題。解決方案:

1. 認真核對配置訂單的信息,認真核對,認真核對,認真核對。一定要認真,也許是我們訂單商品名稱錯了,訂單描述錯了,拼接的價錢錯了,要記住他們都是 NSString 類型。


以上就是本次的內容,不的不說的是支付寶太任性了,我也是爬過了都少個坑才總結的經驗。以上的內容也并非我自己解決的,查看了很多技術博客然后自己歸納整編到一起的,我是這方面的菜鳥,我的格言就是——站在巨人的肩膀上編程。謝謝前輩們開創的經驗道路,讓我們后輩繼承。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海丰县| 固始县| 海丰县| 呼伦贝尔市| 开阳县| 凤阳县| 福建省| 灵丘县| 建始县| 西乡县| 清远市| 微山县| 太仆寺旗| 田东县| 漳州市| 阳高县| 常德市| 台湾省| 略阳县| 杭锦后旗| 辽中县| 漳浦县| 广丰县| 阳春市| 长沙县| 黔江区| 筠连县| 乐业县| 玉溪市| 名山县| 郸城县| 德化县| 宁夏| 湘阴县| 获嘉县| 沙洋县| 梁河县| 手游| 来凤县| 宁陵县| 仪陇县|