{"id":28577464,"url":"https://github.com/mastercard/mcs-commerce-web","last_synced_at":"2025-12-12T06:17:38.291Z","repository":{"id":56920261,"uuid":"190087139","full_name":"Mastercard/mcs-commerce-web","owner":"Mastercard","description":"Objective-C iOS wrapper for Mastercard's web SRC Initiator","archived":false,"fork":false,"pushed_at":"2020-11-17T19:21:47.000Z","size":32510,"stargazers_count":7,"open_issues_count":2,"forks_count":4,"subscribers_count":7,"default_branch":"develop","last_synced_at":"2025-05-16T11:20:22.485Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mastercard.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-03T21:49:17.000Z","updated_at":"2025-01-16T06:10:19.000Z","dependencies_parsed_at":"2022-08-21T04:20:24.361Z","dependency_job_id":null,"html_url":"https://github.com/Mastercard/mcs-commerce-web","commit_stats":null,"previous_names":["mastercard/mcscommerceweb"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Fmcs-commerce-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Fmcs-commerce-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Fmcs-commerce-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Fmcs-commerce-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mastercard","download_url":"https://codeload.github.com/Mastercard/mcs-commerce-web/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Fmcs-commerce-web/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259177332,"owners_count":22817349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-11T00:37:50.930Z","updated_at":"2025-12-12T06:17:38.259Z","avatar_url":"https://github.com/Mastercard.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCSCommerceWeb\n\n- [Overview](#ios-overview)\n- [Configuration on Merchant Portal](#configuration-on-merchant-portal)\n- [Installation](#ios-installation)\n- [Configuration](#ios-configuration)\n- [Checkout Button](#ios-checkout-button)\n    - [Checkout Request](#checkout-request)\n- [Transaction Result](#transaction-result)\n- [Migrating from MCCMerchant](#ios-masterpass)\n    - [Interfaces and classes](#interfaces-and-classes)\n\t- [Add Payment Method](#add-payment-method)\n\t- [Payment Method Checkout](#payment-method-checkout)\n\t\n### \u003ca name=\"ios-overview\"\u003eOverview\u003c/a\u003e\n\n`MCSCommerceWeb` is a lightweight framework used to integrate Merchants with [**EMV Secure Remote Commerce**](https://www.emvco.com/emv-technologies/src/) and Mastercard's web-based SRC-Initiator with backward compatibility for existing Masterpass integrations. `MCSCommerceWeb` facilitates the initiation of the checkout experience and returns the transaction result to the Merchant after completion.\n\n### \u003ca name=\"Configuration on Merchant Portal\"\u003eConfiguration on Merchant Portal\u003c/a\u003e\nIt is very important to configure these values properly on the portal. If these values are not\nconfigured in proper format, merchant application will not be able to do successful checkout\n\n`callbackUrl` must be configured as `URL Schemes`. Below is an example format of `callbackUrl` for a sample merchant application named *FancyShop* \n* `Example format of callbackUrl`: fancyshop://\n* `Channel`: IOS\n\n### \u003ca name=\"ios-installation\"\u003eInstallation\u003c/a\u003e\n\n#### CocoaPods\n\nTo include `MCSCommerceWeb` in your Xcode project, include the following in your project's `Podfile`:\n\n``` \npod 'MCSCommerceWeb'\n```\n\n### \u003ca name=\"ios-configuration\"\u003eConfiguration\u003c/a\u003e\n\nWhen instantiating `MCSCommerceWeb`, an `MCSConfiguration` object needs to be provided.\n\n`MCCConfiguration` has 4 new required properties and one optional property\n\n* `locale`: This is the locale in which the transaction is processing\n* `checkoutId`: The unique identifier assigned to the merchant during onboarding\n* `checkoutUrl`: The URL used to load the checkout experience. *Note: when testing in the Sandbox environment, use `https://sandbox.masterpass.com/routing/v2/mobileapi/web-checkout `. For Production, use  `https://masterpass.com/routing/v2/mobileapi/web-checkout `.*\n* `callbackScheme`: This must match the scheme component of the `callbackUrl` configured for this merchant. This value is required to redirect back from the `WKWebView`\n* `allowedCardTypes` : The payment networks supported by this merchant (e.g. master, visa, amex).\n* `presentingViewController` : optional ViewController can be passed and presented instead of the vanilla keyWindow RootViewController \n\n\n```swift\n// Swift\nlet locale = Locale(identifier: \"en_us\")\nlet checkoutId = \"1d45705100044e14b52e71730e71cc5a\"\nlet checkoutUrl = \"https://masterpass.com/routing/v2/mobileapi/web-checkout\";\nlet callbackScheme = \"fancyshop\";\nlet allowedCardTypes = [.master, .visa , .amex]\n    \nlet commerceConfig = MCSConfiguration(\n    locale: locale,\n    checkoutId: checkoutId,\n    checkoutUrl: checkoutUrl,\n    callbackScheme: callbackScheme,\n    allowedCardTypes: allowedCardTypes,\n            presenting: viewController)\n)\n    \nlet commerceWeb = MCSCommerceWeb.sharedManager()\ncommerceWeb.setConfiguration(withConfiguration: commerceConfig)\n```\n\n```objective-c\n// Objective-C\nNSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@\"en_us\"];\nNSString *checkoutId = @\"1d45705100044e14b52e71730e71cc5a\";\nNSString *checkoutUrl = @\"https://masterpass.com/routing/v2/mobileapi/web-checkout\";\nNSString *callbackScheme = @\"fancyshop\";\nNSSet *allowedCardTypes = [NSSet setWithObject:MCSCardTypeMaster, MCSCardTypeVisa, MCSCardTypeAmex];\nMCSConfiguration *config = [[MCSConfiguration alloc] initWithLocale:locale\n                                                         checkoutId:checkoutId\n                                                        checkoutUrl:checkoutUrl\n                                                     callbackScheme:callbackScheme\n                                                   allowedCardTypes:allowedCardTypes\n                                                   presentingViewController:presentedViewController];\n\nMCSCommerceWeb *commerceWeb = [MCSCommerceWeb sharedManager];\n[commerceWeb initWithConfiguration:config];\n```\n\n### \u003ca name=\"ios-checkout-button\"\u003eCheckout Button\u003c/a\u003e\n\nTransactions are initiated by adding `MCSCheckoutButton` to the view.\n\n```swift\n// Swift\n// SomeViewController.swift\nlet button = commerceWeb.getCheckoutButton(withDelegate:checkoutDelegate)\nbutton.addToSuperview(superview: buttonContainer)\n```\n\n```objective-c\n// Objective-C\n// SomeViewController.m\nMCSCheckoutButton *button = [commerceWeb checkoutButtonWithDelegate:checkoutDelegate];\n[button addToSuperview:buttonContainer];\n```\n### \u003ca name=\"ios-srcButtonImage\"\u003eSRC Button Image\u003c/a\u003e\n\nFor merchants who would like to provide an alternate SRC checkout  optional methods with additional `withImage:` parameter have been added\n* `(MCSCheckoutButton *)checkoutButtonWithDelegate:(id\u003cMCSCheckoutDelegate\u003e)delegate withImage:(UIImage *)image` added to `MCSCheckoutButtonManager.h` class, \n* `(MCCMasterpassButton * _Nullable)getMasterPassButton:(id\u003cMCCMerchantDelegate\u003e) merchantDelegate withImage:(UIImage *)image` added to `MCCMerchant.h` class\n* `(MCSCheckoutButton *_Nonnull)checkoutButtonWithDelegate:(id\u003cMCSCheckoutDelegate\u003e_Nonnull)delegate withImage:(UIImage *_Nonnull)image NS_SWIFT_NAME(getCheckoutButton(withDelegate:withImage:))` added to `MCSCommerceWeb.h` class\n\n```swift\n// Swift\n// Swift\n// SomeViewController.swift\nlet button = commerceWeb.getCheckoutButton(withDelegate:checkoutDelegate, withImage:image)\nbutton.addToSuperview(superview: buttonContainer)\n```\n\n```objective-c\n//Objective-C\n// SomeViewController.m\nMCSCheckoutButton *button = [commerceWeb checkoutButtonWithDelegate:checkoutDelegate withImage:image];\n[button addToSuperview:buttonContainer];\n```\n\n\n#### `withDelegate:`\n\nThe `MCSCheckoutDelegate` provided has the following methods:\n\n```swift\n// MCSCheckoutDelegate\n// Swift\n// Fetches the checkout request object required to initiate this transaction.\nfunc getCheckoutRequest(withHandler: @escaping (MCSCheckoutRequest) -\u003e Void)\n\n// Notifies the delegate when the transaction has completed\nfunc checkoutCompleted(withRequest request: MCSCheckoutRequest, status: MCSCheckoutStatus, transactionId: String?)\n```\n\n```c\n// MCSCheckoutDelegate\n// Objective-C\n// Fetches the checkout request object required to initiate this transaction.\n- (void)checkoutRequestForTransaction:(nonnull void(^)(MCSCheckoutRequest * _Nonnull checkoutRequest))handler;\n\n//Notifies the delegate when the transaction has completed\n- (void)checkoutRequest:(MCSCheckoutRequest *)request didCompleteWithStatus:(MCSCheckoutStatus)status forTransaction:(NSString * _Nullable)transactionId;\n```\n\nWhen the user touches up on `MCSCheckoutButton`, `MCSCheckoutRequest` for this transaction is retrieved.\n\n#### \u003ca name=\"checkout-request\"\u003eCheckout Request\u003c/a\u003e\n\n```swift\n// Swift\nfunc getCheckoutRequest(withHandler: @escaping (MCSCheckoutRequest) -\u003e Void)\n```\n\n```c\n// Objective-C\n- (void)checkoutRequestForTransaction:(nonnull void(^)(MCSCheckoutRequest * _Nonnull checkoutRequest))handler;\n```\n\n`checkoutRequest`: Data object with transaction-specific parameters needed to complete checkout. This request can also override existing merchant configurations.\n\nHere are the required and optional fields:\n\n| Parameter                | Type           | Required   | Description                                                                                                                  \n|--------------------------|------------|:----------:|---------------------------------------------------------------------------------------------------------|\n| allowedCardTypes         | Array      | Yes        | Set of all card types accepted for this transaction\n| amount                   | Decimal    | Yes        | The transaction total to be authorized\n| cartId                   | String     | Yes        | Merchant's unique identifier for this transaction\n| callbackUrl              | String     | No         | URL used to communicate back to the merchant application\n| cryptoOptions            | Array      | No         | Cryptogram formats accepted by this merchant                           \n| cvc2Support              | Boolean    | No         | Enable or disable support for CVC2 card security                       \n| shippingLocationProfile  | String     | No         | Shipping locations available for this merchant\n| suppress3Ds              | Boolean    | No         | Enable or disable 3DS verification\n| suppressShippingAddress  | Boolean    | No         | Enable or disable shipping options. Typically for digital goods or services, this will be set to `true`\n| unpredictableNumber      | String     | No         | For tokenized transactions, `unpredictableNumber` is required for cryptogram generation\n| validityPeriodMinutes    | Integer    | No         | The expiration time of a generated cryptogram, in minutes\n\nThe implementation of the checkout with these parameters:\n\n```swift\n// Swift\nfunc getCheckoutRequest(withHandler: @escaping (MCSCheckoutRequest) -\u003e Void) {\n    let checkoutRequest = MCSCheckoutRequest()\n    checkoutRequest.amount = NSDecimalNumber(string: String(shoppingCart.total))\n    checkoutRequest.currency = sdkConfig.currency\n    checkoutRequest.cartId = shoppingCart.cartId\n    checkoutRequest.allowedCardTypes = [.master,.visa]\n    checkoutRequest.suppressShippingAddress = sdkConfig.suppressShipping\n    checkoutRequest.callbackUrl = \"fancyshop://\"\n    checkoutRequest.unpredictableNumber = \"12345678\"\n        \n    let cryptoOptionVisa = MCSCryptoOptions()\n    cryptoOptionVisa.cardType = \"visa\"\n    cryptoOptionVisa.format = [\"TVV\"]\n    \n    let cryptoOptionMaster = MCSCryptoOptions()\n    cryptoOptionMaster.cardType = \"master\"\n    cryptoOptionMaster.format = [\"ICC,UCAF\"]\n    \n    checkoutRequest.cryptoOptions = [cryptoOptionMaster,cryptoOptionVisa]\n        \n    withHandler(checkoutRequest)\n}\n```\n\n```objective-c\n// Objective-C\n- (void)checkoutRequestForTransaction:(nonnull void(^)(MCSCheckoutRequest * _Nonnull checkoutRequest))handler {\n    MCSCheckoutRequest *checkoutRequest = [[MCSCheckoutRequest alloc] init];\n    checkoutRequest.amount = [[NSDecimalNumber alloc] initWithString:shoppingCart.total];\n    checkoutRequest.currency = sdkConfig.currency\n    checkoutRequest.cartId = shoppingCart.cartId\n    checkoutRequest.allowedCardTypes = [NSSet setWithObjects:MCSCardTypeMaster, MCSCardTypeVisa, nil];\n    checkoutRequest.suppressShippingAddress = sdkConfig.suppressShipping;\n    checkoutRequest.callbackUrl = @\"fancyshop://\";\n    checkoutRequest.unpredictableNumber = @\"12345678\";\n    \n    MCSCryptoOptions *cryptoOptionMaster = [[MCSCryptoOptions alloc] init];\n    cryptoOptionMaster.cardType = MCSCardTypeMaster;\n    cryptoOptionMaster.format = @[MCSCryptoFormatICC, MCSCryptoFormatUCAF];\n    \n    checkoutRequest.cryptoOptions = @[cryptoOptionMaster];\n    \n    handler(checkoutRequest);\n}\n```\n\nYou can also call checkout directly with `checkout` and not use button method, make sure you set your delegate before\n\n```swift\n// Swift\nfunc merchantCheckout() -\u003e Void) {\n    let checkoutRequest = MCSCheckoutRequest()\n    checkoutRequest.amount = NSDecimalNumber(string: String(shoppingCart.total))\n    checkoutRequest.currency = sdkConfig.currency\n    checkoutRequest.cartId = shoppingCart.cartId\n    checkoutRequest.allowedCardTypes = [.master,.visa]\n    checkoutRequest.suppressShippingAddress = sdkConfig.suppressShipping\n    checkoutRequest.callbackUrl = \"fancyshop://\"\n    checkoutRequest.unpredictableNumber = \"12345678\"\n        \n    let cryptoOptionVisa = MCSCryptoOptions()\n    cryptoOptionVisa.cardType = \"visa\"\n    cryptoOptionVisa.format = [\"TVV\"]\n    \n    let cryptoOptionMaster = MCSCryptoOptions()\n    cryptoOptionMaster.cardType = \"master\"\n    cryptoOptionMaster.format = [\"ICC,UCAF\"]\n    \n    checkoutRequest.cryptoOptions = [cryptoOptionMaster,cryptoOptionVisa]\n        \n    //Call checkout directly\n    let commerceWeb = MCSCommerceWeb.sharedManager()\n    commerceWeb.setDelegate(self);\n    commerceWeb.checkoutReq(checkoutRequest);\n}\n```\n\n```objective-c\n// Objective-C\n- (void)merchantCheckout() {\n    MCSCheckoutRequest *checkoutRequest = [[MCSCheckoutRequest alloc] init];\n    checkoutRequest.amount = [[NSDecimalNumber alloc] initWithString:shoppingCart.total];\n    checkoutRequest.currency = sdkConfig.currency\n    checkoutRequest.cartId = shoppingCart.cartId\n    checkoutRequest.allowedCardTypes = [NSSet setWithObjects:MCSCardTypeMaster, MCSCardTypeVisa, nil];\n    checkoutRequest.suppressShippingAddress = sdkConfig.suppressShipping;\n    checkoutRequest.callbackUrl = @\"fancyshop://\";\n    checkoutRequest.unpredictableNumber = @\"12345678\";\n    \n    MCSCryptoOptions *cryptoOptionMaster = [[MCSCryptoOptions alloc] init];\n    cryptoOptionMaster.cardType = MCSCardTypeMaster;\n    cryptoOptionMaster.format = @[MCSCryptoFormatICC, MCSCryptoFormatUCAF];\n    \n    checkoutRequest.cryptoOptions = @[cryptoOptionMaster];\n    //Call checkout directly\n    MCSCommerceWeb *commerceWeb = [MCSCommerceWeb sharedManager];\n    [commerceWeb setDelegate:self];\n    [commerceWeb checkoutWithRequest:checkoutRequest];\n}\n```\n\n### \u003ca name=\"transaction-result\"\u003eTransaction Result\u003c/a\u003e\n\n```swift\n// Swift\nfunc checkoutCompleted(withRequest request: MCSCheckoutRequest, status: MCSCheckoutStatus, transactionId: String?)\n```\n\n```c\n// Objective-C\n- (void)checkoutRequest:(MCSCheckoutRequest *)request didCompleteWithStatus:(MCSCheckoutStatus)status forTransaction:(NSString * _Nullable)transactionId;\n```\n\nThe result of a transaction is returned to the application via the `MCSCheckoutDelegate` provided when retrieving the `MCSCheckoutButton`.\n\n```swift\n// Swift\nfunc checkoutCompleted(withRequest request: MCSCheckoutRequest!, status: MCSCheckoutStatus, transactionId: String?) {\n    if (transactionId != nil) {\n        //comlpete transaction\n    }\n}\n```\n\n```objective-c\n// Objective-C\n- (void)checkoutRequest:(MCSCheckoutRequest *)request didCompleteWithStatus:(MCSCheckoutStatus)status forTransaction:(NSString * _Nullable)transactionId {\n    if (transactionId != nil) {\n        //complete transaction\n    }\n}\n```\n\n\n### \u003ca name='ios-masterpass'\u003eMigrating from MCCMerchant\u003c/a\u003e\n\n***Note: `MCCMerchant` APIs are deprecated in `MCSCommerceWeb` and will be removed in subsequent versions. It is encouraged to migrate to the APIs above.***\n\n`MCSCommerceWeb` provides API compatibility for `MCCMerchant`. Existing applications using `MCCmerchant` can easily migrate to `MCSCommerceWeb` with minimal changes. Consider the following when migrating from `MCCMerchant`.\n\n#### \u003ca name=\"interfaces-and-classes\"\u003eInterfaces and Classes\u003c/a\u003e\n\nThe `MCCMerchant` interface is included in this SDK, however `import` statements must update to use the `MCSCommerceWeb` module.\n\n```swift\n// Swift\n// previous import statement\nimport MCCMerchant\n\n// current import statement\nimport MCSCommerceWeb\n```\n\n```objective-c\n// Objective-C\n// previous\n#import \u003cMCCMerchant/MCCMerchant.h\u003e\n\n// current\n#import \u003cMCSCommerceWeb/MCSCommerceWeb.h\u003e\n```\n\n##### MCCConfiguration\n\n`MCCConfiguration` has 4 new required properties and one optional property\n\n* `checkoutId` : The merchant identifier generated when created a merchant developer profile. Note: this is moved from `MCCCheckoutRequest`\n* `allowedCardTypes` : The payment networks supported by this merchant (e.g. master, visa, amex). Note: this is moved from `MCCCheckoutRequest`\n* `callbackScheme` : The scheme used to return data to this application. This is the value configured in `URL Schemes` in the `info.plist`\n* `checkoutUrl` : The URL used to load the checkout experience. Note: if you are migrating to `MCSCommerceWeb`, but still plan to checkout with `Masterpass`, you will still need to provide this URL.\n*`presentingViewController` : optional ViewController can be passed and presented instead of the vanilla keyWindow RootViewController \n\n| Environment           | URL                                                                  |\n|-----------------------|-------------------------------------------------------------------|\n| Masterpass Sandbox    | https://sandbox.masterpass.com/routing/v2/mobileapi/web-checkout  |\n| Masterpass Production | https://masterpass.com/routing/v2/mobileapi/web-checkout          |\n\n\n##### Handle checkout response\n\n```objective-c\n// MCCMerchant.h\n+ (BOOL)handleMasterpassResponse:(NSString *_Nonnull)url delegate:(id\u003cMCCMerchantDelegate\u003e _Nonnull)merchantDelegate;\n```\n\n`handleMasterpassResponse:delegate` no longer has any effect. `MCSCommerceWeb` implements `WKWebView` instead of `SFSafariViewController` and the checkout response is handled using `MCCDelegate` directly. The `MCCDelegate` provided in any checkout calls will be the delegate that receives the checkout response.\n\n\n##### \u003ca name=\"add-payment-method\"\u003eAdd Payment Method\u003c/a\u003e\n\n```objective-c\n// MCSCommerceWeb.h\n- (MCCPaymentMethod *_Nonnull)addPaymentMethod;\n```\n\n`addMasterpassPaymentMethod:withCompletionBlock:` should no longer be called. MCSCommerceWeb now provides the function `addPaymentMethod:` to support payment method. It always returns the same payment method with the following properties:\n\n\n* `paymentMethodName` : `Click to Pay`\n* `paymentMethodLogo` : The SRC logo as `UIImage`\n\nThis payment method, or any other, can be used with `paymentMethodCheckout:` to initiate a standard checkout flow (see next).\n\n##### \u003ca name=\"payment-method-checkout\"\u003ePayment Method Checkout\u003c/a\u003e\n\n```objective-c\n// MCSCommerceWeb.h\n- (void)paymentMethodCheckout:(id\u003cMCSCheckoutDelegate\u003e _Nonnull)delegate request:(MCSCheckoutRequest *_Nonnull)request;\n```\n\n`paymentMethodCheckout:` should no longer be called. `MCSCommerceWeb` provides `paymentMethodCheckout:delegate:request:` which will initiate the standard SRC checkout flow with the `MCSCheckoutDelegate` handling the response.  \n\n| Old Function          | New Function         \n|-----------------------|--------------------|\n| `+ (void)addMasterpassPaymentMethod:(id\u003cMCCMerchantDelegate\u003e _Nonnull)merchantDelegate withCompletionBlock:(void(^ __nonnull) (MCCPaymentMethod*  _Nullable mccPayment, NSError * _Nullable error))completionHandler;`      | `- (MCCPaymentMethod *_Nonnull)addPaymentMethod;` |\n| `+ (void)paymentMethodCheckout:(id\u003cMCCMerchantDelegate\u003e _Nonnull) merchantDelegate;` | `- (void)paymentMethodCheckout:(id\u003cMCSCheckoutDelegate\u003e _Nonnull)delegate request:(MCSCheckoutRequest *_Nonnull)request`|  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercard%2Fmcs-commerce-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmastercard%2Fmcs-commerce-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercard%2Fmcs-commerce-web/lists"}