NetBanking


Parameter NameData TypeMandatoryDescription
merchantOrderIdStringYesUnique order ID generated by merchant
amountlongYesAmount of order in Paisa
contraintsList<InstrumentConstraint>YesDifferent type of constraints that must be applied to the payment
bankIdStringYesBank id from where payment will be completed.
Sample Request
public async Task<IActionResult> CustomPay()
{
    var merchantOrderID = $"Order_{DateTime.UtcNow:yyyyMMddHHmmssfff}";

    var metaInfo = MetaInfo.Builder()
        .SetUdf1("free-text-value-1")
        .SetUdf2("free-text-value-2")
        .SetUdf3("free-text-value-3")
        .SetUdf4("free-text-value-4")
        .SetUdf5("free-text-value-5")
        .SetUdf6("free-text-value-6")
        .SetUdf7("free-text-value-7")
        .SetUdf8("free-text-value-8")
        .SetUdf9("free-text-value-9")
        .SetUdf10("free-text-value-10")
        .SetUdf11("ref_11")
        .SetUdf12("tag-12")
        .SetUdf13("user@13")
        .SetUdf14("code.14")
        .SetUdf15("val+15")
        .Build();

    var payRequest = PgPaymentRequest.NetBankingPayRequestBuilder()
        .SetMerchantOrderId(merchantOrderID)
        .SetMerchantUserId("123")
        .SetAmount(100)
        .SetBankId("HDFC")
        .SetRedirectUrl("")
        .SetMetaInfo(metaInfo)
        .SetExpireAfter(300)
        .Build();

    try
    {
        var response = await _customCheckoutClient.Pay(payRequest);
        return Ok(response);  // Extract response.RedirectUrl
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Custom Pay API Failed");
        return StatusCode(500, new { message = ex.Message });
    }
}

Extract the redirectUrl from the response received

PropertyTypeDescription
orderIdStringOrder Id created by PhonePe
stateStringState of the order. Initially it will be PENDING.
expireAtLongOrder expire date in epoch
redirectUrlStringRedirect url to perform the Net Banking for mentioned bankId
Is this article helpful?