React Native SDK API Documentation

The MoneyHash SDK for React Native offers a comprehensive suite of APIs for managing payment intents, handling various payment methods, and processing transactions. This documentation details the available methods within the MoneyHashSDK class.

A. Methods That Do Not Require an Intent ID

1. setLogLevel

setLogLevel(level: LogLevel): void
  • Purpose: Sets the logging level for the SDK.
  • Parameters:
    • level: The desired logging level, of type LogLevel. Possible values are:
      • LogLevel.VERBOSE
      • LogLevel.DEBUG
      • LogLevel.INFO
      • LogLevel.WARN
      • LogLevel.ERROR
      • LogLevel.ASSERTION
  • Returns: This method does not return a value.
  • Example:
moneyHash.setLogLevel(LogLevel.DEBUG);
console.log('Log level set to DEBUG');

2. setLocale

setLocale(language: Language): void
  • Purpose: Sets the locale for the SDK.
  • Parameters:
    • language: The locale to be set, of type Language. Supported values are:
      • Language.ENGLISH for English
      • Language.ARABIC for Arabic
      • Language.FRENCH for French
  • Returns: This method does not return a value.
  • Example:
moneyHash.setLocale(Language.ENGLISH);
console.log('Locale set to English');

3. setPublicKey

setPublicKey(publicKey: string): void
  • Purpose: Sets the public API key for the SDK.
  • Parameters:
    • publicKey: The public API key to be set.
  • Requirements: You must have a valid public API key. For detailed instructions on how to obtain a public API key, please refer to the MoneyHash Authentication Documentation.
  • Returns: This method does not return a value.
  • Example:
moneyHash.setPublicKey('your_public_api_key');
console.log('Public key set successfully');

4. isDeviceCompatibleWithApplePay

isDeviceCompatibleWithApplePay(): Promise<boolean>
  • Purpose: Checks if the current device is compatible with Apple Pay.
  • Returns: A Promise that resolves to a boolean indicating compatibility.
  • Note: This method is only available on iOS devices. On other platforms, it will reject with an error.
  • Example:
moneyHash.isDeviceCompatibleWithApplePay()
  .then(isCompatible => {
    if (isCompatible) {
      console.log('Device is compatible with Apple Pay');
    } else {
      console.log('Device is not compatible with Apple Pay');
    }
  })
  .catch(error => console.error('Error checking Apple Pay compatibility:', error));

B. Methods That Require the Public Key to Be Set

5. getMethods

This method is overloaded and can be called in two different ways:

a) Using an Intent ID and Intent Type

getMethods(intentId: string, intentType: IntentType): Promise<IntentMethods>
  • Purpose: Retrieves available payment methods for a specific intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • intentType: The type of the intent, of type IntentType.
  • Returns: A Promise that resolves to an IntentMethods object containing available methods.
  • Example:
moneyHash.getMethods('intent_id_here', IntentType.Payment)
  .then(methods => console.log('Available methods:', methods))
  .catch(error => console.error('Error retrieving methods:', error));

b) Using Currency and Amount

moneyHashSDK.getMethods({
  currency: string,
  amount: number,
  customer: string,
  flowId: string,
}): Promise<IntentMethods>
  • Purpose: Retrieves available payment methods based on currency and amount.
  • Parameters:
    • currency: The currency code (e.g., 'USD').
    • amount: The amount as a number.
    • customer: The customer ID.
    • flowId: The flow ID.
  • Returns: A Promise that resolves to an IntentMethods object containing available methods.
  • Example:
moneyHash.setPublicKey('your_public_api_key');
moneyHash.getMethods({
  currency: 'USD',
  amount: 200,
  customer: '<customer-id>',
  flowId: '<flow-id>',
}).then(methods => console.log('Available methods:', methods))
  .catch(error => console.error('Error retrieving methods:', error));


Methods That Require Payment Intent ID

6. getIntentDetails ()

getIntentDetails(intentId: string, intentType: IntentType): Promise<IntentDetails>
  • Purpose: Retrieves the details of a specified intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • intentType: The type of the intent, of type IntentType.
  • Returns: A Promise that resolves to an IntentDetails object.
  • Example:
moneyHash.getIntentDetails('Z1ED7zZ', IntentType.Payment)
  .then(intentDetails => console.log('Intent details:', intentDetails))
  .catch(error => console.error('Error retrieving intent details:', error));

7. resetSelectedMethod

resetSelectedMethod(intentId: string, intentType: IntentType): Promise<IntentResult>
  • Purpose: Resets the selected payment or payout method for a specified intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • intentType: The type of the intent, of type IntentType.
  • Returns: A Promise that resolves to an IntentResult object.
  • Example:
moneyHash.resetSelectedMethod('Z1ED7zZ', IntentType.Payment)
  .then(result => console.log('Method reset successfully:', result))
  .catch(error => console.error('Error resetting method:', error));

8. renderForm

renderForm(intentId: string, intentType: IntentType, embedStyle?: EmbedStyle): Promise<IntentDetails>
  • Purpose: Renders the MoneyHash embed form within the React Native application.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • intentType: The type of the intent, of type IntentType.
    • embedStyle: Optional. An EmbedStyle object to style the embedded form.
  • Returns: A Promise that resolves to an IntentDetails object.
  • Example:
const embedStyle = {
  // Define your embed style here
};

moneyHash.renderForm('current_intent_id', IntentType.Payment, embedStyle)
  .then(intentDetails => console.log('Form rendered with details:', intentDetails))
  .catch(error => console.error('Failed to render form:', error));

9. proceedWithMethod

proceedWithMethod(
  intentId: string,
  intentType: IntentType,
  selectedMethodId: string,
  methodType: MethodType,
  methodMetaData?: MethodMetaData
): Promise<IntentResult>
  • Purpose: Proceeds with the selected payment or payout method for a given intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • intentType: The type of the intent, of type IntentType.
    • selectedMethodId: The ID of the selected method.
    • methodType: The type of the method, of type MethodType.
    • methodMetaData: Optional. A MethodMetaData object containing additional data.
  • Returns: A Promise that resolves to an IntentResult object encapsulating the result of the method selection.
  • Example:
const methodMetaData = new MethodMetaData();
methodMetaData.cvv = '123';

moneyHash.proceedWithMethod(
  'Z1ED7zZ',
  IntentType.Payment,
  'method_123',
  MethodType.PaymentMethod,
  methodMetaData
)
  .then(result => console.log('Proceeded with method:', result))
  .catch(error => console.error('Error proceeding with method:', error));

10. submitForm

submitForm(
  intentId: string,
  selectedMethodId: string,
  billingData?: Record<string, string>,
  shippingData?: Record<string, string>,
  vaultData?: VaultData
): Promise<IntentDetails>
  • Purpose: Submits the form data for a payment or payout intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • selectedMethodId: The ID of the selected method.
    • billingData: A record of billing data fields and their values (optional).
    • shippingData: A record of shipping data fields and their values (optional).
    • vaultData: Optional. A VaultData object containing card data.
  • Returns: A Promise that resolves to an IntentDetails object.
  • Example:
const billingData = {
  // Populate billing data fields
};

const shippingData = {
  // Populate shipping data fields
};

const vaultData = // use the card form collect to get the vault data (or use pay directly on the card form)

moneyHash.submitForm('Z1ED7zZ', 'method_123', billingData, shippingData, vaultData)
  .then(intentDetails => console.log('Form submitted successfully:', intentDetails))
  .catch(error => console.error('Error submitting form:', error));

11. submitCardCVV

submitCardCVV(intentId: string, cvv: string): Promise<IntentDetails>
  • Purpose: Submits the CVV for a saved card associated with a specified payment intent.
  • Parameters:
    • intentId: The unique identifier of the payment intent.
    • cvv: The CVV of the card.
  • Returns: A Promise that resolves to an IntentDetails object.
  • Example:
moneyHash.submitCardCVV('Z1ED7zZ', '123')
  .then(intentDetails => console.log('CVV submitted successfully:', intentDetails))
  .catch(error => console.error('Error submitting CVV:', error));

12. submitPaymentReceipt

submitPaymentReceipt(intentId: string, data: string): Promise<IntentDetails>
  • Purpose: Submits a payment receipt for a specified intent.
  • Parameters:
    • intentId: The unique identifier of the payment intent.
    • data: The receipt data to be submitted.
  • Returns: A Promise that resolves to an IntentDetails object.
  • Example:
moneyHash.submitPaymentReceipt('Z1ED7zZ', 'receipt_data_string')
  .then(intentDetails => console.log('Receipt submitted successfully:', intentDetails))
  .catch(error => console.error('Error submitting receipt:', error));

13. updateFees

updateFees(intentId: string, fees: FeeItem[]): Promise<FeesData>
  • Purpose: Updates the fees associated with a specified intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • fees: An array of FeeItem objects representing the fees to be updated.
  • Returns: A Promise that resolves to a FeesData object.
  • Example:
const feeItem1 = new FeeItem(new Map([[Language.ENGLISH, 'Service Fee']]), '5.0');
const feeItem2 = new FeeItem(new Map([[Language.ENGLISH, 'Delivery Fee']]), '3.0');

moneyHash.updateFees('Z1ED7zZ', [feeItem1, feeItem2])
  .then(feesData => console.log('Fees updated successfully:', feesData))
  .catch(error => console.error('Error updating fees:', error));

14. updateDiscount

updateDiscount(intentId: string, discount: DiscountItem): Promise<DiscountData>
  • Purpose: Updates the discount associated with a specified intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • discount: A DiscountItem object representing the discount to be updated.
  • Returns: A Promise that resolves to a DiscountData object.
  • Example:
const discountTitle = new Map<Language, string>([
  [Language.ENGLISH, 'Promo Code'],
]);

const discountItem = new DiscountItem(discountTitle, DiscountType.AMOUNT, '10.0');

moneyHash.updateDiscount('Z1ED7zZ', discountItem)
  .then(discountData => console.log('Discount updated successfully:', discountData))
  .catch(error => console.error('Error updating discount:', error));

15. proceedWithApplePay

proceedWithApplePay(
  intentId: string,
  depositAmount: number,
  merchantIdentifier: string,
  currencyCode: string,
  countryCode: string
): Promise<IntentDetails>
  • Purpose: Initiates an Apple Pay transaction for a specified intent.
  • Parameters:
    • intentId: The unique identifier of the intent.
    • depositAmount: The amount to be charged.
    • merchantIdentifier: The merchant identifier for Apple Pay.
    • currencyCode: The currency code (e.g., 'USD').
    • countryCode: The country code (e.g., 'US').
  • Returns: A Promise that resolves to an IntentDetails object.
  • Note: This method is only available on iOS devices. On other platforms, it will reject with an error.
  • Example:
moneyHash.proceedWithApplePay(
  'Z1ED7zZ',
  50.0,
  'merchant.com.example',
  'USD',
  'US'
)
  .then(intentDetails => console.log('Apple Pay transaction successful:', intentDetails))
  .catch(error => console.error('Error with Apple Pay transaction:', error));

C. Methods That Require Card Intent ID

8. deleteSavedCard

deleteSavedCard(cardTokenId: string, intentSecret: string): Promise<void>
  • Purpose: Deletes a saved card using its token ID and associated intent secret.
  • Parameters:
    • cardTokenId: The token ID of the card to be deleted.
    • intentSecret: The secret associated with the intent.
  • Example:
moneyHash.deleteSavedCard('card_token_123', 'intent_secret_456')
  .then(() => console.log('Card deleted successfully:'))
  .catch(error => console.error('Error deleting card:', error));