-
Notifications
You must be signed in to change notification settings - Fork 4
Customers API
Our customers API allows you to securely save customer data and payment methods. In order to associate customer's payment method for future payments you have to provide customer UUID in the transaction params, details below.
In order to operate with our Customer API you have to obtain access token and forward to your mobile app.
Here is example how to create access token with your backend:
POST request on endpoint https://ipgtest.monri.com/v2/oauth Body:
{
"client_id": "Authenticity token",
"client_secret": "Merchant key",
"scopes": ["customers", "payment-methods"],
"grant_type": "client_credentials"
}
Response example:
{
"access_token": "*********************",
"token_type": "Bearer",
"expires_in": 900,
"status": "approved"
}
Create MonriApi instance:
let authenticityToken = "available on merchant's dashboard";
lazy var monri: MonriApi = {
[unowned self] in
return MonriApi(self.navigationController!, options: MonriApiOptions(authenticityToken: authenticityToken, developmentMode: true));
}()
In order to create a Customer
you’ve to provide:
- access token
CustomerData
//...
let accessToken = "Bearer *********************" //token from backend
let customerRequestBody = CustomerData(
merchantCustomerUuid: "merchantUuid, optional if you want to use your own UUID",
description: "description",
email: "[email protected]",
name: "Adnan",
phone: "00387000111",
metadata: ["a": "b", "c": "d"],
zipCode: "71000",
city: "Sarajevo",
address: "Džemala Bijedića 2",
country: "BA"
)
let createCustomerParams = CreateCustomerParams(accessToken: accessToken, customerData: customerRequestBody)
self.monri.customers().create(createCustomerParams) { (result: CustomerResult) in
switch (result) {
case .result(let customer):
//...
case .error(let customerError):
//...
}
}
//...
In order to update a Customer
you’ve to provide:
- access token
UpdateCustomerParams
//...
let customerRequestBody = CustomerData(
description: "new description",
email: "[email protected]",
name: "Adnan Update",
phone: "00387000111"
)
let customerUpdateRequest = UpdateCustomerParams(
customerData: customerRequestBody,
customerUuid: "customer uuid",
accessToken: "accessToken"
)
self.monri.customers().update(customerUpdateRequest) { (result: CustomerResult) in
switch (result) {
case .result(let customerUpdateResponse):
//...
case .error(let customerUpdateError):
//...
}
}
//...
In order to delete a Customer
you’ve to provide:
- access token
DeleteCustomerParams
//...
let customerDeleteRequest = DeleteCustomerParams(
customerUuid: "customer uuid",
accessToken: "accessToken"
)
self.monri.customers().delete(customerDeleteRequest) { result in
switch (result) {
case .result(let customerDeleteResponse):
//...
case .error(let message):
//...
}
}
//...
In order to retrieve a Customer
you’ve to provide:
- access token
RetrieveCustomerParams
//...
let customerRetrieveRequest = RetrieveCustomerParams(
customerUuid: "customer uuid",
accessToken: "accessToken"
)
self.monri.customers().get(customerRetrieveRequest) { result in
switch (result) {
case .result(let customerResponse):
//...
case .error(let message):
//...
}
}
//...
In order to retrieve a Customer
via Merchant UUID you’ve to provide:
- access token
RetrieveCustomerViaMerchantCustomerUuidParams
//...
let customerRetrieveMerchantIdRequest = RetrieveCustomerViaMerchantCustomerUuidParams(
accessToken: "accessToken",
merchantCustomerUuid: "merchantCustomerUuid"
)
self.monri.customers().getViaMerchantCustomerUuid(customerRetrieveMerchantIdRequest) { result in
switch (result) {
case .result(let customerResponse):
//...
case .error(let message):
//...
}
}
//...
In order to get all customers you’ve to provide:
- access token
//...
self.monri.customers().all("accessToken") { result in
switch (result) {
case .result(let customerAllResponse):
//...
case .error(let message):
//...
}
}
//...
In order to retrieve all customer payment methods you’ve to provide:
- access token
CustomerPaymentMethodParams
//...
let request = CustomerPaymentMethodParams(
customerUuid: "customer UUID",
limit: 20,
offset: 0,
accessToken: "accessToken"
)
self.monri.customers().paymentMethods(request) { result in
switch (result) {
case .result(let paymentMethodResponse):
//...
case .error(let message):
//....
}
}
//...
In order to associate customer's payment method for future payments, beside customer's data which is optional, you have to provide also:
- created customer UUID
- clientSecret - please see our section about Payment API Integration
let card = Card(number: "4111 1111 1111 1111", cvc: "123", expMonth: 10, expYear: 2031, tokenizePan: true).toPaymentMethodParams()
let customerParams = CustomerParams(
customerUuid: "created customer uuid",
email: "customer email",
fullName: "customer name",
address: "customer address",
city: "customer city",
zip: "customer zipCode",
phone: "customer phone",
country: "customer country"
)
let confirmPaymentParams = ConfirmPaymentParams(paymentId: "clientSecret",
paymentMethod: card,
transaction: TransactionParams.create()
.set(customerParams: customerParams)
.set("order_info", "iOS SDK payment session")
)
self.monri.confirmPayment(confirmPaymentParams) { result in
switch (result) {
case .result(let r):
//...
case .error(let e):
//...
case .declined(let d):
//...
case .pending:
//...
}
}
);