TOKEN
Request Details
| Parameter Name | Data Type | Mandatory | Description |
|---|---|---|---|
merchantOrderId | String | Yes | Unique order ID generated by merchant |
amount | long | Yes | Amount of order in Paisa |
contraints | List<InstrumentConstraint> | No | Different type of constraints that must be applied to the payment |
authMode | String | Yes | Default to 3DS |
encryptionKeyId | long | Yes | KeyId of key which merchant uses to encrypt card number & cvv. |
encryptedToken | String | Yes | Encrypted TOKEN number which merchant passes to process card transaction |
encryptedCvv | String | Yes | Encrypted CVV of the card with which payment is being initiated. |
cryptogram | String | Yes | The cryptogram fetched from the gateway where the card was tokenized. |
panSuffix | String | Yes | Last four digits of card number |
cardHolderName | String | Yes | Card Holder Name |
expiryMonth | String | Yes | Token expiry month |
expiryYear | String | Yes | Token expiry year |
merchantUserId | String | No | The unique identifier of the merchant user. It is used to associate the payment with a specific user. |
Sample Request
public async Task<IActionResult> CustomPay()
{
var merchantOrderID = $"Order_{DateTime.UtcNow:yyyyMMddHHmmssfff}";
var metaInfo = MetaInfo.Builder()
.SetUdf1("xyz")
.Build();
var payRequest = PgPaymentRequest.TokenPayRequestBuilder()
.SetMerchantOrderId(merchantOrderID)
.SetAmount(100)
.SetAuthMode("3DS")
.SetCardHolderName("")
.SetEncryptionKeyId(0)
.SetEncryptedToken("")
.SetEncryptedCvv("")
.SetCryptogram("")
.SetPanSuffix("")
.SetExpiryMonth("")
.SetExpiryYear("")
.SetRedirectUrl("")
.SetMetaInfo(metaInfo)
.SetExpireAfter(300)
.Build();
_logger.LogInformation("Custom Pay Request:\n{Request}", JsonSerializer.Serialize(payRequest, JsonOptions.IndentedWithRelaxedEscaping));
try
{
var response = await _customCheckoutClient.Pay(payRequest);
_logger.LogInformation("Custom Pay Response:\n{Response}", JsonSerializer.Serialize(response, JsonOptions.IndentedWithRelaxedEscaping));
return Ok(response);
}
catch (Exception ex)
{
_logger.LogError(ex, "Custom Pay API Failed");
return StatusCode(500, new { message = ex.Message });
}
}
Extract the redirectUrl from the response received.
Response Details
| Property | Type | Description |
|---|---|---|
orderId | String | Order Id created by PhonePe |
state | String | State of the order. Initially it will be PENDING. |
expireAt | Long | Order expire date in epoch |
redirectUrl | String | Redirect url to perform the transaction |