systemconfiguration.framework libz.tbd libsqlite3.0.tbd
libc++.tbd coretelephony.framework(這個庫官方文件沒說,這就是乙個坑,沒它還不能行)
[wxapi://
payreq
* req = [[
payreq
alloc
] init];
req.
openid
=;//你申請的id
req.
partnerid
=mch_id
;//商戶id
req.
prepayid
= prepayid;//預支付訂單(下面會詳細介紹)
req.
noncestr
= nonce_str;//隨機串 防止訂單重複
req.
timestamp
= time_stamp.
intvalue
;//時間戳 同樣防止訂單重複
req.
package
= @"sign=wxpay"
req.
sign
= sign;//二次簽名(下面會詳細介紹)
先說一下預支付訂單
//******************************== //
預付單引數訂單設定
//******************************==
srand
( (unsigned
)time(0
) );
nsstring
*noncestr = [
nsstring
stringwithformat
:@"%d"
,rand
()];
nslog
(@"%@"
,noncestr);
nsstring
*orderno = [
nsstring
stringwithformat
:@"%ld"
,time(0
)];
nsmutabledictionary
*packageparams = [
nsmutabledictionary
dictionary];
[packageparams
setobject
:forkey
:];
//開放平台
[packageparams
setobject
:mch_id
forkey
:@"mch_id"
];
//商戶號
// [packageparams setobject: @"013467007045764" forkey:@"device_info"]; //
支付裝置號或門店號
[packageparams
setobject
:@"1add1a30ac87aa2db52f57a2375d8fec"
forkey
:@"nonce_str"
];
//隨機串
[packageparams
setobject
:forkey
:@"trade_type"
]; //
支付型別,固定為
[packageparams
setobject
: order_name
forkey
:@"body"
];
//訂單描述,展示給使用者
[packageparams
setobject
:@""
forkey
:@"notify_url"
]; //
支付結果非同步通知
[packageparams
setobject
:@"1415659991"
forkey
:@"out_trade_no"
];//
商戶訂單號
[packageparams
setobject
: @"255.255.255.255"
forkey
:@"spbill_create_ip"
];//
髮器支付的機器ip
[packageparams
setobject
: order_price
forkey
:@"total_fee"
];
//訂單金額,單位為分
[packageparams
setobject
:@"333"
forkey
:@"attach"];
上面這是預支付訂單你需要填寫的基礎引數 這是乙個字典 然後把這些引數進行簽名 md5加密 xml解析 等等
把上面的字典 傳入下面
//提交預支付 -(
nsstring
*)sendprepay:(
nsmutabledictionary
*)prepayparams
}else }
else
//在這個地方成功 恭喜你 你的第一步 預支付訂單已經出來了
return
prepayid; }
//獲取
package
帶引數的簽名包 拼接xml
-(nsstring
*)genpackage:(
nsmutabledictionary
*)packageparams
[reqpars
:@"%@\n"
, sign];
return
[nsstring
stringwithstring
:reqpars]; }
//package 引數
-(nsstring
*) createmd5sign:(
nsmutabledictionary
*)dict ];
//拼接字串
for(nsstring
*categoryid
insortedarray)
} //新增
key欄位
nslog
(@"%@"
,spkey);
[contentstring
:@"key=%@"
, spkey];
//得到
md5 sign簽名
nsstring
*md5sign =[
self
md5:contentstring];
//輸出
debug info [
debuginfo
:@"md5
簽名字串:
\n%@\n\n"
,contentstring];
return
md5sign; }
//md5加密
請求-(
//解析xml
-(void
) startparse:(
nsdata
*)data
****************************************====
上面的就是你第一步需要做的事****************************************==
如果下面的步驟你都成功了 恭喜 離成功就不遠了 接下來進行第二次簽名 也就是驗證簽名
//這個地方的prepayid 是你的預支付訂單號 就是上面成功之後會出來乙個訂單號 if
( prepayid !=
nil)
else
小弟寫的比較陋 如果發現什麼不妥之處 請告訴我。
iOS開發之微信支付
void onresp baseresp resp if resp iskindofclass payresp class else break default strmsg nsstring stringwithformat 支付結果 失敗!retcode d,retstr resp.errcod...
ios 微信 支付
2 將sdk檔案中包含的 libwechatsdk.a,wxapi.h,wxapiobject.h 三個檔案新增到你所建的工程中 3 匯入對應的庫檔案 systemconfiguration.framework,libz.dylib,libsqlite3.0.dylib,libc dylib。imp...
iOS 微信支付
當然如果是在xcode7及以上版本,還需要進行下列配置,不然會編譯不通過 解析服務端返回json資料 nserror error 載入乙個nsurl物件 nsurlrequest request nsurlrequest requestwithurl nsurl urlwithstring str ...