iOS 之 微信支付

2021-07-07 05:45:01 字數 4309 閱讀 1773

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 ...