Latest 1.0.3
Homepage https://github.com/homedirectvn/PaySMSSDK-iOS
License MIT
Platforms ios 6.0, requires ARC
Authors

Other language: English

Giới thiệu

PaySMS cung cấp cách thức đơn giản nhất để tích hợp thanh toán cho sms qua đầu số 9029 vào ứng dụng của bạn.

PaySMS iOS SDK hỗ trợ iOS từ 6.0 trở lên

Yêu cầu

Môi trường phát triển

PaySMS Version Minimum iOS Target Notes
1.0.0 6.0 Xcode 6.1 is required. Support armv7, armv7s and arm64 architectures (+ i386 for the simulator)

Tương thích

PaySMS iOS SDK hỗ trợ tất cả iOS từ 6.0 trở lên. Hỗ trợ armv7, armv7s and arm64 architectures (+ i386 cho simulator).

Xcode

Chúng tôi sử dụng Xcode 7.3 để viết project demo và SDK. Bạn có thể gặp một số lỗi nếu mở trên những phiên bản Xcode cũ hơn. Đó là lý do vì sao chúng tôi khuyên bạn sử dụng phiên bản mới nhất (non-beta) khả dụng.

Bắt đầu với project Demo

Bạn cần clone hoặc download repository này về máy của bạn.

Chạy project. Ứng dụng mô tả cho bạn khả năng cũng như cách tích hợp của PaySMS.

6 bước để tích hợp với PaySMS

1. Tạo MO Code

Việc đầu tiên bạn cần làm là đăng ký tài khoản khách hàng cho PaySMS. Hãy liên hệ qua Email hoặc Skype (kythuat_paydirect). Sau khi có tài khoản, bạn có thể truy cập vào PaySMS dashboard và tích hợp PaySMS với ứng dụng của bạn.

2. Tải SDK

Có rất nhiều các để tải App360SDK vào project Xcode. Bạn có thể dùng CocoaPods hoặc tự tay tải và thêm framework cùng các thư viện liên quan vào project

Cocoapod (Coming soon)

CocoaPods là cách nhanh nhất để tải và chạy PaySMS trên ứng dụng iOS. Chỉ cần thêm dòng dưới đây vào Podfile và gọi lệnh pod install hoặc pod update

pod 'PaySMS'

Tải PaySMS

Bạn có thể tải iOS SDK ngay từ repo này. Giải nén PaySMS, kéo PaySMS và các framework kèm theo vào project của bạn

3. Tích hợp SDK

Frameworks & Dependencies

PaySMS SDK phụ thuộc vào một số framework khác. Bạn cần thêm chúng vào project của mình. Cụ thể thêm những framework sau:

Framework
SystemConfiguration.framework
CoreMobileServices.framework
CoreTelephony.framework

4. Bắt đầu code

4.1. Import SDK

SDK được import thông qua class PaySMSSDK.h.

#import <PaySMSSDK/PaySMSSDK.h>

4.2. Khởi tạo PaySMSClient

Khi bạn cần sử dụng đến PaySMS SDK, bạn cần khởi tạo một PaySMSClient

    NSString* moCode = @"YOUR_APP_MO_CODE";
    NSString* accountName = @"USER_ACCOUNT_NAME_OR_ID";
    paySMSClient = [[PaySMSClient alloc] initWithMOCode:moCode
                                            accountName:accountName];
    paySMSClient.dataSource = self;

Giá trị accountName nên đặt là gì?

  • Nếu game/app của bạn có user, accountName nên được đặt với giá trị bằng với user id trong hệ thống của bạn.
  • Nếu game/app của bạn không có user, accountName nên được đặt theo device id.
  • accountName chỉ được bao gồm những ký tự từ a-z, A-Z, và 0-9

4.3. Cấu hình/lựa chọn mã dịch vụ Telecom

  • PaySMS cho phép sử dụng nhiều các mã tin nhắn khác nhau như VTC (cho tất cả các mạng Mobilfone, Vinaphone, Viettel), BX (cho mạng Mobilfone và Vinaphone), QK (cho Viettel). Mặc định chúng tôi chọn VTC là mã dịch vụ tin nhắn. Tuy nhiên, bạn có thể lựa chọn mã dịch vụ nào cho game/app của bạn bằng việc phương thức - (NSString * _Nullable)partnerCodeForAmount: (PaySMSAmount * _Nonnull)amount được định nghĩa trong PaySMSClientDataSource:
- (NSString * _Nullable)partnerCodeForAmount:(PaySMSAmount * _Nonnull)amount {
    // You can custom telecom service code here
    // Ex: For Mobifone, there are VTC and BX codes. The default value is VTC,
    // but you can choose the BX code by "return" BX value here.
    if (amount.provider == kPaySMSProviderMobifone) {
        return @"BX";
    }
    // It is also you can choose BX as partner Code for Vinaphone
    else if (amount.provider == kPaySMSProviderVinaphone) {
        // For BX, there is no amount with value == 100K, so,
        // if the amount == 100K, and you choose "BX", it will raise the Assertion
        return @"BX";
    } else if (amount.provider == kPaySMSProviderViettel) {
        // For BX, there is no amount with value == 100K, so,
        // if the amount == 100K, and you choose "BX", it will raise the Assertion
        return @"QK";
    }

    // When this function return null or the listener is nil/NULL,
    // it will using VTC as default partner code
    return nil;
}

4.4. Tạo cú pháp SMS và gửi SMS tới đầu số 9029 (thanh toán qua đầu số 9029)

4.1. Sử dụng UI có sẵn hỗ trợ trong PaySMS SDK

Với phương pháp này, người dùng có thể chọn nhà mạng (telecom) và mệnh giá nạp (par value) cho giao dịch nạp tiền (như hình dưới)

SMS Charging by UI

Để tiến hành thanh toán, bạn cần:

  • Tạo một PaySMSController
    // the paySMSClient you already inited above 
    PaySMSController* paySMSController = [[PaySMSController alloc]  initWithSMSClient:paySMSClient];
    paySMSController.delegate = self;
    // implement PaySMSControllerDelegate for custom the telecom and par value
    [self presentViewController:paySMSController
                       animated:YES
                     completion:nil];                     
  • Để cấu hình/lựa chọn nhà mạng hoặc mệnh giá nạp tiền, bạn có thể implement các hàm được mô tả trong PaySMSControllerDelegate

Chọn nhà mạng: Bạn cần implement hàm (NSArray*)supportedProviders: (PaySMSController * _Nonnull)viewController được mô tả trong PaySMSControllerDelegate để chọn lựa nhà mạng mà game/app hỗ trợ. Ví dụ dưới đây cho phép bạn chỉ cho người dùng chọn Mobilfone và Vinaphone. Chỉ cần không implement hàm này hoặc return giá trị nil/null để game/app cho phép người dùng chọn lựa tất cả các nhà mạng.

/**
 *  This function for developer can set the list of telecom, that the game/app supported
 *  This function is optional, and if the function return null or an empty array list,
 *  the SDK will show all Providers
 *
 *  @param viewController The PaySMSController
 */
- (NSArray*)supportedProviders:(PaySMSController * _Nonnull)viewController {
    //this is an example when you want user choose Mobilfone or Vinaphone only
      NSArray* supportedProviders = @[@(kPaySMSProviderMobifone),
                                    @(kPaySMSProviderVinaphone)];
      return supportedProviders;
}

Chọn mệnh giá: Bạn cần implement hàm availableFairValuesForProvider:inController: được mô tả trong PaySMSControllerDelegate để chọn lựa mệnh giá mà game/app hỗ trợ. Ví dụ dưới đây cho phép bạn chỉ cho người dùng chọn mệnh giá 1K, 5K và 100K. Chỉ cần không implement hàm này hoặc return giá trị nil/null để game/app cho phép người dùng chọn lựa tất cả các mệnh giá hỗ trợ bởi .

/**
 *  This function for developer can set the list of fair values for providers
 *  This function is optional, and if the function return null or an empty array list,
 *  the SDK still show all available fair values
 *
 *  @param viewController The PDVoucherUseCardViewController its delegate of fail
 *  @param result         The selected (and possibly newly created) tokenized payment information.
 */
- (NSArray*)availableFairValuesForProvider:(PaySMSProvider)provider
                              inController:(PaySMSController * _Nonnull)viewController {

    // This is the way you want user to pick some par values only
    // An example with Viettel
    if (provider == kPaySMSProviderViettel) {
        return @[@(kPaySMSParValue1K),
                 @(kPaySMSParValue5K),
                 @(kPaySMSParValue10K)];
    }    
}
  • Đối với phương pháp sử dụng giao diện, bạn không cần phải viết code để người dùng chọn lựa nhà mạng hoặc mệnh giá nạp. Để bắt các sự kiện của quá trình nạp tiền qua SMS, bạn cần implement một số hàm sau:

Sự kiện người dùng huỷ thanh toán

/**
 *  Informs the delegate when the user has decided to cancel out of the Pay by SMS form.
 *
 *  @param viewController The PaySMSController view controller informing its delegate of failure or cancelation.
 */
- (void)userDidCancel:(PaySMSController * _Nonnull)viewController {
    // By simple way, you just need to dissmis the PaySMSController
    [viewController dismissViewControllerAnimated:YES
                                       completion:nil];
}

Sự kiện SMS đã được gửi thành công

/**
 *  Informs the delegate when the sms did send
 *
 *  @param viewController The PaySMSController view controller informing its delegate of failure or cancelation.
 */
- (void)smsDidSend:(PaySMSController * _Nonnull)viewController {
    // Thanks for user and check your server side to be sure your got money from user
    [self.alert cancelAlertWithTitle:nil
                             message:NSLocalizedString(@"The SMS did sent", @"The SMS did sent")
                         cancelTitle:NSLocalizedString(@"OK", @"OK")
                       cancelHandler:^{}];
}

Sự kiện SMS không thể gửi được

/**
 *  Informs the delegate when the sms failed
 *
 *  @param viewController The PaySMSController view controller informing its delegate of failure.
 */
- (void)smsFailed:(PaySMSController * _Nonnull)viewController {
    [self.alert cancelAlertWithTitle:nil
                             message:NSLocalizedString(@"Can not send SMS", @"Can not send SMS")
                         cancelTitle:NSLocalizedString(@"OK", @"OK")
                       cancelHandler:^{}];
}

4.2. Sử dụng PaySMSClient để tự tạo cú pháp SMS dựa trên thông số nhà mạng (PaySMSProvider) và mệnh giá thẻ (PaySMSParValue)


    // Init an amount to charge by PaySMS 
    PaySMSAmount* amount = [[PaySMSAmount alloc] init];
    // Set your telecom: Mobilfone/Vinaphone or Viettel. It should be the user's telecom.
    amount.provider = kPaySMSProviderMobifone;
    // The par value to charge by PaySMS: 1K, 2K, 3K, 4K, 5K, 10K, 15K, 20K, 30K, 40K, 50K, 100K
    amount.parValue = kPaySMSParValue1K;

    // Generate the SMS Syntax 
    NSString* smsSyntax = [paySMSClient smsSyntax:amount];

    // In case the par value is not supported by telecom, the smsSyntax returned will be nil
    if (smsSyntax) {
        // It is an example for you can use 'smsSyntax', Alert to user 
        NSString * message = [NSString stringWithFormat:NSLocalizedString(@"The syntax is: %@. Do you want to send to the provider?", @"The syntax is: "%@". Do you want to send to the provider?"),smsSyntax];
        [self.alert alertWithTitle:nil
                           message:message
                            titles:@[NSLocalizedString(@"Yes", @"Yes"),
                                     NSLocalizedString(@"Cancel", @"Cancel")]
                          handlers:@[^{
            // And send SMS by using MFMessageComposeViewController
            if ([MFMessageComposeViewController canSendText]) {
                MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
                messageController.messageComposeDelegate = self;
                [messageController setRecipients:@[@"9029"]];
                [messageController setBody:smsSyntax];

                [self presentViewController:messageController
                                   animated:YES
                                 completion:nil];
            }
        }, ^ {

        }]];
    }

Xin chúc mừng. Bạn đã tích hợp xong cơ bản PaySMS

Hỗ trợ

Vui lòng liên hệ với chúng tôi về những vấn đề chung.

Về những vấn đề kỹ thuật

Trong trường hợp bạn có những vấn đề về kỹ thuật, vui lòng liên hệ với đội kỹ thuật của chúng tôi.
Vui lòng cung cấp những thông tin sau khi liên hệ, chúng sẽ giúp chúng tôi hỗ trợ bạn nhanh hơn rất nhiều.

Latest podspec

{
    "name": "PaySMSSDK",
    "version": "1.0.3",
    "summary": "PaySMSSDK",
    "homepage": "https://github.com/homedirectvn/PaySMSSDK-iOS",
    "license": "MIT",
    "authors": {
        "Homedirect": "[email protected]"
    },
    "platforms": {
        "ios": "6.0"
    },
    "source": {
        "git": "https://github.com/homedirectvn/PaySMSSDK-iOS.git",
        "tag": "1.0.3"
    },
    "vendored_frameworks": "Framework/PaySMSSDK.framework",
    "resources": "Framework/PaySMSSDK.bundle",
    "requires_arc": true
}

Pin It on Pinterest

Share This