# (Conditional) Perform payment evaluation

In certain cases, merchants need to verify the available funds in the MPP account before initiating a payment. To do that, Alipay+ calls the **pay** API to send a payment evaluation request to the MPP.

### Processing logic

When handling the **pay** API request, take the following things into consideration:

-   Handle the request properly, especially the following parameters:

-   _paymentFactor_: When Alipay+ performs payment evaluation before initiating an auto debit payment, the values of the _paymentFactor.isAgreementPayment_ and _paymentFactor.isPaymentEvaluation_ parameters are both set to `true`.
-   _paymentMethodId_: The value of this parameter is set to the value of the access token that is provided by the MPP.

-   Ensure the following parameters are configured properly in the response:

-   _result.resultCode_: The following table shows how to set the value of the _result.resultCode_ parameter under different conditions.

| **Condition** | **Value of** **_result.resultCode_** | **Required or not** |
| --- | --- | --- |
| The access token is invalid. | `INVALID_TOKEN` | Required |
| The scope of the access token is incorrect. | `INVALID_TOKEN` | Required |
| The access token is expired. | `INVALID_TOKEN`/`EXPIRED_ACCESS_TOKEN` | Required |
| The user's account balance is not enough. | `USER_BALANCE_NOT_ENOUGH` | Required |
| The user does not exist. | `USER_NOT_EXIST` | Required |
| The user status is abnormal. | `USER_STATUS_ABNORMAL` | Required |
| The payment is declined because the user's KYC verification failed. | `USER_KYC_NOT_QUALIFIED` | Required |
| The payment is declined due to risk control. | `RISK_REJECT` | Recommended |
| The payment failed because the user has no available payment method. | `UNAVAILABLE_PAYMENT_METHOD` | Recommended |
| The payment is declined because the user's identity verification failed. | `USER_PAYMENT_VERIFICATION_FAILED` | Recommended |
| The payment is declined because the merchant verification failed. | `MERCHANT_NOT_REGISTERED` | Recommended |

### Sample

Alipay+ sends a payment evaluation request to the MPP.

```json
{
  "order":{
    "referenceOrderId":"OrderID_0100000101",
    "orderDescription":"SHOES",
    "orderAmount":{
       "value":"100",
       "currency":"JPY"
    },
       "merchant":{
          "referenceMerchantId":"M00000000001",
          "merchantMCC":"5411",
          "merchantName":"UGG",
          "merchantAddress":{
             "region":"JP",
             "city":"xxx"
          }
       }
 },
 "acquirerId": "1020000000000000001",
 "pspId":"1020000000000000001",
 "paymentRequestId":"2010000000000000000000000007771",
 "paymentAmount":{
    "value":"100",
    "currency":"JPY"
 },
  "paymentMethod":{
       "paymentMethodType": "CONNECT_WALLET",
       "paymentMethodId": "2810000000000000000000000000JWDQ"
  },
  "payToAmount":{
    "value":"1000",
    "currency":"KRW"
 },
 "paymentQuote":{
    "quoteId":"1234567",
    "quoteCurrencyPair":"JPY/KRW",
    "quotePrice":"10.0000"
  },
 "paymentFactor": {
    "isAgreementPayment":"true",
    "isPaymentEvaluation":"true"
 }
}
```

The MPP returns the result to Alipay+.

```json
{
 "result": {
    "resultCode":"SUCCESS",
    "resultStatus":"S",
    "resultMessage":"success"
 }
}
```

### More information

For more information about how to handle the **pay** API request and send the response, see [pay](../api_mpp/pay).