微信支付:
1.获取的数据有:(红色的一定要知道,因为生成签名会用到)
参数注释
例如
appid
应用IDwx3ff3d1fc2ff83937
mch_id
商户号1448474102
APP_KEY
954d05bee14a4443da66df49c20fac15
WX_APPSecret
1b887f214421222e1b6a79e4bc37200f
2.官方网站下载sdk文件,
将以下文件拖入到自己的项目中
3.添加依赖库
其中官方文档中并没有提及要添加libc++.tbd这个库文件,但是不添加就会报错,是一个坑。
4.添加”-Objc-all_load”(非常重要!!!)
添加-Objc -all_load 可以,只添加-all_load也可以,但是不能只添加-Objc,会崩溃。
5.在AppDelegate.m文件里面导入头文件
#import
"WXApi.h"
- (
BOOL
)application:(
UIApplication
*)application didFinishLaunchingWithOptions:(
NSDictionary
*)launchOptions {
//注册微信支付(用到appid)
[
WXApi
registerApp
:
@"wx3ff3d1fc2ff83937"
];
return
YES
;
}
//9.0前的方法,为了适配低版本
保留
- (
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];
}
//9.0后的方法
- (
BOOL
)application:(
UIApplication
*)app openURL:(
NSURL
*)url options:(
NSDictionary
<
NSString
*,
id
> *)options{
//这里判断是否发起的请求为微信支付,如果是的话,用WXApi的方法调起微信客户端的支付页面(://pay
之前的那串字符串就是你的APPID,)
return [
WXApi
handleOpenURL
:url
delegate
:self];
}
//微信SDK自带的方法,处理从微信客户端完成操作后返回程序之后的回调方法,显示支付结果的
-(
void
) onResp:(
BaseResp
*)resp
{
//启动微信支付的response
NSString
*payResoult = [
NSString
stringWithFormat
:
@"errcode:%d"
, resp.
errCode
];
if([resp
isKindOfClass
:[
PayResp
class
]]){
//支付返回结果,实际支付结果需要去微信服务器端查询
switch
(resp.
errCode
) {
case
0
:
payResoult =
@"支付结果:成功!"
;
break;
case -
1
:
payResoult =
@"支付结果:失败!"
;
break;
case -
2
:
payResoult =
@"用户已经退出支付!"
;
break;
default
:
payResoult = [
NSString
stringWithFormat
:
@"支付结果:失败!retcode = %d, retstr = %@"
, resp.
errCode
,resp.
errStr
];
break;
}
}
}
6.调用
创建一个支付按钮,处理他的点击事件
- (
IBAction
)pay:(
id
)sender {
//判断用户是否安装微信软件
if ([
WXApi
isWXAppInstalled
]) {
[self
payWithWeixin
];
}else{
UIAlertController
*alertController = [
UIAlertController
alertControllerWithTitle
:
@"未监测到微信,是否要进行安装?"
message
:
@"请先安装微信App,然后使用微信支付。"
preferredStyle
:
UIAlertControllerStyleAlert
];
UIAlertAction
*cancelAction = [
UIAlertAction
actionWithTitle
:
@"取消"
style
:
UIAlertActionStyleCancel
handler
:^(
UIAlertAction
*
_Nonnull
action) {
}];
UIAlertAction
*okAction = [
UIAlertAction
actionWithTitle
:
@"好的"
style
:
UIAlertActionStyleDefault
handler
:^(
UIAlertAction
*
_Nonnull
action) {
[[
UIApplication
sharedApplication
]
openURL
:[
NSURL
URLWithString
:
@"itms-apps://itunes.
apple.com/cn/app/wei/id414478124
"
]];
}];
[alertController
addAction
:cancelAction];
[alertController
addAction
:okAction];
[self
presentViewController
:alertController
animated
:
YES
completion
:nil];
}
}
-(
void
)payWithWeixin{
//返回参数调起支付
PayReq
* req = [[
PayReq
alloc
]
init
];
req.
openID
=
@"wx3ff3d1fc2ff83937”
;//直接传appid就可以
req.
partnerId
=
@"1448474102”
;//就是商户ID
req.
prepayId
=
@"wx2017031509133292984b9ce30164758239”
;//要么自己前台获取,要么跟后台要
req.
nonceStr
=
@"oK0yI6GCRT0v3FSL”
;//随即串(测试数据可以随便传)
req.
timeStamp
= [
@"98766"
intValue
];//时间戳(测试数据可以随便传)
req.
package
=
@"Sign=WXpay”
;//官方固定的参数
req.
sign
=
@"
AE7F415D7D39E0EEA98F3704A3FB10C5
”
;//自动生成签名即可(测试数据可以随便传)
//调起支付(**参数有一个错误,将不能完成调起**)
[
WXApi
sendReq
:req];
}
支付宝支付集成
1.获取必要参数
参数名称例如
appID
商户id 2017031006155166rsa2
PrivateKey 私钥 MIIE*******iVnY=
appID
商户id 2017031006155166rsa2
PrivateKey 私钥 MIIE*******iVnY=
2。官方现在sdk,将以下文件夹拖入到自己的项目中
3.添加依赖库,一个都不能少
4.填写pch路径
5.导入
6.代码运行就可以了