# launch

> After the entry code is identified, the merchant app uses the launch API to start the payment process for the entry code.

After the entry code is identified, the MPP app uses the **launch** API to start the payment process for the entry code.

## Method signature

```objectivec

NS_ASSUME_NONNULL_BEGIN
@interface MPPAlipayPlusClient (MPM)
- (void)launch:(MPPLaunchParams *)params
       completionHandler:(void(^)(MPPLaunchResult  * _Nullable result, NSError * _Nullable  error))completionHandler;
@end

NS_ASSUME_NONNULL_END
```

## Request parameters

| **Item** | **Type** | **Description** | **Required** |
| --- | --- | --- | --- |
| params | [MPPLaunchParams](ios_appendix#KsfnS) | The parameters required for the payment to be launched. | M |
| completionHandler | iOS Block | The callback to be invoked after the process to launch the decoding ends. See [completionHandler](#CrAVW) for details. | M |

#### completionHandler

| **Item** | **Type** | **Description** | **Required** |
| --- | --- | --- | --- |
| result | [MPPLaunchResult](ios_appendix#sxLMO) | The decoding result that is required if the request succeeds. | O |
| error | NSError | The error code that is required if the request fails. | O |

## Response parameters

N/A

## Sample

```objectivec
#import <MPPAlipayPlusClientMPM/MPPAlipayPlusClientMPM.h>

MPPLaunchParams *params = MPPLaunchParams.new;
params.url = @"xxxx";
params.userAgent = @"yyyy";
params.acDecodeConfig = @"zzzz";
[[MPPAlipayPlusClient shared] launch:params
                                         completionHandler:^(MPPLaunchResult  * _Nullable result, NSError *error) {
                                         if (error) {
                                         // Your Logic
                                         }
 }];
```