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

首頁 > 學院 > 開發設計 > 正文

iOS-如何集成支付寶

2019-11-14 20:41:23
字體:
來源:轉載
供稿:網友
現在不少app內都集成了支付寶功能
 
使用支付寶進行一個完整的支付功能,大致有以下步驟:
1>先與支付寶簽約,獲得商戶ID(partner)和賬號ID(seller)
(這個主要是公司的負責)
 
2>下載相應的公鑰私鑰文件(加密簽名用)
3>下載支付寶SDK(登錄網站:http://club.alipay.com/
 
里面提供了非常詳細的文檔、如何簽約、如何獲得公鑰私鑰、如何調用支付接口。
 
 
4>生成訂單信息
5>調用支付寶客戶端,由支付寶客戶端跟支付寶安全服務器打交道
6>支付完畢后返回支付結果給商戶客戶端和服務器
 
 
 
SDK里有集成支付寶功能的一個Demo>  集成支付功能的具體操作方式,可以參考Demo
 
 
當第一次打開Demo時,可能會出現以下問題:
 
 
錯誤原因很簡單,就是項目的部署版本設置太低了,從3.0改為4.3即可
 
 
 
要想集成支付功能,依賴以下文件夾的庫文件(把這3個添加到你的客戶端中)
 
 
 
調用支付接口可以參考AlixPayDemoViewController的下面方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

 

如何創建訂單 ( 訂單根據自己公司看是什么樣的)

如何簽名

如何調用支付接口

都在這個方法里面了

 
 1 // 2 //選中商品調用支付寶快捷支付 3 // 4 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 5 { 6     /* 7      *點擊獲取PRodcut實例并初始化訂單信息 8      */ 9     Product *product = [_products objectAtIndex:indexPath.row];10     11     /*12      *商戶的唯一的parnter和seller。13      *本demo將parnter和seller信息存于(AlixPayDemo-Info.plist)中,外部商戶可以考慮存于服務端或本地其他地方。14      *簽約后,支付寶會為每個商戶分配一個唯一的 parnter 和 seller。15      */16     //如果partner和seller數據存于其他位置,請改寫下面兩行代碼17     NSString *partner = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"Partner"];18     NSString *seller = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"Seller"];19     20     //partner和seller獲取失敗,提示21     if ([partner length] == 0 || [seller length] == 0)22     {23         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"24                                                         message:@"缺少partner或者seller。" 25                                                        delegate:self 26                                               cancelButtonTitle:@"確定" 27                                               otherButtonTitles:nil];28         [alert show];29         [alert release];30         return;31     }32     33     /*34      *生成訂單信息及簽名35      *由于demo的局限性,本demo中的公私鑰存放在AlixPayDemo-Info.plist中,外部商戶可以存放在服務端或本地其他地方。36      */37     //將商品信息賦予AlixPayOrder的成員變量38     AlixPayOrder *order = [[AlixPayOrder alloc] init];39     order.partner = partner;40     order.seller = seller;41     order.tradeNO = [self generateTradeNO]; //訂單ID(由商家自行制定)42     order.productName = product.subject; //商品標題43     order.productDescription = product.body; //商品描述44     order.amount = [NSString stringWithFormat:@"%.2f",product.price]; //商品價格45     order.notifyURL =  @"http://www.xxx.com"; //回調URL46     47     //應用注冊scheme,在AlixPayDemo-Info.plist定義URL types,用于快捷支付成功后重新喚起商戶應用48     NSString *appScheme = @"AlixPayDemo"; 49     50     //將商品信息拼接成字符串51     NSString *orderSpec = [order description];52     NSLog(@"orderSpec = %@",orderSpec);53     54     //獲取私鑰并將商戶信息簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規范,并將簽名字符串base64編碼和UrlEncode55     id<DataSigner> signer = CreateRSADataSigner([[NSBundle mainBundle] objectForInfoDictionaryKey:@"RSA private key"]);56     NSString *signedString = [signer signString:orderSpec];57     58     //將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式59     NSString *orderString = nil;60     if (signedString != nil) {61         orderString = [NSString stringWithFormat:@"%@&sign=/"%@/"&sign_type=/"%@/"",62                                  orderSpec, signedString, @"RSA"];63         64         //獲取快捷支付單例并調用快捷支付接口65         AlixPay * alixpay = [AlixPay shared];66         int ret = [alixpay pay:orderString applicationScheme:appScheme];67         68         if (ret == kSPErrorAlipayClientNotInstalled) {69             UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"提示" 70                                                                  message:@"您還沒有安裝支付寶快捷支付,請先安裝。" 71                                                                 delegate:self 72                                                        cancelButtonTitle:@"確定" 73                                                        otherButtonTitles:nil];74             [alertView setTag:123];75             [alertView show];76             [alertView release];77         }78         else if (ret == kSPErrorSignError) {79             NSLog(@"簽名錯誤!");80         }81 82     }83 84     [tableView deselectRowAtIndexPath:indexPath animated:YES];85 }

 

主要集成的關鍵就是下面幾步:

 

//.封裝訂單模型AlixPayOrder *order = [[AlixPayOrder alloc] init];// 生成訂單描述NSString *orderSpec = [order description];//2.簽名id<DataSigner> signer = CreateRSADataSigner(@“私鑰key”);// 傳入訂單描述 進行 簽名NSString *signedString = [signer signString:orderSpec];//3.生成訂單字符串NSString *orderString = [NSString stringWithFormat:@"%@&sign=/"%@/"&sign_type=/"%@/"",                         orderSpec, signedString, @"RSA"];//4.調用支付接口AlixPay * alixpay = [AlixPay shared];// appScheme:商戶自己的協議頭int ret = [alixpay pay:orderString applicationScheme:appScheme];

 

 

作者: 清澈Saup

出處: http://m.survivalescaperooms.com/qingche/

本文版權歸作者和博客園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

                                                        
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇礼县| 黄冈市| 南漳县| 乌兰县| 陵水| 巍山| 北海市| 永胜县| 肥西县| 浦东新区| 巴南区| 温宿县| 正安县| 沽源县| 格尔木市| 八宿县| 黄冈市| 合作市| 罗江县| 莆田市| 礼泉县| 涟源市| 正镶白旗| 彰化市| 霍林郭勒市| 万全县| 磴口县| 板桥市| 通城县| 阳西县| 商水县| 信阳市| 东安县| 德兴市| 富顺县| 汕尾市| 合川市| 德令哈市| 克什克腾旗| 玉龙| 游戏|