zoukankan      html  css  js  c++  java
  • IOS 支付宝支付开发流程

    一、看官方的Demo,那么看到,必须使用的是商户app申请的时候会有的

     

    这几个东西由产品经理申请给你,如果遇到真不懂的,让你自己申请(也算是对自己的信任,那就看着官方文档一步步申请,这个没什么困难的,做开发的我这里也不记了。没什么意义。)

     二、集成支付宝到自己的工程中

    集成?笑话,写下来有什么意义,还不如看官方文档,最方便的当然是cocoapods 几分钟搞定

    根据自己的APP,修改下面的参数即可:

     

     

     

    说实话,其实这些都是后台去弄的,前端只是点击支付按钮时候,请求后台,让后台给你生成 orderstr 就行了,

    -(void)alipayWith:(NSString*)orderStr{
        NSString *appScheme = @"zhifubao";
       
        // NOTE: 调用支付结果开始支付
        [[AlipaySDK defaultService] payOrder:orderStr fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            NSLog(@"reslut = %@",resultDic);
           
            if ([resultDic[@"ResultStatus"] isEqualToString:@"9000"]) {
                
            }else{
                
            }
            
        }];
    }

    使用支付宝客户端支付之后,无法返回原APP系统

    1)在AppDelegate.m文件中,

    #import <AlipaySDK/AlipaySDK.h>

    -(BOOL)application:(UIApplication *)app openURL:(nonnull NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(nonnull id)annotation{
         [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
        if ([url.host isEqualToString:@"safepay"]) {
            //跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                NSLog(@"result = %@",resultDic);
                NSLog(@"支付宝客户端支付结果result = %@",resultDic);
                if (resultDic && [resultDic objectForKey:@"resultStatus"] && ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000)) {
                    
                    // 发通知带出支付成功结果
                    [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
                } else {
                    
                    // 发通知带出支付失败结果
                    [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
                }
            }];
        }
        
        return YES;
    }
    
    -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
         [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
        if ([url.host isEqualToString:@"safepay"]) {
            //跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                if (resultDic && [resultDic objectForKey:@"resultStatus"] && ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000)) {
                    
                    // 发通知带出支付成功结果
                  [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
                } else {
                    
                    // 发通知带出支付失败结果
                  [[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
                }
            }];
        }
        
        return YES;
    }

    这里面我是做了一个通知,告诉支付页面支付结果的

    (2)点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”,在“URL Schemes”中输入自己的APP标示,如:“alisdkdemo”。“alisdkdemo”来自于以下代码:

    支付代码中的:

    这里的URL Schemes中输入的alisdkdemo,为测试demo,实际商户的app中要填写独立的scheme,建议跟商户的app有一定的标示度,要做到和其他的商户app不重复,否则可能会导致支付宝返回的结果无法正确跳回商户app

    4、可能遇到的错误:

      1:支付宝交易订单处理失败 AL159

      注意:支付宝的金额只能精确到分,所以不能用小数点后面超过两位的浮点型数字。

      所以:应该使用 %.2f 

      2:支付宝支付失败:4000

      检查订单的各种参数,比如订单ID写错为浮点型了。

      3:其他

      检查各种参数和公匙密匙等等

    补充一下,官方流程,做参考用

  • 相关阅读:
    python之路_django入门项目(老师表)
    python之路_django入门项目(学生表)
    python之路_初识django框架
    python之路_前端基础之Bootstrap JS
    python之路_前端基础之Bootstrap 组件
    python之路_前端基础之Bootstrap CSS
    python之路_登录验证及表格增删改作业
    Spring Boot CLI安装
    Spring Boot 所提供的配置优先级顺序
    Intellij IDEA 14.x 中的Facets和Artifacts的区别
  • 原文地址:https://www.cnblogs.com/fengfeng159/p/11114381.html
Copyright © 2011-2022 走看看