Antom, leading provider of tailored payment solutions

AMSPaymentElement

AMSPaymentElement 是 Payment Element 的核心类,集成于 AMSProductBase,用于在 iOS 应用中集成 Antom Payment Element 支付组件的主类。商户通过该类完成 SDK 初始化配置、创建支付组件、提交支付、重置及销毁等操作。

声明

Objective-C
@interface AMSPaymentElement : AMSProductBase
Swift
public class AMSPaymentElement : AMSProductBase

访问单例

Objective-C
@property (class, nonatomic, readonly, strong) AMSPaymentElement *shared;

@end
Swift
public class var shared: AMSPaymentElement { get }
名称
类型
描述
shared
AMSPaymentElement
AMSPaymentElement 单例实例。

实例方法

AMSPaymentElement 单例实例提供以下主要方法:
方法名
描述
用于初始化 SDK 配置。
用于预加载 WebApp 页面和 KYC 页面资源。
用于创建并展示支付或绑卡组件 UI。该方法与confirmPayment()互斥。
用于确认支付(无 UI 支付场景)。该方法与createComponent()互斥。
用于重置支付或绑卡流程,清除当前状态。
用于销毁实例并释放所有关联资源。

属性

Objective-C
@property (nonatomic, weak, nullable) id<AMSPaymentProtocol> paymentDelegate;
Swift
public weak var paymentDelegate: AMSPaymentProtocol?
名称
类型
描述
paymentDelegate
AMSPaymentProtocol?
支付协议代理,参见 AMSPaymentProtocol。

使用说明

使用示例

Objective-C
#import <AMSFoundation/AMSFoundation-Swift.h>
#import <AMSElement/AMSElement-Swift.h>

@interface PaymentViewController () <AMSPaymentProtocol>
@end

@implementation PaymentViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 1. 创建配置
    AMSPaymentElementConfiguration *config = [AMSPaymentElementConfiguration new];
    config.locale = @"en_US";
    config.options = @{
        @"sandbox": @YES,
        @"showLoading": @YES
        };

    // 2. 初始化 SDK(带回调)
    [[AMSPaymentElement shared] initConfiguration:config completion:^(AMSStatusResult * _Nonnull result) {
        if (result.status == AMSStatusResultTypeSUCCESS) {
            NSLog(@"初始化成功");
        } else {
            NSLog(@"初始化失败: %@", result.error.message);
        }
    }];

    // 3. 设置代理
    [AMSPaymentElement shared].paymentDelegate = self;

    // 4. (可选)预加载资源
    [[AMSPaymentElement shared] preload];
}

- (void)startPaymentWithSessionData:(NSString *)sessionData {
    // 5. 创建支付组件(带回调)
    [[AMSPaymentElement shared] createComponent:sessionData completion:^(AMSStatusResult * _Nonnull result) {
        if (result.status == AMSStatusResultTypeSUCCESS) {
            NSLog(@"组件创建成功");
        }
    }];
}

#pragma mark - AMSPaymentProtocol

- (void)onSubmitPayCallback:(AMSStatusResult * _Nullable)eventResult {
    switch (eventResult.status) {
        case AMSStatusResultTypeSUCCESS:
            NSLog(@"支付成功");
            break;
        case AMSStatusResultTypeFAIL:
            NSLog(@"支付失败: %@", eventResult.error.message);
            break;
        case AMSStatusResultTypePROCESSING:
            NSLog(@"支付处理中");
            break;
        case AMSStatusResultTypeCANCELLED:
            NSLog(@"支付已取消");
            break;
        default:
            break;
    }
}

- (void)onEventCallback:(NSString * _Nonnull)eventCode eventResult:(AMSEventResult * _Nonnull)eventResult {
    NSLog(@"事件回调: %@", eventCode);
}

- (void)dealloc {
    [[AMSPaymentElement shared] onDestroy];
}

@end
Swift
import AMSFoundation
import AMSElement

class PaymentViewController: UIViewController, AMSPaymentProtocol {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 1. 创建配置
        let config = AMSPaymentElementConfiguration()
        config.locale = "en_US"
        config.options = [
            "sandbox": true,
            "showLoading": true
        ]
        
        // 2. 初始化 SDK
        AMSPaymentElement.shared.initConfiguration(config) { result in
            if result.status == .SUCCESS {
                print("初始化成功")
            } else {
                print("初始化失败: (result.error?.message ?? "")")
            }
        }
        
        // 3. 设置代理
        AMSPaymentElement.shared.paymentDelegate = self
        
        // 4. (可选)预加载资源
        AMSPaymentElement.shared.preload()
    }
    
    func startPayment(sessionData: String) {
        // 5. 创建支付组件
        AMSPaymentElement.shared.createComponent(sessionData) { result in
            if result.status == .SUCCESS {
                print("组件创建成功")
            }
        }
    }
    
    func onSubmitPayCallback(_ eventResult: AMSStatusResult?) {
        guard let result = eventResult else { return }
        switch result.status {
        case .SUCCESS:
            print("支付成功")
        case .FAIL:
            print("支付失败: (result.error?.message ?? "")")
        case .PROCESSING:
            print("支付处理中")
        case .CANCELLED:
            print("支付已取消")
        default:
            break
        }
    }
    
    func onEventCallback(_ eventCode: String, eventResult: AMSEventResult) {
        print("事件回调: (eventCode)")
    }
    
    // 销毁
    deinit {
        AMSPaymentElement.shared.onDestroy()
    }
}