关于支付宝两个回调的说明

原创 2016年05月31日 23:22:00

前段时间有人问过我支付宝中的回调怎么用,所以这里简单说明下。在集成支付宝支付的时候,会有两个回调,一个在AppDelegate中,一个在支付代码中,都是支付成功的回调,区别是,在AppDelegate中的回调是调用客户端支付成功后的回调(成功和失败),在支付处的回调是通过web支付成功的回调。代码如下:

//独立客户端回调函数
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    //如果极简 SDK 不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给 SDK
    if ([url.host isEqualToString:@"safepay"]) {
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

            if ([[resultDic objectForKey:@"resultStatus"] isEqualToString:@"9000"]) {
                [[NSNotificationCenter defaultCenter] postNotificationName:@"paySucceed" object:nil];
            }

        }];
    }
    if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回 authCode
        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
//            NSLog(@"result = %@",resultDic);
        }];
    }
    //    [UMSocialSnsService handleOpenURL:url];

    return YES;
}
 //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
    id<DataSigner> signer = CreateRSADataSigner(privateKey);
    NSString *signedString = [signer signString:orderSpec];

    //将签名成功字符串格式化为订单字符串,请严格按照该格式
    NSString *orderString = nil;
    if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];

        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            if ([[resultDic objectForKey:@"resultStatus"] isEqualToString:@"9000"]) {
                [[NSNotificationCenter defaultCenter] postNotificationName:@"paySucceed" object:nil];
                //支付成功后进行的操作
                PaySuccessViewController *paySuccessVC=[[PaySuccessViewController alloc]init];
                [self.navigationController pushViewController:paySuccessVC animated:YES];
            }
            else
            {
                //支付失败后进行的操作
                PayErrorViewController *payErrorVC=[[PayErrorViewController alloc]init];
                [self.navigationController pushViewController:payErrorVC animated:YES];
            }

        }];


    }

这就是存在于支付宝中的两处回调。
还需要注意的是,支付成功怎么返回到自己的应用中,这里需要设置一个东西:

//支付宝支付代码部分的代码,确保支付成功或者失败可以回到自己的应用中
 NSString *appScheme = @"XXXXXXX";

同事需要设置应用中另一个地方,在工程中选中target
这里写图片描述
写上appScheme的值,确保代码和此处的是一摸一样的,才能成功回到应用中。

版权声明:本文为博主原创文章,未经博主允许不得转载。

支付宝异步回调

层次决定理解,还是理解不够,实践缺欠 现支付宝的通知有两类。  A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式  B页面跳转通知,对应的参数为retu...

php app支付宝回调(异步通知)

微商城的日益只增多,手机支付的需求也越来越大,作为程序员再去弄弄,就真的要跟不上节奏了......
  • Gy__My
  • Gy__My
  • 2017年02月27日 12:25
  • 5664

支付宝支付接口返回到第3方站点后程序对支付宝来源检验失败原因分析

//获取支付宝GET过来反馈信息 Map params = new HashMap(); Map requestParams = request.g...
  • zj53hao
  • zj53hao
  • 2014年04月22日 20:41
  • 15712

3.支付的回调统一处理

在支付宝、微信支付sdk接入的过程中,处理支付回调、退款回调等操作一直让人头痛。Payment通过依赖注入的方式将业务与支付回调行为进行分离。切底让客户端专注业务。简单方便的跳用。...
  • hel12he
  • hel12he
  • 2016年07月29日 23:23
  • 4011

支付宝APP支付完成后台回调示例-java

支付宝在APP支付完成后,需要支付宝主动调用notify_url进行业务的处理。当支付宝通知失败后,会不断的发起通知,知道通知成功,这样保证了业务的正常执行。代码如下(后台回调代码): 1、下载支付...

支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url.

支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类。 A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 ...

支付宝接口异步回调不通知 服务器的原因

已经设置了  notify_url的值为  http://www.xxxxx.com/index.php?g=Wap&m=Alipay&a=PayOrderString   用的是 TP框架   ...

支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. .

分享到 一键分享QQ空间新浪微博百度云收藏人人网腾讯微博百度相册开心网腾讯朋友百度贴吧豆瓣网搜狐微博百度新首页QQ好友和讯微博更多... 百度分享 您还未登录!|登录|注册|帮助 首页业界...
  • CsethCRM
  • CsethCRM
  • 2014年01月08日 11:16
  • 58035

支付宝如何设置无线授权密钥,appid的回调地址、名称,logo

这个设置步骤,由支付宝技术对接提供!! 如何设置无线授权密钥,appid的回调地址、名称,logo 1、登录b.alipay.com 2、进入我的商家服务 3、...

支付宝支付接口之异步回调

近期写了一个微信支付的异步回调,现在就把支付宝的也写了吧。 public class AlipayController{ private Logger logger = Logger.getL...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于支付宝两个回调的说明
举报原因:
原因补充:

(最多只允许输入30个字)