iOS 解決微信h5支付,支付寶h5支付無法直接返回APP的問題

由于公司的業務需要,為了節省申請開通微信支付的時間和人力,公司決定使用微信h5支付。這樣即節省了時間,同時以后所有的APP都能使用h5支付,既方便又快捷。

但是真正做的時候問題來了,當你支付成功之后或者是取消支付的時候會跳轉到Safari瀏覽器,這就很尷尬了,完全無用戶體驗啊。當時看著Android可以直接返回到APP,心里瞬間不爽了。開始埋怨蘋果公司了,但是由于公司的業務必須要做h5,沒辦法開始找辦法解決。

首先你在Xcode中,選擇你的工程設置項,選中“TARGETS”一欄,在“info”標簽欄的“LSApplicationQueriesSchemes“添加weixin


然后你通過統一下單后臺會從微信拿到這么個鏈接https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20180115115052bedf091fba0369993002&package=2975002856給你


進入微信查了一下,發現需要設置Referer這個請求頭的參數,當然微信也給出了例子微信h5支付其他常見錯誤。針對于這個問題在網上搜索了一下發現有專門針對于微信h5支付設置Referer的文章iOSwebView設置Referer,在這里我給大家貼一下代碼吧!

#pragma mark - MajordomoWKWebViewDelegate

-(void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler

{

? ? NSString *url = navigationAction.request.URL.absoluteString;

? ? if ([url containsString:@"https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?"] || [url rangeOfString:@"https://wx.tenpay.com"].location != NSNotFound) {

#warning 鏈接不要拼接redirect_url,如果拼接了還是會返回到瀏覽器的

? ? ? ? //這里把webView設置成一個像素點,主要是不影響操作和界面,主要的作用是設置referer和調起微信

? ? ? ? WebChatPayH5VIew*h5View = [[WebChatPayH5VIewalloc]initWithFrame:CGRectMake(0,0,1,1)];

? ? ? ? //url是沒有拼接redirect_url微信h5支付鏈接

? ? ? ? [h5ViewloadingURL:url withIsWebChatURL:NO];

? ? ? ? [self.viewaddSubview:h5View];

? ? ? ? decisionHandler(WKNavigationActionPolicyCancel);

? ? ? ? return;

? ? }

#warning todo -處理支付寶h5支付返回問題

? ? NSString *urlStr = [navigationAction.request.URL.absoluteString stringByRemovingPercentEncoding];

? ? DLOG(@"urlStr == %@",urlStr);

? ? NSLog(@"當前加載的webView? decidePolicyForNavigationAction:\n%@",webView.URL.absoluteString);

? ? if([urlStrhasPrefix:@"alipayqr://"] || [urlStrisStartWithString:@"alipay"] || [urlStrhasPrefix:@"alipay://"]) {

?? ? ? NSMutableString* tmpUrlStr = urlStr.mutableCopy;

? ? ? ? if([urlStrcontainsString:@"fromAppUrlScheme"]) {

? ? ? ? ? ? NSDictionary* tmpDic = [selfdictionaryWithUrlString:tmpUrlStr];

? ? ? ? ? ? DLOG(@"tmpDic == %@",tmpDic);

? ? ? ? ? ? NSString* tmpValue = [tmpDicvalueForKey:@"fromAppUrlScheme"];

? ? ? ? ? ? tmpUrlStr = [[tmpUrlStrstringByReplacingOccurrencesOfString:tmpValue withString:@"panda"] mutableCopy];

? ? ? ? ? ? DLOG(@"tmpUrlStr == %@",tmpUrlStr);

? ? ? ? ? ? tmpUrlStr = [[tmpUrlStrstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];

? ? ? ? }

? ? ? ? NSURL * newURl = [NSURL URLWithString:tmpUrlStr];//navigationAction.request.URL;//[NSURL URLWithString:urlStr];//

? ? ? ? [[UIApplication sharedApplication]openURL:newURl];

? ? }

? ? //如果是跳轉一個新頁面

? ? if(navigationAction.targetFrame==nil) {

? ? ? ? [webViewloadRequest:navigationAction.request];

? ? }

? ? decisionHandler(WKNavigationActionPolicyAllow);

? ? self.loadUrl= webView.URL.absoluteString;

}



-(NSDictionary*)dictionaryWithUrlString:(NSString*)urlStr

{

? ? if(urlStr && urlStr.length&& [urlStrrangeOfString:@"?"].length==1) {

? ? ? ? NSArray *array = [urlStr componentsSeparatedByString:@"?"];

? ? ? ? if(array && array.count==2) {

? ? ? ? ? ? NSString*paramsStr = array[1];

? ? ? ? ? ? if(paramsStr.length) {

? ? ? ? ? ? ? ? //paramsStr解析出來的數據:{"soeNote":"電壓高超標,當前值:390.78V,大于上上限值:350.0V","name":"電壓"}

? ? ? ? ? ? ? ? NSData *jsonData = [paramsStr dataUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? ? ? NSDictionary *responseDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves? error:nil];

? ? ? ? ? ? ? ? DLOG(@"responseDic == %@",responseDic);

? ? ? ? ? ? ? ? returnresponseDic;

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? returnnil;

? ? ? ? ? ? }

? ? ? ? }else{

? ? ? ? ? ? returnnil;

? ? ? ? }

? ? }else{

? ? ? ? returnnil;

? ? }

}


###############################

?WebChatPayH5VIew?

#pragma mark - UIWebViewDelegate

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {

? ? NSURL*url = [requestURL];

? ? NSString *newUrl = url.absoluteString;

? ? if(!self.isLoading) {

? ? ? ? if ([newUrl rangeOfString:@"weixin://wap/pay"].location != NSNotFound) {

? ? ? ? ? ? NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

? ? ? ? ? ? [self.myWebViewloadRequest:request];

? ? ? ? ? ? self.isLoading=YES;

? ? ? ? ? ? returnNO;

? ? ? ? }

? ? }else{

? ? ? ? if ([newUrl rangeOfString:@"weixin://wap/pay"].location != NSNotFound) {

? ? ? ? ? ? self.myWebView=nil;

? ? ? ? ? ? UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];

? ? ? ? ? ? [selfaddSubview:web];

? ? ? ? ? ? NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

? ? ? ? ? ? [webloadRequest:request];

//? ? ? ? ? ? [[self getCurrentVC] showhide];

? ? ? ? ? ? returnYES;

? ? ? ? }

? ? }


? ? NSDictionary *headers = [request allHTTPHeaderFields];

? ? BOOLhasReferer = [headersobjectForKey:@"Referer"] !=nil;

? ? if(hasReferer) {

? ? ? ? returnYES;

? ? }else{

? ? ? ? // relaunch with a modified request

? ? ? ? dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{

? ? ? ? ? ? ? ? NSURL*url = [requestURL];

? ? ? ? ? ? ? ? NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

? ? ? ? ? ? ? ? //設置授權域名?就是你們商戶申請H5時提交的授權域名.

? ? ? ? ? ? ? ? [requestsetValue:@"channel.vk7201.com://" forHTTPHeaderField:@"Referer"];//www.aglhz.com://

? ? ? ? ? ? ? ? [self.myWebView loadRequest:request];//http://channel.vk7201.com/front/register/index.html://

? ? ? ? ? ? });

? ? ? ? });

? ? ? ? returnNO;

? ? }

}


走到這一步,你就可以加載webView進行支付了,但是問題來了,不論是支付成功還是取消支付之后他都會跳轉到Safari瀏覽器,而且打開的內容是就是你設置Referer時的授權域名http://www.xxx.com,這個家伙就是我們的公司的主頁。

那么,怎么辦呢,最后我們經過協商,只要能支付,不管支付成功或者取消支付,只要停留在微信界面就可以了,然后讓用戶點擊右上角手動返回APP,這個是沒有辦法的辦法了。然后Android那個哥們給我生成了一個weixin://wap/pay?prepayid%3Dwx201801151450335872c8f41a0452242290&package=122735683&noncestr=1515999038&sign=0b3590852e847b336e6f0187a0f56ab1這樣的鏈接,這個鏈接是通過攔截webView訪問獲取的,然后我試了一下,可以支付,也停留在了微信,于是我高高興興的去嘗試了一下。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

通過webView的代理方法來獲取到這個鏈接,然后進行支付,發現還是一樣的會跳轉到Safari瀏覽器,當時瞬間懵逼了,怎么會這個樣子呢,不信邪的我又讓Android那個哥們攔截一個鏈接給我,嘗試一下不會跳轉瀏覽器,我又試了一下自己的攔截的鏈接還是會跳轉到Safari瀏覽器。我突然明白了這個是我設置了Referer,不管是用https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20180115115052bedf091fba0369993002&package=2975002856還是攔截的weixin://wap/pay?prepayid%3Dwx201801151450335872c8f41a0452242290&package=122735683&noncestr=1515999038&sign=0b3590852e847b336e6f0187a0f56ab1進行支付都是不行的,他都會跳轉到Safari。

我當時想要不用TFHpple解析HTML內容吧,但是仔細一想不行的,因為頭部沒有Referer,無法解析。最后實在沒辦法了,都準備放棄了,突然想到了設置scheme,既然我可以Safari可以打開APP,那么我這肯定也能做的。于是我又信心滿滿的開始我的實驗了。

首先要設置scheme,假如scheme設置xxxx,那么你在Safari輸入xxxx://就可以打開APP了。做到這就全部明白了,只要設置好Referer和我的scheme對應就行了,然后我開始實驗:

Referer設置:http://www.xxx.com ?scheme設置:http://www.xxx.com發現不行

我突然間發現是不是只要是帶有h5的授權的域名就可以呢,于是我把公司的一個鏈接www.aglhz.com/sub_property_ysq/m/html/introduction.html設置成Referer之后我發現我還是能支付的,我擦,突然之間發現了一個新的大陸啊,太激動了,然后為了確保準確性進行了各種嘗試,發現只要帶有域名的都可以,然后我又進行了一個嘗試:就是把http://去掉直接把Referer設置成:www.xxx.com,然后也是能支付的。這樣就全部OK了,我把Referer設置成:www.xxx.com://這個樣式的然后把scheme設置成:www.xxx.com這樣的話支付成功或者取消支付都可以直接返回到APP了。

所以h5支付最終返回APP的解決方案是:把Referer設置成:www.xxx.com://?scheme設置成:www.xxx.com就可以直接返回APP了。



當然目前還沒有解決多個APP同時使用同一個授權域名時,怎么返回APP的問題,多個APP使用h5支付的話會導致返回錯亂的問題,如果哪位大神知道解決辦法的話可以告訴我一下,謝謝!

同樣你如果有多個APP被同一家客戶使用的話,客戶也同意用戶點擊左上角手動返回的話你可以這樣設置Referer: ?www.xxx.com/test://,這樣的話你支付成功會直接停留在微信,不會造成返回APP錯亂的問題。

由于大家都在問微信h5支付返回的問題,所以抽空寫了一個demo,針對的是webVIew和WKWebVIewdemo地址。喜歡的朋友給個star。

如果有多個APP運用到h5支付的話,返回的Scheme設置是一個問題,在這里我給大家提供一篇文章,是解決多個APP返回的問題iOS實現微信外部H5支付完成后返回原APP(多APP也可實現)



微信審核通過需要3至5個工作日。

我們假設支付域名填寫的 ?aaa.cn,注意是頂級域名,不是二級或三級的子域名。

服務器端通過統一下單接口從微信拿到支付跳轉鏈接(https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20180115115052bedf091fba0369993002&package=2975002856),稱為mweb_url,有效期為5分鐘。

由于這里是APP調起支付,不是網頁H5發起支付,所以這里mweb_url值不需要再拼接上redirect_url參數。

然后移動端進行請求mweb_url,就會調起微信APP支付。

可能會出現以下問題:

“出現商家參數格式有誤,請聯系商家解決”



說明在請求mweb_url時referer為空導致,設置上就可以,這里我們設置最先在商戶后臺注冊的aaa.cn的一個多級子域名,比如:b.aaa.cn。

如果不是設置商戶后臺注冊的頂級域名的多級子域名,比如:b.ccc.cn。

就會出現“商家存在未配置的參數,請聯系商家解決”異常。


那就把ccc.cn注冊到商戶后臺就可以解決了。

到目前為止,你就可能正常支付了,但支付成功后,并不能正常跳回原APP,嚴重影響了用戶體驗。

解決方案:把referer設置成:b.aaa.cn://,scheme設置成:b.aaa.cn就可以直接返回APP了。

如是你只有一款APP使用此支付方式,那就可以到此為止了。

如果你有兩款以上APP(比如X1,X2,X3),并都把referer設置成:b.aaa.cn://,scheme設置成:b.aaa.cn。

用戶只安裝了其中一款APP(X1),此時支付能夠成功,并能轉回原APP,一點問題沒有。如果同時安裝了(X1,X2),就會發現支付能夠成功,但成功后頁面靜止,不能跳回原APP了,也嚴重影響了用戶體驗。

想到的第一個解決方案就是更改referer與scheme。

APPX1X2X3

refererb.aaa.cn/x1://b.aaa.cn/x2://b.aaa.cn/x3://

schemeb.aaa.cn/x1b.aaa.cn/x2b.aaa.cn/x3

通過測試發現不起作用。在網上搜索了很久也沒有找到解決方案,感覺只能妥協了,犧牲點用戶體驗,讓用戶點擊左上角返回原APP。


突然靈光一閃,微信商戶后臺即然讓我們注冊頂級域名,那是不是只要把referer與scheme設置成注冊的頂級域名的多級子域名就可以了呢,如下:

APPX1X2X3

refererb1.aaa.cn://b2.aaa.cn://b3.aaa.cn://

schemeb1.aaa.cnb2.aaa.cnb3.aaa.cn

通過測試,完美運行。理論上這個解決方案可以支持無數個APP,也同時解決了微信開放平臺APP支付的限制個數。



//支付寶h5支付返回頁面


schemeStr,這個關鍵字讓我眼前一亮。

手機網站支付轉Native支付:支付寶的意思是,我們提供了一個SDK,你接了之后就可以很方便的實現H5收銀臺(即在web上輸入支付寶賬號密碼支付)到支付寶APP收銀臺的過渡。

如果你是一個"正規"APP開發者,至此已經可以解決你的問題了。按照支付寶文檔接支付寶SDK即可,就能實現H5支付回調APP了。

下載了支付寶的Demo,試了下確實可以跳回APP。

樓主琢磨著,既然SDK能實現這個功能,說明支付寶還是支持的H5支付完成后返回APP功能的,并不是向文檔上說的,"在iOS系統中,喚起支付寶App支付完成后,不會自動回到瀏覽器或商戶APP。用戶可手工切回到瀏覽器或商戶APP",只是支付寶不愿意公開而已。

/** * 支付接口

?* *@paramorderStr 訂單信息?

*@paramschemeStr ?調用支付的app注冊在info.plist中的scheme?

*@paramcompletionBlock 支付結果回調Block,用于wap支付結果回調(非跳轉錢包支付) */

- (void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock;

最終打開支付寶APP都會走?[UIApplicationsharedApplication] openURL:]


#import

#import

@implementationUIApplication(TrackTimer)

+ (void)load{staticdispatch_once_toneToken;

dispatch_once(&oneToken, ^{?

?SEL mySelector =NSSelectorFromString(@"my_openURL:");

?SEL orginalSelector =NSSelectorFromString(@"openURL:");?

?Method myMethod = class_getInstanceMethod([selfclass], mySelector);

?Method orginalMethod = class_getInstanceMethod([selfclass], orginalSelector);

BOOLdidAddMethod = class_addMethod([selfclass], orginalSelector, method_getImplementation(myMethod), method_getTypeEncoding(myMethod));

If(didAddMethod) {

?class_replaceMethod([selfclass], mySelector, method_getImplementation(orginalMethod), method_getTypeEncoding(orginalMethod));

?}else{?

?method_exchangeImplementations(myMethod, orginalMethod);?

?}

?});

}

- (void)my_openURL:(NSURL*)url{

NSLog(@"%@",url);

?[selfmy_openURL:url];

}

打印結果

alipaymatrixbwf0cml3://alipayclient/?%7B%0A%20%20%22fromAppUrlScheme%22%20%3A%20%22alisdkdemo%22%2C%0A%20%20%22requestType%22%20%3A%20%22SafePay%22%2C%0A%20%20%22dataString%22%20%3A%20%22trade_no%3D%5C%222018041921001001270586523089%5C%22%26pay_phase_id%3D%5C%22%5C%22%26biz_type%3D%5C%22trade%5C%22%26biz_sub_type%3D%5C%22TRADE%5C%22%26app_name%3D%5C%22tb%5C%22%26extern_token%3D%5C%221fc77c67c70ef70d58e2bf7c513d91a5%5C%22%26appenv%3D%5C%22%5C%22%26pay_channel_id%3D%5C%22alipay_sdk%5C%22%26bizcontext%3D%5C%22%7B%5C%22av%5C%22%3A%5C%221%5C%22%2C%5C%22sc%5C%22%3A%5C%22h5tonative%5C%22%2C%5C%22ty%5C%22%3A%5C%22ios_lite%5C%22%2C%5C%22appkey%5C%22%3A%5C%222014052600006128%5C%22%2C%5C%22sv%5C%22%3A%5C%22h.a.3.5.3%5C%22%2C%5C%22an%5C%22%3A%5C%22com.antfin.AliSDKDemo%5C%22%7D%5C%22%22%0A%7D

URLDecode

alipaymatrixbwf0cml3://alipayclient/?{

"fromAppUrlScheme" : "alisdkdemo",

"requestType" : "SafePay",

"dataString" : "trade_no="2018041921001001270586523089"&pay_phase_id=""&biz_type="trade"&biz_sub_type="TRADE"&app_name="tb"&extern_token="1fc77c67c70ef70d58e2bf7c513d91a5"&appenv=""&pay_channel_id="alipay_sdk"&bizcontext="{"av":"1","sc":"h5tonative","ty":"ios_lite","appkey":"2014052600006128","sv":"h.a.3.5.3","an":"com.antfin.AliSDKDemo"}""

}

為什么前面會有一點亂碼,alipaymatrixbwf0cml3,不管它了。fromAppUrlScheme,是不是很驚喜。

URLDecode以后(部分字段我做了屏蔽)

alipay://alipayclient/?{"dataString":"h5_route_token="xxxxxxxxxxxxx"&is_h5_route="true"","requestType":"SafePay","fromAppUrlScheme":"alipays"}

也有fromAppUrlScheme這個參數,而且默認是支付寶APP的URLScheme:alipays

對比一下發現,SDK中傳入的schemeStr參數對應就是alipay:// 中的 fromAppUrlScheme字段。

由此樓主猜測,在 alipay:// 打開支付寶時,傳入 fromAppUrlScheme,支付結束后就會跳到對應的APP。

最終,樓主在自己的項目中驗證了上述猜測。

總結下吧

最終解決方案

方案一

接支付寶提供的SDK,schemeStr參數傳入自己APP的URLScheme即可。 具體的手機網站支付轉Native支付

方案二

不需要接SDK,不需要添加支付寶白名單,webView攔截alipay://alipayclient請求,追加或修改參數 fromAppUrlScheme為你自己的URLScheme值(這一步可沒那么簡單,自己動手吧,偷笑),生成新的NSURL,然后用 [[UIApplication sharedApplication] openURL:] 打開即可。

2018.5.24更新(上面看懂了下面這段可以不用看)

總有人私信我問我怎么追加fromAppUrlScheme。可能是我說的"webView攔截",讓初學者不明白吧,簡單提一下。

在webView"發起請求的代理方法"里面攔截請求的URL,即如果請求是alipay://alipayclient開頭的,說明這個請求就跳轉支付寶的請求。

替換里面fromAppUrlScheme的值為你自己的scheme值。(當然如果更嚴謹的話,應該是判斷fromAppUrlScheme這個key是否存在,存在則替換其值,不存在則追加)。用替換好的字符串生成一個NSURL,用[[UIApplication sharedApplication] openURL:newURL]跳轉支付寶。代理方法返回NO,即終止這次請求。


應該是判斷fromAppUrlScheme這個key是否存在,存在則替換其值,不存在則追加

代碼如下:

?NSString *urlStr = [navigationAction.request.URL.absoluteString stringByRemovingPercentEncoding];

? ? DLOG(@"urlStr == %@",urlStr);

? ? NSLog(@"當前加載的webView? decidePolicyForNavigationAction:\n%@",webView.URL.absoluteString);

? ? if([urlStrhasPrefix:@"alipayqr://"] || [urlStrisStartWithString:@"alipay"] || [urlStrhasPrefix:@"alipay://"]) {

?? ? ? NSMutableString* tmpUrlStr = urlStr.mutableCopy;

? ? ? ? if([urlStrcontainsString:@"fromAppUrlScheme"]) {

? ? ? ? ? ? NSDictionary* tmpDic = [selfdictionaryWithUrlString:tmpUrlStr];

? ? ? ? ? ? DLOG(@"tmpDic == %@",tmpDic);

? ? ? ? ? ? NSString* tmpValue = [tmpDicvalueForKey:@"fromAppUrlScheme"];

? ? ? ? ? ? tmpUrlStr = [[tmpUrlStrstringByReplacingOccurrencesOfString:tmpValue withString:@"panda"] mutableCopy];

? ? ? ? ? ? DLOG(@"tmpUrlStr == %@",tmpUrlStr);

? ? ? ? ? ? tmpUrlStr = [[tmpUrlStrstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];

? ? ? ? }

? ? ? ? NSURL * newURl = [NSURL URLWithString:tmpUrlStr];//navigationAction.request.URL;//[NSURL URLWithString:urlStr];//

? ? ? ? [[UIApplication sharedApplication]openURL:newURl];

? ? }

-(NSDictionary*)dictionaryWithUrlString:(NSString*)urlStr

{

? ? if(urlStr && urlStr.length&& [urlStrrangeOfString:@"?"].length==1) {

? ? ? ? NSArray *array = [urlStr componentsSeparatedByString:@"?"];

? ? ? ? if(array && array.count==2) {

? ? ? ? ? ? NSString*paramsStr = array[1];

? ? ? ? ? ? if(paramsStr.length) {

? ? ? ? ? ? ? ? //paramsStr解析出來的數據:{"soeNote":"電壓高超標,當前值:390.78V,大于上上限值:350.0V","name":"電壓"}

? ? ? ? ? ? ? ? NSData *jsonData = [paramsStr dataUsingEncoding:NSUTF8StringEncoding];

? ? ? ? ? ? ? ? NSDictionary *responseDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves? error:nil];

? ? ? ? ? ? ? ? DLOG(@"responseDic == %@",responseDic);

? ? ? ? ? ? ? ? returnresponseDic;

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? returnnil;

? ? ? ? ? ? }

? ? ? ? }else{

? ? ? ? ? ? returnnil;

? ? ? ? }

? ? }else{

? ? ? ? returnnil;

? ? }

}

作者:CocoaKier

鏈接:http://www.lxweimin.com/p/0d8dd04fe94e

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容