public String GenerateIframeUrl(String pageId, String tenantId, String apiSecurityKey, String appUrl)
{
String randomtoken = Guid.NewGuid().ToString(); // 32 char alphanumeric random token
randomtoken = randomtoken.Replace("-", "");
long timestamp = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000; // UTC(GMT) timetamp in milliseconds.
String query = "id=" + pageId + "&tenantId=" + tenantId + "×tamp=" + timestamp + "&token=" + randomtoken + apiSecurityKey;
String signature = EncodeTo64(CreateMD5Hash(query)); // Signature Genarated from hashing
signature = signature.Replace("+", "-");
signature = signature.Replace('/', '_');
String querystring = "id=" + pageId + "&tenantId=" + tenantId + "×tamp=" + timestamp + "&token=" + randomtoken;
String iframeurl = appUrl + "/apps/PublicHostedPaymentMethodPage.do?" + "method=requestPage&" + querystring + "&" + "signature=" + signature;
return iframeurl;
}