微信支付與微信應(yīng)用間跳轉(zhuǎn)

前言

年末了,一直在忙項(xiàng)目舀寓,很少有時(shí)候?qū)懸恍┳约旱囊娊獾ㄊ=裉鞌D出一點(diǎn)時(shí)間來寫一下剛剛完成的微信的支付和跳轉(zhuǎn)到微信的功能。

如果你還沒有做過互墓,可以看一下必尼,作為參考。如果你做過這個(gè)了篡撵,也可以看一下判莉。總之一句話:有錢的捧個(gè)錢場(chǎng)育谬,沒錢的捧個(gè)人場(chǎng)券盅。????......

微信支付

我這是基于2015年12月在微信官網(wǎng)下載的demo寫的支付,如果和你做過的不相同膛檀,請(qǐng)查看咱們兩個(gè)的版本是否一樣锰镀。

首先,我個(gè)人感覺微信現(xiàn)在的iOS版的前端代碼比以前的簡(jiǎn)化了一些咖刃,現(xiàn)在的官網(wǎng)的demo最大的一點(diǎn)是不在前端放置任何數(shù)據(jù)了泳炉,都是一個(gè)接口請(qǐng)求下來(前一個(gè)版本還是在前端有一個(gè)微信設(shè)置例子,只是建議說后臺(tái)給數(shù)據(jù))嚎杨。

支付和官方demo里面的read.text說的一樣花鹅,需要兩步:調(diào)用請(qǐng)求支付,返回支付結(jié)果枫浙。

請(qǐng)求支付

+ (NSString *)jumpToBizPay {

//============================================================

// V3&V4支付流程實(shí)現(xiàn)

// 注意:參數(shù)配置請(qǐng)查看服務(wù)器端Demo

// 更新時(shí)間:2015年11月20日

//============================================================

NSString *urlString? = @"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=ios";

//解析服務(wù)端返回json數(shù)據(jù)

NSError *error;

//加載一個(gè)NSURL對(duì)象

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];

//將請(qǐng)求的url數(shù)據(jù)放到NSData對(duì)象中

NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

if ( response != nil) {

NSMutableDictionary *dict = NULL;

//IOS5自帶解析類NSJSONSerialization從response中解析出數(shù)據(jù)放到字典中

dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];

NSLog(@"url:%@",urlString);

if(dict != nil){

NSMutableString *retcode = [dict objectForKey:@"retcode"];

if (retcode.intValue == 0){

NSMutableString *stamp? = [dict objectForKey:@"timestamp"];

//調(diào)起微信支付

PayReq* req? ? ? ? ? ? = [[PayReq alloc] init];

req.partnerId? ? ? ? ? = [dict objectForKey:@"partnerid"];

req.prepayId? ? ? ? ? ? = [dict objectForKey:@"prepayid"];

req.nonceStr? ? ? ? ? ? = [dict objectForKey:@"noncestr"];

req.timeStamp? ? ? ? ? = stamp.intValue;

req.package? ? ? ? ? ? = [dict objectForKey:@"package"];

req.sign? ? ? ? ? ? ? ? = [dict objectForKey:@"sign"];

[WXApi sendReq:req];

//日志輸出

NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[dict objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );

return @"";

}else{

return [dict objectForKey:@"retmsg"];

}

}else{

return @"服務(wù)器返回錯(cuò)誤刨肃,未獲取到j(luò)son對(duì)象";

}

}else{

return @"服務(wù)器返回錯(cuò)誤";

}

}


這一個(gè)方法放在WXApiRequestHandler這個(gè)類里面,這就是一個(gè)處理過程的類自脯。

支付結(jié)果返回

- (void)onResp:(BaseResp *)resp {

if([resp isKindOfClass:[PayResp class]]){

//支付返回結(jié)果之景,實(shí)際支付結(jié)果需要去微信服務(wù)器端查詢

NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付結(jié)果"];

switch (resp.errCode) {

case WXSuccess:

strMsg = @"我的支付結(jié)果:成功!";

NSLog(@"支付-PaySuccess膏潮,retcode = %d", resp.errCode);

break;

default:

strMsg = [NSString stringWithFormat:@"支付結(jié)果:失敹凸贰!retcode = %d, retstr = %@", resp.errCode,resp.errStr];

NSLog(@"錯(cuò)誤,retcode = %d, retstr = %@", resp.errCode,resp.errStr);

break;

}

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

[alert show];

}

}


這個(gè)方法放在WXApiManager類里面轻纪。

在我們需要調(diào)用微信支付的時(shí)候油额,調(diào)用方法:

- (void)bizPay {

NSString *res = [WXApiRequestHandler jumpToBizPay];

if( ![@"" isEqual:res] ){

UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"支付失敗" message:res delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alter show];

}

}


這就是微信支付的全部過程,當(dāng)然還有別忘了在appdelegate里面去調(diào)用支付結(jié)果的返回方法刻帚,這就是一個(gè)支付的全部過程潦嘶。支付寶支付也是這個(gè)過程,只是說他們各自的加密等小過程不一樣而已崇众。

有時(shí)候你會(huì)奇妙的發(fā)現(xiàn)你跳轉(zhuǎn)到微信支付的界面之后一個(gè)確定按鈕掂僵,然后其他的什么都沒有。我個(gè)人感覺可能有幾點(diǎn)原因:

1.你的app里面是不是集成了一些第三方分享之類的顷歌,里面包含了分享到微信锰蓬。如果有,在你appdelegate里面眯漩,把導(dǎo)入集成的代碼放在微信注冊(cè)代碼的前面執(zhí)行芹扭,確保程序后執(zhí)行微信支付。

2.看一下自己的scheme有沒有設(shè)置對(duì)赦抖,檢查一下自己的微信相關(guān)配置舱卡。

3.莫名不知道的錯(cuò)誤。刪除掉app再次運(yùn)行就好了队萤。????

應(yīng)用間跳轉(zhuǎn)到微信

我們需求是點(diǎn)擊按鈕跳轉(zhuǎn)微信公眾平臺(tái)轮锥,并復(fù)制一個(gè)字符串到剪切板。查了好久浮禾,怎么跳轉(zhuǎn)到微信交胚。但讓應(yīng)用件跳轉(zhuǎn)我知道怎么寫,但是用的我們微信的scheme怎么都跳不過去盈电。查了文檔也是沒有這一塊的知識(shí)點(diǎn)蝴簇,API。今天正好在偶然間看到了跳轉(zhuǎn)微信間的各個(gè)scheme匆帚,才知道原來跳轉(zhuǎn)到微信用的是微信定好的scheme熬词。

如果你對(duì)下面這一塊代碼有疑問,請(qǐng)百度:iOS應(yīng)用件跳轉(zhuǎn)吸重,相信你會(huì)找到答案互拾。

NSString *urlStr = [NSString stringWithFormat:@"weixin://dl/officialaccounts"];

//復(fù)制字符串到剪切板

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

pasteboard.string = @"sun yun fei";

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlStr]];

這就是跳轉(zhuǎn)的代碼,點(diǎn)擊直接跳轉(zhuǎn)到微信公眾平臺(tái)嚎幸。當(dāng)然這里還是加一句判斷比較好颜矿,判斷一下手機(jī)是否安裝了微信。

后記

這就是我自己做的微信支付與跳轉(zhuǎn)嫉晶,希望對(duì)你有所幫助骑疆。

demo鏈接田篇,大家可以看一下(給個(gè)星星唄,各位看官)箍铭,xcode7.2運(yùn)行環(huán)境下寫的泊柬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诈火,隨后出現(xiàn)的幾起案子兽赁,更是在濱河造成了極大的恐慌,老刑警劉巖冷守,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刀崖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拍摇,警方通過查閱死者的電腦和手機(jī)蒲跨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來授翻,“玉大人,你說我怎么就攤上這事孙咪】疤疲” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵翎蹈,是天一觀的道長(zhǎng)淮菠。 經(jīng)常有香客問我,道長(zhǎng)荤堪,這世上最難降的妖魔是什么合陵? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮澄阳,結(jié)果婚禮上拥知,老公的妹妹穿的比我還像新娘。我一直安慰自己碎赢,他們只是感情好低剔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肮塞,像睡著了一般襟齿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枕赵,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天猜欺,我揣著相機(jī)與錄音,去河邊找鬼拷窜。 笑死开皿,一個(gè)胖子當(dāng)著我的面吹牛涧黄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播副瀑,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼弓熏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了糠睡?” 一聲冷哼從身側(cè)響起挽鞠,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狈孔,沒想到半個(gè)月后信认,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡均抽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年嫁赏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片油挥。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡潦蝇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出深寥,到底是詐尸還是另有隱情攘乒,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布惋鹅,位于F島的核電站则酝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闰集。R本人自食惡果不足惜沽讹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望武鲁。 院中可真熱鬧爽雄,春花似錦、人聲如沸洞坑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迟杂。三九已至刽沾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間排拷,已是汗流浹背侧漓。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留监氢,地道東北人布蔗。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓藤违,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親纵揍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顿乒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • iOS支付 iOS支付分為兩類,第三方支付和應(yīng)用內(nèi)支付(內(nèi)購)泽谨。 第三方支付包括:支付寶支付璧榄、微信支付、銀聯(lián)支付吧雹、...
    請(qǐng)輸入賬號(hào)名閱讀 6,205評(píng)論 3 22
  • 與微信官方簽署在線協(xié)議 導(dǎo)入微信支付需要的SDK相關(guān)文件 配置App跳轉(zhuǎn)的白名單 添加URL Schemes 配置...
    閣子菌閱讀 418評(píng)論 0 7
  • 前言:下面介紹微信支付的開發(fā)流程的細(xì)節(jié)骨杂,圖文并茂,你可以按照我的隨筆流程過一遍代碼雄卷。包你也學(xué)會(huì)了微信支付搓蚪。而且支付...
    SmileFans閱讀 1,627評(píng)論 7 18
  • 3D變換,3個(gè)屬性 transform-style: prevserve-3d ;建立3D空間,必須是父元素,運(yùn)動(dòng)...
    我擁抱著我的未來閱讀 597評(píng)論 0 0
  • 《一個(gè)人醉》 美麗星空下 我獨(dú)自一個(gè)醉 一個(gè)人走 只聽到曠野中 風(fēng)和樹葉的交談 我多想告訴他我的寂寞 只怕他把那當(dāng)...
    晚熟的柿子閱讀 186評(píng)論 0 0