首先,要说的第一点是。
一定要和服务器端一起做,
一定要和服务器端一起做,
一定要和服务器端一起做,
重要的事情说三遍。
首先别想太难,其实非常简单,看他们文档写了一大堆,什么加密,公,秘钥之类的,和我们没啥关系。
所以说,我们要做的就是,只要调一个接口就行。
微信
微信的文档写的非常的好:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1
核心的方法:
PayReq *request = [[[PayReq alloc] init] autorelease];
request.partnerId = @"10000100";
request.prepayId= @"1101000000140415649af9fc314aa427";
request.package = @"Sign=WXPay";
request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
request.timeStamp= @"1397527777";
request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
[WXApi sendReq:request];
里面的参数都是后台传过来的。
支付宝
支付宝文档https://docs.open.alipay.com/204/105295/
关于支付宝,先导入SDK包,
AlipaySDK.bundle
AlipaySDK.framework
在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:
其中,需要注意的是:
- 如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;
- 如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib(如下图)。
步骤2:在需要调用AlipaySDK的文件中,增加头文件引用。
import <AlipaySDK/AlipaySDK.h>
文档看到这里等,后面组装请求消息是后端的活。等他们将组装好的消息发我们调用这个方法
AlipaySDK.defaultService().payOrder(sign, fromScheme: "ZhiFuBao") { (result) in
print("支付宝支付结果\(String(describing: result))")
}
当然后面的支付成功后的回调方法还是要看的
步骤4:配置支付宝客户端返回url处理方法。
(外部存在支付包钱包,支付宝钱包将处理结果通过url返回。)
如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代码:
import <AlipaySDK/AlipaySDK.h>
在@implementation AppDelegate中以下代码中的NSLog改为实际业务处理代码:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}