支付宝支付成功或者失败后,停留在AppDelegate 里面。用代理方法已解决
首先在 AppDelegate.h 添加
//支付宝回调代理方法
@protocol AlipayDelegate <NSObject>
- (void)paymentResultCallbackWithResult:(NSDictionary *)resultDic;
@end再添加@property (nonatomic, weak) id<AlipayDelegate> alipayDelegate;
在AppDelegate.m 支付宝支付的地方
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSString *resultStatus = [resultDic objectForKey:@"resultStatus"];
NSLog(@"lisiresult = %@",resultStatus);
//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
if (_alipayDelegate && [_alipayDelegate respondsToSelector:@selector(paymentResultCallbackWithResult:)]) {
[_alipayDelegate paymentResultCallbackWithResult:resultDic];
}
}];
}
return YES;
}
到使用支付宝的页面
添加
#import "AppDelegate.h"
在提交商品信息等操作的地方添加
//支付完成回调代理
AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.alipayDelegate = self;
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
[self checkPaymentResult:resultDic];
}];然后再添加两个方法
//核实支付结果
- (void)checkPaymentResult:(NSDictionary *)resultDic
{
NSLog(@"reslut = %@",resultDic);
switch ([[resultDic objectForKey:@"resultStatus"] integerValue]) {
case 9000: {
//to do 请求服务器验证支付状态// 完全在这里支付成功后设置提示框,或者跳转页面的操作
}
break;
default:
break;
}
//9000 订单支付成功
//8000 正在处理中
//4000 订单支付失败
//6001 用户中途取消
//6002 网络连接出错
}
#pragma mark - AlipayDelegate
- (void)paymentResultCallbackWithResult:(NSDictionary *)resultDic
{
[self checkPaymentResult:resultDic];
}
最后 别忘了设置 <AlipayDelegate>
如有不对,请指出,第一次写博客,谢谢大家支持
本文介绍了在iOS应用中,如何处理支付宝支付成功或失败后页面的跳转问题。通过在AppDelegate中设置代理方法,可以实现支付完成后正确返回到应用的指定页面。博主分享了具体的代码实现,并欢迎大家指正。
1万+

被折叠的 条评论
为什么被折叠?



