This is the source code of TakeMe Pay iOS SDK from TakeMe Pay. The SDK is used and designed to help users integrate multiple payment brands in their apps. We open source it to help developers understand the architechture and design of the TakeMe Pay iOS SDK well.
Because we provide the payment SDK to developers, our SDK doesn't contain any 3rd libraries.
Payment
indicates a payment. We provide the initializer which accepts a source params
instance and a startPaymentAction
method, letting us issue a payment in just a few lines.
TMPSourceParams *params = [[TMPSourceParams alloc] initWithDescription:@"description" amount:100 currency:@"JPY"];
TMPPayment *payment = [[TMPPayment alloc] initWithSourceParams:params delegate:nil];
[payment startPaymentAction];
Source
indicates the details of a payment, which can be sourceId
, amount
, clientSecret
, etc. An instance of Source
is created by SDK framework and TakeMe Pay backend, when you create the SourceParams
with its initializer, then the Payment
instance will create a Source
for you. You could retrieve the Source
object via PaymentDelegate
.
SourceParams
is used to create the Source
object, and issue a payment successfully by Payment
instance. We recommend you always use the convenience initializer of SourceParams
to initialize it, because some fields of SourceParams
will be handled by SDK. The framework will fill them during the payment.
SourceParamsPreparer
indicates the SourceParams
provider in SDK framework. We want to improve the scalability and flexibility of the SDK, so we abstract all actions for building the SourceParams
as SourceParamsPreparer
.
For example, TakeMe Pay iOS SDK provides a default user interface for checkout view. The checkout view shows the detail of the product and allows user to choose a payment method as the expected one, then press the Pay
button to issue the payment.
Here, the checkout view is responsible for constructing the SourceParams
. It will append some very important properties of the SourceParams
such as type
, flow
and metadata
. These properties will be used to request the payment with specific payment method, like Alipay
, WeChat Pay
, etc.
We realized that our brilliant developers might have many different requirements with SourceParams
construction. The requirements might be a different user interface, or even without any user interface, build the SourceParams
just in codes, so we abstract the concept as SourceParamsPreparer
. If you have any other requirement, just conform to the PaymentSourceParamsPreparer
protocol and implement those required methods. You can find detailed documentations for PaymentSourceParamsPreparer
.
Every payment brand is an instance of PaymentMethod
. They are not a part of TakeMe Pay iOS SDK. We manage them as separated dynamic libraries. Every PaymentMethod
is registered by TMPRegisterPaymentMethod()
macro, in PaymentMethodRegisterSupport
file. The TakeMe Pay iOS SDK will initialize every supported payment method while the SDK initialization phrase.
In TakeMe Pay iOS SDK source code, you can find a lot of files in Foundation
and BusinessFoundation
folder. They support the TakeMe Pay iOS SDK together. The SDK contains features like logs when development
, crash report
, etc.