總結(jié)iOS中微信支付實(shí)現(xiàn)的幾個(gè)的步驟

1.微信開(kāi)發(fā)平臺(tái):http://kf.qq.com/faq/120911VrYVrA150906F3qqY3.html

2.SDK包:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

3.開(kāi)發(fā)文檔:https://pay.weixin.qq.com/wiki/doc/api/index.html

開(kāi)發(fā)步驟 :

第一步:



第二步:(記得看SDK里的readme和demo,因?yàn)橛邪酌麊魏鸵蕾噹?kù)要添加)

下載SDK開(kāi)發(fā)包:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

第三步:

1、項(xiàng)目設(shè)置APPID

商戶在微信開(kāi)放平臺(tái)申請(qǐng)開(kāi)發(fā)APP應(yīng)用后巷挥,微信開(kāi)放平臺(tái)會(huì)生成APP的唯一標(biāo)識(shí)APPID垢村。在Xcode中打開(kāi)項(xiàng)目钓账,設(shè)置微信的URL Schemes為申請(qǐng)成功的APPID垒手。


2胡嘿、注冊(cè)APPID

(1)在工程中導(dǎo)入微信lib庫(kù)和頭文件疏魏,

(2)向微信注冊(cè)您的APPID停做,代碼如下:

[WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"demo 2.0"];

3、調(diào)起支付

-(void)WeixinPay:(NSString*)price{

[UDFsetObject:priceforKey:@"amount"];

//1.創(chuàng)建支付簽名對(duì)象

payRequsestHandler*req = [[payRequsestHandleralloc]init] ;

[reqinit:APP_IDmch_id:MCH_ID];//設(shè)置appid和商戶ID

[reqsetKey:PARTNER_ID];//設(shè)置密鑰

//2.獲取到實(shí)際調(diào)起微信支付的參數(shù)后大莫,在app端調(diào)起支付(此方法里要修改某些自己商品參數(shù))

NSMutableDictionary*dict = [reqsendPay_demo];

//3.發(fā)送微信支付請(qǐng)求

if(dict ==nil){//錯(cuò)誤提示

NSString*debug = [reqgetDebugifo];

// [self alert:@"提示信息" msg:debug];

}else{

//[self alert:@"確認(rèn)" msg:@"下單成功蛉腌,點(diǎn)擊OK后調(diào)起支付!"];

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

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

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

req.openID= [dictobjectForKey:@"appid"];

req.partnerId= [dictobjectForKey:@"partnerid"];

req.prepayId= [dictobjectForKey:@"prepayid"];

req.nonceStr= [dictobjectForKey:@"noncestr"];

req.timeStamp= stamp.intValue;

req.package= [dictobjectForKey:@"package"];

req.sign= [dictobjectForKey:@"sign"];

[WXApisendReq:req];//發(fā)送微信的支付請(qǐng)求

}

}

//這個(gè)方法是WXApi類里的方法

- (NSMutableDictionary*)sendPay_demo{

NSUserDefaults*udf = [NSUserDefaultsstandardUserDefaults];

//訂單標(biāo)題只厘,展示給用戶

NSString*order_name??? = [udfobjectForKey:@"courseTitle"];

//預(yù)付單參數(shù)訂單設(shè)置

srand( (unsigned)time(0) );

NSString*noncestr? = [NSStringstringWithFormat:@"%d",rand()];

NSString*orderno ? = [UDFvalueForKey:@"Orderid"];

NSMutableDictionary*packageParams = [NSMutableDictionarydictionary];

//開(kāi)放平臺(tái)appid

[packageParamssetObject:appidforKey:@"appid"];

//商戶號(hào)

[packageParamssetObject:mchidforKey:@"mch_id"];

//支付設(shè)備號(hào)或門(mén)店號(hào)

[packageParamssetObject:@"APP-001"forKey:@"device_info"];

//固定:隨機(jī)串

[packageParamssetObject: noncestrforKey:@"nonce_str"];

//固定:支付類型烙丛,固定為APP

[packageParamssetObject:@"APP"forKey:@"trade_type"];

//變動(dòng):自己商品名稱

[packageParamssetObject: order_nameforKey:@"body"];

//變動(dòng):支付結(jié)果異步通知

[packageParamssetObject:NOTIFY_URLforKey:@"notify_url"];

//商戶訂單號(hào)

[packageParamssetObject: ordernoforKey:@"out_trade_no"];

//發(fā)起支付的機(jī)器ip

[packageParamssetObject:@"196.168.1.1"forKey:@"spbill_create_ip"];

//訂單金額,單位為分(變動(dòng):自己商品價(jià)格)

[packageParamssetObject:[NSStringstringWithFormat:@"%.f",[ [udfvalueForKey:@"amount"]floatValue]*100]forKey:@"total_fee"];

//獲取prepayId(預(yù)支付交易會(huì)話標(biāo)識(shí))

NSString*prePayid;

prePayid ? = [selfsendPrepay:packageParams];

if( prePayid !=nil) {

//獲取到prepayid后進(jìn)行第二次簽名

NSString*package, *time_stamp, *nonce_str;

//設(shè)置支付參數(shù)

time_tnow;

time(&now);

time_stamp? = [NSStringstringWithFormat:@"%ld", now];

nonce_str= [WXUtilmd5:time_stamp];

//重新按提交格式組包羔味,微信客戶端暫只支持package=Sign=WXPay格式河咽,須考慮升級(jí)后支持?jǐn)y帶package具體參數(shù)的情況

//package ????? = [NSString stringWithFormat:@"Sign=%@",package];

package ??????? =@"Sign=WXPay";

//第二次簽名參數(shù)列表

NSMutableDictionary*signParams = [NSMutableDictionarydictionary];

[signParamssetObject:appidforKey:@"appid"];

[signParamssetObject: nonce_strforKey:@"noncestr"];

[signParamssetObject: packageforKey:@"package"];

[signParamssetObject:mchidforKey:@"partnerid"];

[signParamssetObject: time_stampforKey:@"timestamp"];

[signParamssetObject: prePayidforKey:@"prepayid"];

//生成簽名

NSString*sign? = [selfcreateMd5Sign:signParams];

//添加簽名

[signParamssetObject: signforKey:@"sign"];

[debugInfoappendFormat:@"第二步簽名成功,sign=%@\n",sign];

//返回參數(shù)列表

returnsignParams;

}else{

[debugInfoappendFormat:@"獲取prepayid失敻吃忘蟹!\n"];

}

returnnil;

}

4、支付結(jié)果回調(diào) (在appdelegate.m里寫(xiě)上這個(gè)回調(diào)方法搁凸!)

照微信SDK Sample媚值,在類實(shí)現(xiàn)onResp函數(shù),支付完成后护糖,微信APP會(huì)返回到商戶APP并回調(diào)onResp函數(shù)褥芒,開(kāi)發(fā)者需要在該函數(shù)中接收通知,判斷返回錯(cuò)誤碼嫡良,如果支付成功則去后臺(tái)查詢支付結(jié)果再展示用戶實(shí)際支付結(jié)果锰扶。注意 一定不能以客戶端返回作為用戶支付的結(jié)果献酗,應(yīng)以服務(wù)器端的接收的支付通知或查詢API返回的結(jié)果為準(zhǔn)。代碼示例如下:

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

if ([respisKindOfClass:[PayRespclass]]){

PayResp*response=(PayResp*)rest;

switch(response.errCode){

caseWXSuccess:

//服務(wù)器端查詢支付通知或查詢API返回的結(jié)果再提示成功

NSlog(@"支付成功");

break;

default:

NSlog(@"支付失敗少辣,retcode=%d",resp.errCode);

break;

}

}

}

如果上面的文章對(duì)您在以后的開(kāi)發(fā)中能派上用場(chǎng)凌摄,請(qǐng)關(guān)注或點(diǎn)個(gè)喜歡吧羡蛾,我會(huì)不定期的給您分享或推薦一些好的文章哦^_^

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漓帅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痴怨,更是在濱河造成了極大的恐慌忙干,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浪藻,死亡現(xiàn)場(chǎng)離奇詭異捐迫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)爱葵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)施戴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人萌丈,你說(shuō)我怎么就攤上這事赞哗。” “怎么了辆雾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵肪笋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我度迂,道長(zhǎng)藤乙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任惭墓,我火速辦了婚禮坛梁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腊凶。我一直安慰自己划咐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布吭狡。 她就那樣靜靜地躺著尖殃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪划煮。 梳的紋絲不亂的頭發(fā)上送丰,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音弛秋,去河邊找鬼器躏。 笑死俐载,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的登失。 我是一名探鬼主播遏佣,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼揽浙!你這毒婦竟也來(lái)了状婶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤馅巷,失蹤者是張志新(化名)和其女友劉穎膛虫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體钓猬,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稍刀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敞曹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片账月。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖澳迫,靈堂內(nèi)的尸體忽然破棺而出局齿,到底是詐尸還是另有隱情,我是刑警寧澤纲刀,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布项炼,位于F島的核電站,受9級(jí)特大地震影響示绊,放射性物質(zhì)發(fā)生泄漏锭部。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一面褐、第九天 我趴在偏房一處隱蔽的房頂上張望拌禾。 院中可真熱鬧,春花似錦展哭、人聲如沸湃窍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)您市。三九已至,卻和暖如春役衡,著一層夾襖步出監(jiān)牢的瞬間茵休,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榕莺,地道東北人俐芯。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钉鸯,于是被迫代替她去往敵國(guó)和親吧史。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • 目前項(xiàng)目里有微信支付的需求唠雕,調(diào)研過(guò)一段時(shí)間后贸营,發(fā)現(xiàn)其實(shí)并沒(méi)有想象中的那么困難。如果你只是想實(shí)現(xiàn)該功能及塘,一個(gè)方法足以...
    劉光軍_MVP閱讀 1,447評(píng)論 0 7
  • 前提是已經(jīng)創(chuàng)建完應(yīng)用了在微信的官網(wǎng)上莽使。根據(jù)上一篇的微信獲得支付能力的步驟锐极,這一篇主要制作微信支付的demo笙僚。回顧上...
    陽(yáng)光的大男孩兒閱讀 24,254評(píng)論 25 50
  • 許多年前灵再,有個(gè)老頭肋层,心憂天下,無(wú)力回天翎迁,壯志未酬栋猖,投身江濤。 以前汪榔,我們紀(jì)念屈老頭蒲拉,希望當(dāng)下和后世都能記得住他做過(guò)...
    西西愛(ài)木閱讀 283評(píng)論 3 1
  • 今天的晨讀對(duì)于有拖延癥的人來(lái)說(shuō)又是一大福音啊。小習(xí)慣的養(yǎng)成能讓我們解決小拖延痴腌,今天的晨讀是在教我們解決大拖延嗎雌团? ...
    從容如羊閱讀 72評(píng)論 0 1