iOS 微信支付

微信支付接入流程:

下載微信支付idk 地址: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN
將下載好的資源包放入工程
設置bit code 為NO

2644321-42c4d5bdf33db627.png
#import "WXApi.h"
//遵守協(xié)議
@interface AppDelegate ()<WXApiDelegate>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//微信支付注冊
[WXApi registerApp:@"你申請的微信appId"];
return YES;
}
//下面兩個方法已廢棄
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [WXApi handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [WXApi handleOpenURL:url delegate:self];
}
//注意要寫此方法检眯,否則支付結(jié)果不會回調(diào)
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options
{
if ([url.host isEqualToString:@"safepay"]) {
return [WXApi handleOpenURL:url delegate:self];
}
//微信支付回調(diào)方法
- (void)onResp:(BaseResp *)resp
{
switch (resp.errCode) {
case WXSuccess:
{
//成功
}
break;
case WXErrCodeCommon:
{
//普通錯誤類型
}
break;
case WXErrCodeUserCancel:
{
//用戶點擊取消并返回
}
break;
case WXErrCodeSentFail:
{
//發(fā)送失敗
}
break;
case WXErrCodeAuthDeny:
{
//授權失敗
}
break;
case WXErrCodeUnsupport:
{
//微信不支持
}
break;
default:
break;
}
}

支付頁面導入頭文件

#import "WXApi.h"
- (void)pay{
//dic[@"sign"]是后臺統(tǒng)一下單返回的數(shù)據(jù)厘擂,前端調(diào)起支付需要后臺先在微信完成統(tǒng)一下單
NSDictionary *resultDic = dic[@"sign"];
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
int time_stamp=(int)[date timeIntervalSince1970];
//調(diào)起微信支付
PayReq* req            = [[PayReq alloc] init];
req.partnerId          = [resultDic objectForKey:@"mch_id"];
req.prepayId            = [resultDic objectForKey:@"prepay_id"];
req.nonceStr            = [resultDic objectForKey:@"nonce_str"];
req.timeStamp          = time_stamp;
req.package            = @"Sign=WXPay";
NSDictionary *parameters =@{@"appid":@"wxc896d9d1b6757532",@"partnerid":req.partnerId,@"prepayid":req.prepayId,@"package":@"Sign=WXPay",@"noncestr":req.nonceStr,@"timestamp":[[NSString alloc]initWithFormat:@"%d",time_stamp]};
NSMutableDictionary *mutableDic=[[NSMutableDictionary alloc]initWithDictionary:parameters];
req.sign=[self createMd5Sign:mutableDic];
//發(fā)起支付請求
[WXApi sendReq:req];
}
//微信支付創(chuàng)建package簽名
-(NSString *)createMd5Sign:(NSMutableDictionary*)dict
{
NSMutableString *contentString  =[NSMutableString string];
NSArray *keys = [dict allKeys];
//按字母順序排序
NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:NSNumericSearch];
}];
//拼接字符串
for (NSString *categoryId in sortedArray) {
if (  ![[dict objectForKey:categoryId] isEqualToString:@""]
&& ![[dict objectForKey:categoryId] isEqualToString:@"sign"]
&& ![[dict objectForKey:categoryId] isEqualToString:@"key"]
){
[contentString appendFormat:@"%@=%@&", categoryId, [dict objectForKey:categoryId]];
}
}
//添加key字段
[contentString appendFormat:@"key=%@", @"你的秘鑰/我用的微信的secret字符串也是可以的,因為后臺在統(tǒng)一下單時用的這個锰瘸,所以這個地方和后臺保持一致就好"];
//得到MD5 sign簽名
NSString *md5Sign =[contentString md5];
return md5Sign;
}
//MD5加密
- (NSString *)md5
{
if(self == nil || [self length] == 0){
return nil;
}
const char *value = [self UTF8String];
unsigned char outputBuffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(value, (CC_LONG)strlen(value), outputBuffer);
NSMutableString *outputString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(NSInteger count = 0; count < CC_MD5_DIGEST_LENGTH; count++){
[outputString appendFormat:@"%02x",outputBuffer[count]];
}
return outputString;
}

這樣支付就完成了刽严,如果不回調(diào)支付結(jié)果,檢查一下AppDelegate里面是不是寫錯了代理方法

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末避凝,一起剝皮案震驚了整個濱河市舞萄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌管削,老刑警劉巖倒脓,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異含思,居然都是意外死亡崎弃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門含潘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饲做,“玉大人,你說我怎么就攤上這事遏弱∨杈” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵漱逸,是天一觀的道長泪姨。 經(jīng)常有香客問我游沿,道長,這世上最難降的妖魔是什么肮砾? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任妓局,我火速辦了婚禮飞蚓,結(jié)果婚禮上扫尺,老公的妹妹穿的比我還像新娘启昧。我一直安慰自己,他們只是感情好疆柔,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著镶柱,像睡著了一般旷档。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歇拆,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天鞋屈,我揣著相機與錄音,去河邊找鬼故觅。 笑死厂庇,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的输吏。 我是一名探鬼主播权旷,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贯溅!你這毒婦竟也來了拄氯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤它浅,失蹤者是張志新(化名)和其女友劉穎译柏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姐霍,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡鄙麦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了镊折。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胯府。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腌乡,靈堂內(nèi)的尸體忽然破棺而出盟劫,到底是詐尸還是另有隱情,我是刑警寧澤与纽,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布侣签,位于F島的核電站塘装,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏影所。R本人自食惡果不足惜蹦肴,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猴娩。 院中可真熱鬧阴幌,春花似錦、人聲如沸卷中。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蟆豫。三九已至议忽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間十减,已是汗流浹背栈幸。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帮辟,地道東北人速址。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像由驹,于是被迫代替她去往敵國和親芍锚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

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

  • 抽個時間總結(jié)一下微信支付荔棉; 需要和微信申請APPID然后審核 (300塊大洋) 首先從官網(wǎng)上下載一個demo[網(wǎng)址...
    芝麻綠豆閱讀 1,954評論 11 46
  • 啥也不說了闹炉,直接進主題:首先去這個網(wǎng)頁 https://open.weixin.qq.com/cgi-bin/sh...
    重駒閱讀 5,119評論 10 9
  • 最近做了一個新項目,涉及到支付寶和微信支付润樱,支付寶和微信都是業(yè)界的老大哥渣触,相信大家都有所覺得文檔、SDK都是各種坑...
    smile麗語閱讀 2,395評論 2 19
  • 步驟 1 下載微信終端SDK文件SDK文件包括 libWeChatSDK.a壹若,WXApi.h嗅钻,WXApiObjec...
    靜靜ZZ閱讀 161評論 0 0
  • 每天心情的沉寂,心里為什么就總是放不下店展?每天的心心念念养篓,為何?你總是要出現(xiàn)赂蕴。 我在等待柳弄、我在渴望!等待著你的信息,...
    迷霧凡塵閱讀 770評論 1 0