你好!首先你要有一個apple id賬戶,然后打開app store進行登陸,在首頁的精品推薦中下拉至你的賬戶信息欄目,上面有一個“綁定支付寶”,根據(jù)頁面提示就可以綁定你的支付寶,然后購買相應(yīng)應(yīng)用的時候就可以用支付寶來支付了。
員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),小程序開發(fā),軟件按需制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。
支付寶支付流程,以掃碼支付為例,步驟如下:
操作環(huán)境:
品牌型號:iPhone13
系統(tǒng)版本:iOS15.3.1
app版本:v10.2.56
一、打開支付寶APP。
二、點擊支付寶首頁左上方“掃一掃”。
三、掃一掃對方的收錢碼,輸入需要付款的金額,點擊“確認(rèn)支付”,輸入支付密碼即可。
【拓展資料】
支付寶支付分類:
一、快捷支付
快捷支付是指支付機構(gòu)與銀行合作直連,形成一個高效、安全、專用(消費)的支付方式
在推出快捷支付之前,大部分網(wǎng)絡(luò)支付借由網(wǎng)絡(luò)銀行完成。但網(wǎng)絡(luò)銀行存在支付成功率低、安全性低等固有問題。此外,除了大銀行之外,國內(nèi)1000多家銀行中仍有大量城鎮(zhèn)銀行未提供網(wǎng)銀服務(wù)。
快捷支付解決了上述問題,支付成功率達到95%以上,高于網(wǎng)銀的65%左右;快捷支付用戶資金由支付寶及合作保險公司承保,若出現(xiàn)資損可獲得賠償。
2010年12月,中國銀行與支付寶推出第一張信用卡快捷支付。截至到2014年5月,約有180多家銀行開通快捷支付服務(wù)。
在支付寶推出該業(yè)務(wù)之后,財付通、銀聯(lián)等第三方支付機構(gòu)都推出“快捷支付”。
二、手機支付
2008年開始支付寶開始介入手機支付業(yè)務(wù),2009年推出首個獨立移動支付客戶端,2013年初更名為“支付寶錢包”,并于2013年10月成為與“支付寶”并行的獨立品牌;
用戶下載安裝“支付寶錢包”,使用支付寶賬號登錄就能使用。
自2013年Q2開始,用戶數(shù)、支付筆數(shù)均超過PayPal成為全球最大平臺,這一優(yōu)勢仍在不斷得到強化;從2014年3月份以來,每天支付寶的手機支付筆數(shù)已經(jīng)達到2500萬筆以上;
三、二維碼支付
2010年10月,支付寶推出國內(nèi)首個二維碼支付技術(shù),幫助電商從線上向線下延伸發(fā)展空間。
使用方式:用戶在“支付寶錢包”內(nèi),點擊“掃一掃”,對準(zhǔn)二維碼按照提示就能完成。
條碼支付
2011年7月1日,支付寶在廣州發(fā)布條碼支付(BarcodePay),適合便利店等場景使用。這是國內(nèi)第一個基于條形碼的支付方案,尚無同類支付技術(shù)。
使用時,用戶在“支付寶錢包”內(nèi)點擊“付款碼”,收銀員使用條碼槍掃描該條碼,完成付款;
經(jīng)過幾天的學(xué)習(xí)和收集整理,得出的結(jié)論,或許有誤差,僅僅提供參考。
1.IOS支持玩家通過支付寶充值到APP賬戶,充值的金額是進入蘋果官方賬戶,也是按照蘋果的分成規(guī)則執(zhí)行。
2.商業(yè)APP嫁接支付寶功能是不能通過審核的。
3.技術(shù)實現(xiàn)方式1,做兩套支付界面,一個App Store正規(guī)充值界面,一個帶支付寶等充值的界面隱藏掉,審核時顯示App Store充值界面,上線后通過后臺打開支付寶的充值界面。
4.技術(shù)實現(xiàn)方式2,采用內(nèi)置彈窗方式實現(xiàn)第三方支付。(游戲業(yè)內(nèi)QQ群提供)
5.通過技術(shù)實現(xiàn)有被下架的和審核不通過的風(fēng)險。
如果你是打游擊 可以嘗試,如果是正規(guī)的大公司就算了。。不能因小失大。。。。
利用WKWebView加載網(wǎng)頁,在app中處理H5頁面調(diào)用微信支付 ------ 實現(xiàn)WKNavigationDelegate協(xié)議
該方法是決定H5頁面是否允許跳轉(zhuǎn)的
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler{
WKNavigationActionPolicy? actionPolicy =WKNavigationActionPolicyAllow;//允許
NSString*urlScheme = navigationAction.request.URL.scheme;
NSString*urlString = navigationAction.request.URL.absoluteString;
NSString *wxPre = @"";
NSURLRequest*request = navigationAction.request;
NSLog(@"urlScheme:%@",urlScheme);
NSLog(@"urlStr:%@",urlString);
if([urlString containsString:@"weixin://wap/pay?"]) {
? ? ?actionPolicy =WKNavigationActionPolicyCancel;//不允許跳轉(zhuǎn)
? ? ?NSURL*url = [NSURLURLWithString:urlString];
? ? ? ? ?if([[UIApplicationsharedApplication]respondsToSelector:@selector(openURL:options:completionHandler:)]){
? ? ? ? if(@available(iOS10.0, *)) {
? ? ? ? ? ? [[UIApplication sharedApplication] openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {
? ? ? ? ? ? }];
? ? ? ? }else{
? ? ? ? ? ? // Fallback on earlier versions
? ? ? ? ? ? [[UIApplicationsharedApplication]openURL:url];
? ? ? ? }
? ? }else{
? ? ? ? [[UIApplication sharedApplication]openURL:url];
? ? }
}
decisionHandler(actionPolicy);//這句是必須加上的,不然會異常
}
很多小伙伴兒都遇到回跳的問題,點擊“完成”或“取消”跳到了Safari卻跳不回APP。
2.1、配置URL Types ??添加schemes:
2.2、配置?Referer
[requestsetValue:@"" forHTTPHeaderField:@"Referer"];
2.3、服務(wù)器回調(diào)的URL中一定要寫成 ? , 如果一定要拼接,可以讓后臺區(qū)分一下,如果是iOS 前面一定要寫成? ,不然跳不回APP。
注意: 此域名一定是H5授權(quán)的域名,如果是二級域名,可以寫成:aaa.xxxx.com
一般支付完 不管完成與否都要調(diào)一下回調(diào)地址來刷新支付頁面的,但問題是iOS的回調(diào)地址中一定要寫成? 這樣的格式才能跳回來,但是調(diào)回來后沒有執(zhí)行回調(diào)地址,頁面又刷新不了,或者跳回來后是個空白頁,這又產(chǎn)生了一個新的問題。當(dāng)點擊微信支付頁上的“完成”或“取消”返回APP時,會調(diào)用?AppDelegate 中的?openURL: 方法
-(BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options{?
// url.scheme 就是?,你只需要在這做一個判斷,如果是? 你就給外部發(fā)一個通知,那外部接收到這個通知,刷新界面就行了。
//刷新地址也就是支付完的回調(diào)地址,后臺可以把回調(diào)地址拼接在? 后面,例如: 。 那么?url 就是?? ,你向外部發(fā)通知時把?url 作為參數(shù)傳出去即可?
if ([url.scheme containsString:@""]) {
? ? [[NSNotificationCenter defaultCenter] postNotificationName:@"weChatPayHandle" object:nil userInfo:@{@"url":url}];
}
return YES;
}
//微信支付后刷新主界面 (處理通知的方法 )
-(void)refreshOrderData:(NSNotification*)notifi{
NSDictionary*dic = notifi.userInfo;
NSString*url = [NSStringstringWithFormat:@"%@",dic[@"url"]];
NSRange range = [url rangeOfString:@""];
NSString*lastUrl = [urlsubstringFromIndex:range.length];
NSLog(@"%@",lastUrl);
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:lastUrl]]];
}
解決h5的支付寶支付問題 可以提供兩種解決辦法
第一種 調(diào)用支付寶網(wǎng)頁支付?
(問題 支付成功后回調(diào)到了游覽器,無法返回APP,解決如下)
//以WKWebView為例 ?
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler {
WKNavigationActionPolicy? actionPolicy =WKNavigationActionPolicyAllow;//允許
NSString*urlScheme = navigationAction.request.URL.scheme;
NSString*urlString = navigationAction.request.URL.absoluteString;
NSString *wxPre = @"";
NSURLRequest*request = navigationAction.request;
NSLog(@"urlScheme:%@",urlScheme);
NSLog(@"urlStr:%@",urlString);
//? 先判斷一下,找到需要跳轉(zhuǎn)的再做處理
if([urlSchemeisEqualToString:@"alipay"]) {
? ? //? 1.以?號來切割字符串
? ? NSArray* urlBaseArr = [urlStringcomponentsSeparatedByString:@"?"];
? ? NSString* urlBaseStr = urlBaseArr.firstObject;
? ? NSString* urlNeedDecode = urlBaseArr.lastObject;
? ? //? 2.將截取以后的Str,做一下URLDecode,方便我們處理數(shù)據(jù)
? //? NSMutableString * afterDecodeStr = [NSMutableString stringWithString:[self URLDecodedString:urlNeedDecode]];
? ? NSString*afterDecodeStr =WebURLDecodedString(urlNeedDecode);
? ? //? 3.替換里面的默認(rèn)Scheme為自己的Scheme
? ? NSString* afterHandleStr = [afterDecodeStrstringByReplacingOccurrencesOfString:@"alipays"withString:@"QEQuickEnjoyment"];
? //? 4.然后把處理后的,和最開始切割的做下拼接,就得到了最終的字符串
? ? NSString* finalStr = [NSStringstringWithFormat:@"%@?%@",urlBaseStr,WebURLEncode(afterHandleStr)];
? ? dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
? ? ? ? //? 判斷一下,是否安裝了支付寶APP(也就是看看能不能打開這個URL)
? ? ? ? if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:finalStr]]) {
? ? ? ? ? ? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:finalStr]];
? ? ? ? }
? ? });
? ? //? 2.這里告訴頁面不走了 -_-
? ? decisionHandler(WKNavigationActionPolicyCancel);
? ? return;
}
decisionHandler(actionPolicy);//這句是必須加上的,不然會異常
}
// OC 做URLEncode的方法
staticinlineNSString* WebURLEncode(NSString* str){
NSString*charactersToEscape =@"#[]@!$'()*+,;\"%{}|^~`";
NSCharacterSet*allowedCharacters = [[NSCharacterSetcharacterSetWithCharactersInString:charactersToEscape]invertedSet];
NSString *encodedUrl = [[str description] stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];
return encodedUrl; }
staticinlineNSString*WebURLDecodedString(NSString* str)
{ ?return [str stringByRemovingPercentEncoding]; }
這樣h5處理支付寶就可以了
但是如果想在支付寶成功后app處理事件 處理如下:
回到Appdelegate的代理方法
-(BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options{// 判斷一下這個host,safepay就是支付寶的if([url.host isEqualToString:@"safepay"]) {// 拿到這個鏈接的數(shù)據(jù),數(shù)據(jù)大概是這樣的/*
? ? mushRoomBox://safepay/?%7B%22memo%22:%7B%22result%22:%22%7B%5C%22alipay_trade_wap_pay_response%5C%22:%7B%5C%22code%5C%22:%5C%2210000%5C%22,%5C%22msg%5C%22:%5C%22Success%5C%22,%5C%22app_id%5C%22:%5C%222017020505522491%5C%22,%5C%22auth_app_id%5C%22:%5C%222017020505522491%5C%22,%5C%22charset%5C%22:%5C%22GBK%5C%22,%5C%22timestamp%5C%22:%5C%222018-11-09%2011:43:06%5C%22,%5C%22out_trade_no%5C%22:%5C%222018100001_simple_48f033a4a00ba19a0526ddbd4f96b036%5C%22,%5C%22total_amount%5C%22:%5C%220.01%5C%22,%5C%22trade_no%5C%22:%5C%222018110922001438371006963978%5C%22,%5C%22seller_id%5C%22:%5C%222088221175674834%5C%22%7D,%5C%22sign%5C%22:%5C%22T6jn7QSsvjjG%5C/HxknSl2lOdHj6zf7jebWEKkeGhEJaXCYFbRHMTsml7TNRhRACupmwDYUADQOynKNR%5C/QBXHgBxJRhYEE9SXVz4mp7sqSGPItzV4bVmZw5AG5UJzsuIh9O6QC%5C/QHc+FcA2i1zw46VDMUnbCCKat5q4ME9d3AUSMhYg31xO+1TZnraDfm0I%5C/OwAnA5iCTOhq%5C/fkm%5C/r4hsujdv9fTvmszgIJLMhN7yQhoGaOWs0vIQ6hoJoXmCXVapfY7ANsoKaR6hGJogH4GKGQi0vLk17W8s+LjcOUT%5C/zB6K6gN+fyCefm8FOJ+8g4GUAreuZDcW0MuGE1OOmaxDrXg==%5C%22,%5C%22sign_type%5C%22:%5C%22RSA2%5C%22%7D%22,%22ResultStatus%22:%229000%22,%22memo%22:%22%22%7D,%22requestType%22:%22safepay%22%7D
? ? *///? 然后,一樣的套路方法
NSString* urlNeedJsonStr = url.absoluteString;
NSArray* afterComStr = [urlNeedJsonStr componentsSeparatedByString:@"?"];/
/? 這個decode方法,在上面找哈NSString* lastStr = [self WebURLDecodedString:afterComStr.lastObject];//? 這個lastStr,其實是一個jsonStr,轉(zhuǎn)一下,就看到了數(shù)據(jù)
NSDictionary* dict = [self dictionaryWithJsonString:lastStr];//? dict的結(jié)構(gòu)差不多是這樣/*
? ? ? "memo": {
? ? ? ? ? ? ? "result":"訂單相關(guān)信息,如訂單號,支付金額等等";
? ? ? ? ? ? ? "ResultStatus":"9000";
? ? ? },
? ? ? ******
? ? *///? 和支付寶SDK的返回結(jié)果一次,這個ResultStatus,就是我們要的數(shù)據(jù)//? 9000 :支付成功//? 8000 :訂單處理中//? 4000 :訂單支付失敗//? 6001 :用戶中途取消//? 6002 :網(wǎng)絡(luò)連接出錯//? 這里的話,就可以根據(jù)狀態(tài),去處理自己的業(yè)務(wù)了}returnYES;}
-? (NSDictionary*)dictionaryWithJsonString:(NSString*)jsonString{
if(jsonString ==nil) {
return nil;?
}
NSData*jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError*err;NSDictionary*dic = [NSJSONSerializationJSONObjectWithData:jsonData? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? options:NSJSONReadingMutableContainerserror:err];
if(err)? ?
{NSLog(@"json解析失敗:%@",err);
return nil;? ??
}return dic;
}
接支付寶提供的SDK,schemeStr參數(shù)傳入自己APP的URLScheme即可。 具體的? 手機網(wǎng)站支付轉(zhuǎn)Native支付
1.1、掉起支付寶APP
1.2、支付完成后,支付寶APP要返回到我們的APP里面來
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler{
BOOL isIntercepted = [[AlipaySDK defaultService] payInterceptorWithUrl:[navigationAction.request.URL absoluteString] fromScheme:@"WRWarehouseHasRice" callback:^(NSDictionary *result) {
? ? // 處理支付結(jié)果
? ? NSLog(@"%@", result);
? ? // isProcessUrlPay 代表 支付寶已經(jīng)處理該URL
? ? if([result[@"isProcessUrlPay"]boolValue]) {
? ? ? ? // returnUrl 代表 第三方App需要跳轉(zhuǎn)的成功頁URL
? ? ? ? NSString*urlStr = result[@"returnUrl"];
? ? }
}];
if(isIntercepted) {
? ? ? ? ?decisionHandler(WKNavigationActionPolicyCancel);?
?return;?
}
? ? ? ?decisionHandler(WKNavigationActionPolicyAllow);
}
眾所周知。iOS的App會被抽成30%。這個抽成比例還是蠻高的。中小型企業(yè)是不一定接受的。
最近。iOS的審核也嚴(yán)格了。二進制文件中只要檢測出AliPay的SDK就說你隱藏功能。使用第三方支付。違反進貢協(xié)議。
我就因為歷史遺留支付寶SDK文件。被歸入特別審核行列。馬上快1個月了 App審核也沒給我通過。
先不管審核是否通過。先來說說在App使用支付寶還避免被蘋果抽成吧。
首先。我們的項目肯定要移除支付寶SDK了。然后。在支付寶的開發(fā)文檔中有一篇說明。如何在微信公眾號下使用支付寶支付。已經(jīng)在微信公眾號環(huán)境中。估計中國用戶是沒幾個會多此一舉的使用支付寶了。
但是這篇說明可以用在我們自己的App上呀。微信環(huán)境不給用。我們開發(fā)的App可以隨便用呀。
App操作流程:我們提供一個服務(wù)器端的網(wǎng)頁。用來生成支付寶的訂單信息。然后跳轉(zhuǎn)到支付寶的支付h5頁面。并拉起支付寶App。(親測有效)。支付完成后回到App。進行后續(xù)業(yè)務(wù)操作。
支付寶API
支付寶附贈的demo有bug,大企業(yè)的尿性,需要自己手動修改。
-------------------------------這里是華麗的分割線-------------------------------
如果App內(nèi)無法拉起支付寶。就打開Safari瀏覽器 傳入路徑參數(shù)。該操作,App回來的時候不會調(diào)用viewDidAppear方法。需要在Controller中注冊監(jiān)聽UIApplicationDidBecomeActiveNotification,在監(jiān)聽中調(diào)用[super?viewDidAppear];方法。
-------------------------------這里是華麗的分割線-------------------------------
比較讓人為難的是,支付完畢后,如何優(yōu)雅的返回我們的App?在alipay SDK中,打開支付寶的鏈接中有個fromAppUrlScheme參數(shù),這個參數(shù)名稱通俗易懂,表示來自哪個App的urlScheme。
我們可以使用url decode,查看路徑中是否有這個參數(shù),如果沒有加入一個試試?這個分割線沒有經(jīng)過測試。
這種app的流程應(yīng)該是這樣:
用戶在app上輸入自己的支付寶帳號
app把這個帳號post到自己的server端
server再驗證,再根據(jù)用戶的額度之類的向用戶的支付寶帳戶轉(zhuǎn)入相應(yīng)的金額
所以其實在ios app端不會進行具體的轉(zhuǎn)帳操作,app只是收集用戶的帳號信息,轉(zhuǎn)帳應(yīng)該是server端去操作的。至于怎么向支付寶發(fā)起轉(zhuǎn)帳請求,我就不知道了,支付寶應(yīng)該會提供相應(yīng)的API給開發(fā)者。
網(wǎng)站題目:ios開發(fā)支付寶支付流程,ios開發(fā)支付寶支付流程圖
標(biāo)題網(wǎng)址:http://jinyejixie.com/article8/dsdjjop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站策劃、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計、靜態(tài)網(wǎng)站、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)