首页/知天下事/正文
支付宝支付问题总结:业务逻辑后台实现及相关冲突处理与步骤备注

 2025年09月05日  阅读 20

摘要:后台实现支付宝支付的主要逻辑近期花时间梳理了支付宝支付的后台运作方法。依照官方倡导的方法,把核心业务流程安排在服务器端执行,手机应用只需要通过调用服务接口就能实现付款操作。这种做法不仅增强了安全性能,同时也为日后的维护工作以及功能拓展提供了便利条件。与微信...

后台实现支付宝支付的主要逻辑

近期花时间梳理了支付宝支付的后台运作方法。依照官方倡导的方法,把核心业务流程安排在服务器端执行,手机应用只需要通过调用服务接口就能实现付款操作。这种做法不仅增强了安全性能,同时也为日后的维护工作以及功能拓展提供了便利条件。

与微信支付的对比

支付宝付款和微信付款在运作方式上存在不同之处。支付宝付款无需确认用户设备上是否安装了支付宝软件。若外部已有支付宝钱包应用,会立刻转向该应用执行付款操作;如果未安装该应用,系统会自动切换到网页版支付模式。这种处理方式减少了微信支付的一个确认环节,从而优化了开发环节的流程。

官方文档的重要性

研发期间,官方指南是具有最高效力的参考依据。应当让程序员认真研读支付宝开放平台提供的官方指南,以便掌握最新的接口准则和保障措施。尤其对于签名方法、回调响应等核心部分,务必依照指南中的说明来开发,以免造成支付不畅或存在安全风险。

与阿里云推送的冲突问题

#import "AppDelegate.h"
#import 
// NOTE: iOS9.0以前使用的API接口
- (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: iOS9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}
//如果还集成了微信支付的SDK,就写在一起
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
    //微信

ios支付宝支付 不接sdk_支付宝支付后台实现_AliPaySDK与友盟阿里云推送UTDID冲突解决

BOOL result = [WXApi handleOpenURL:url delegate:self]; if (!result) { //支付宝 if ([url.host isEqualToString:@"safepay"]) { //跳转支付宝钱包进行支付,处理支付结果 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"result = %@",resultDic); NSLog(@"支付宝客户端支付结果result = %@",resultDic); [PHTitleAlertView showWithAlerTitle:resultDic[@"memo"]]; /* 9000 订单支付成功 8000 正在处理中 4000 订单支付失败 6001 用户中途取消 6002 网络连接出错 */ 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; }

当项目合并了阿里云推送功能时,要留意SDK组合可能引发的矛盾状况。建议使用人工加入SDK的途径,而不是自动组合。这样做能更有效地管理相互关联,防止版本不合和运作不正常。实际编码时,曾碰到自动组合造成推送失效的状况,改用手动组合后,难题便得以化解。

具体实现代码流程

取得订单号:手机端把付款清单发给服务器,服务器创建一个独一无二的订单号送给手机端。这个号码在后续付款环节至关重要,务必确保它不会重复而且能够正常使用。

支付按钮被按下时,客户端会再次向后台发送相关数据,后台依据这些数据制作最终的支付内容,其中涉及金额、商品说明等必要信息。

启动付款环节:服务器端将全部必要信息发送给用户端,用户端通过支付宝应用程序接口调用付款界面。这个环节必须妥善处理信息交互和异常应对,保证付款能够顺利开展。

测试注意事项

#pragma mark - 调起支付宝支付页面
/// 自己写的唤起支付的方法
/// @param payOrder 后台获取的orderStr
- (void)SendAliPay:(NSString *)payOrder
{
//:Url_Scheme  为 app 在 info.plist 注册的 scheme。我用的微信的:Url_Scheme 测试没毛病
    [[AlipaySDK defaultService] payOrder:payOrder fromScheme:Url_Scheme callback:^(NSDictionary *resultDic) {
            if ([resultDic[@"ResultStatus"] isEqualToString:@"9000"]) {
                /*
                9000 订单支付成功
                8000 正在处理中
                4000 订单支付失败
                6001 用户中途取消
                6002 网络连接出错
                */
                [SVProgressHUD dismiss];
            }else{
                //最终支付结果以后台反馈为准
                NSString *str = resultDic[@"ResultStatus"];
                NSInteger num = str.integerValue;
                switch (num) {
                    case 8000:
                        [PHTitleAlertView showWithAlerTitle:@"正在处理"];
                        break;
                    case 4000:
                        [PHTitleAlertView showWithAlerTitle:@"订单支付失败"];
                        break;
                    case 6001:
                        [PHTitleAlertView showWithAlerTitle:@"用户中途取消"];
                        break;
                    case 6002:
                        [PHTitleAlertView showWithAlerTitle:@"网络连接出错"];
                        break;
                        
                    default:
                        break;
                }
            }
        }];
    
}

测试环节务必留意两种支付情形,一种是用户设备已安装支付宝钱包,另一种是设备未安装时的H5支付情形。建议准备两台测试设备,分别用来模拟这两种情形。同时需留意网络环境的变化,保证在各种网络状态下支付流程都能顺利运作。测试案例应当涵盖正常支付、取消支付、支付未果等所有情形。

版权声明:本文为 “博览广文网” 原创文章,转载请附上原文出处链接及本声明;

原文链接:http://wen.bjhwtx.com/post/38274.html

标签:

博览广文网

博览广文网为所有文学爱好者、新闻爱好者、关注生活多方面内容的观众朋友提供多方位的内容呈现、提升阅读空间、填充碎片时间,开阔读者的视野、增长见识、了解民生、一个让您不出户尽知天下事的网站平台!
热门标签
关于我们
广文舒阅网—让天下读者有家可归!这里汇聚了各类优质文化信息,无论是全球热点、历史故事,还是实用百科、趣味探索,您都能轻松获取。我们希望用阅读点亮您的世界,让每一次浏览都充满收获和乐趣。
导航栏A标题
广文舒阅网
扫码关注
联系方式
全国服务热线:0755-88186625
Q Q:8705332
Email:admin@lanyu.com
地址:深圳市福田区海雅缤纷国际大厦5层501
Copyright 深圳市蓝宇科技有限公司 版权所有 备案号:京ICP备20013102号-1