Test ortamında OTPMOCK_URL=https://api.otpmock.com tanımlayın, Verimor istemcisini bu adrese yönlendirin ve Verimor kimlik bilgisi olarak otpmock API anahtarınızı kullanın. Uygulama kodunuz değişmez; canlı ortam Verimor ile göndermeye devam eder.
Kurulum
Verimor için resmi SDK olmadığından uygulamalar HTTP API'yi doğrudan çağırır; bu yüzden yalnızca adres değişir. Yanıtlar düz metindir: başarıda kampanya numarası, hatada INSUFFICIENT_CREDITS, MISSING_MESSAGE gibi kodlar ve 400 durumu. otpmock da aynı biçimde döner, hata yönetim kodunuz da böylece test ortamında sınanır.
const VERIMOR_URL = process.env.OTPMOCK_URL ?? "https://sms.verimor.com.tr";
const res = await fetch(`${VERIMOR_URL}/v2/send.json`, {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
username: process.env.VERIMOR_USERNAME,
password: process.env.VERIMOR_PASSWORD, // testte: otpmock API anahtarı
source_addr: "BASLIGIM",
messages: [{ msg: `Doğrulama kodunuz: ${code}`, dest: "905321234567" }],
}),
});
const campaignId = await res.text();import os
import requests
VERIMOR_URL = os.environ.get("OTPMOCK_URL", "https://sms.verimor.com.tr")
res = requests.post(f"{VERIMOR_URL}/v2/send.json", json={
"username": os.environ["VERIMOR_USERNAME"],
"password": os.environ["VERIMOR_PASSWORD"], # testte: otpmock API anahtarı
"source_addr": "BASLIGIM",
"messages": [{"msg": f"Doğrulama kodunuz: {code}", "dest": "905321234567"}],
})
campaign_id = res.textString base = System.getenv().getOrDefault("OTPMOCK_URL", "https://sms.verimor.com.tr");
// json: {"username":"...","password":"<VERIMOR_PASSWORD, testte: otpmock API anahtarı>","source_addr":"BASLIGIM",
// "messages":[{"msg":"...","dest":"905321234567"}]}
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/v2/send.json"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
// Response body is the campaign ID as plain text.var verimorUrl = Environment.GetEnvironmentVariable("OTPMOCK_URL") ?? "https://sms.verimor.com.tr";
var http = new HttpClient { BaseAddress = new Uri(verimorUrl) };
var res = await http.PostAsJsonAsync("/v2/send.json", new
{
username = Environment.GetEnvironmentVariable("VERIMOR_USERNAME"),
password = Environment.GetEnvironmentVariable("VERIMOR_PASSWORD"), // testte: otpmock API anahtarı
source_addr = "BASLIGIM",
messages = new[] { new { msg = $"Doğrulama kodunuz: {code}", dest = "905321234567" } },
});
var campaignId = await res.Content.ReadAsStringAsync();use GuzzleHttp\Client;
$verimorUrl = getenv('OTPMOCK_URL') ?: 'https://sms.verimor.com.tr';
$campaignId = (string) (new Client())->post("$verimorUrl/v2/send.json", [
'json' => [
'username' => getenv('VERIMOR_USERNAME'),
'password' => getenv('VERIMOR_PASSWORD'), // testte: otpmock API anahtarı
'source_addr' => 'BASLIGIM',
'messages' => [['msg' => "Doğrulama kodunuz: $code", 'dest' => '905321234567']],
],
])->getBody();require "net/http"
require "json"
# Verimor has no official Ruby SDK; apps call the REST API, so only the host changes.
VERIMOR_URL = ENV.fetch("OTPMOCK_URL", "https://sms.verimor.com.tr")
res = Net::HTTP.post(
URI("#{VERIMOR_URL}/v2/send.json"),
{
username: ENV["VERIMOR_USERNAME"],
password: ENV["VERIMOR_PASSWORD"], # testte: otpmock API anahtarı
source_addr: "BASLIGIM",
messages: [{ msg: "Doğrulama kodunuz: #{code}", dest: "905321234567" }],
}.to_json,
"Content-Type" => "application/json"
)
campaign_id = res.body// Verimor has no official Go SDK; call its HTTP API with net/http, only the host changes.
base := os.Getenv("OTPMOCK_URL")
if base == "" {
base = "https://sms.verimor.com.tr"
}
body, _ := json.Marshal(map[string]any{
"username": os.Getenv("VERIMOR_USERNAME"),
"password": os.Getenv("VERIMOR_PASSWORD"), // testte: otpmock API anahtarı
"source_addr": "BASLIGIM",
"messages": []map[string]string{{"msg": msg, "dest": "905321234567"}},
})
res, err := http.Post(base+"/v2/send.json", "application/json", bytes.NewReader(body)) // plain-text campaign IDHer dil, CI'da sağlayıcının resmi SDK'sıyla (ya da başka bir adrese yönlendirilemeyen SDK'larda düz HTTP API'siyle) otpmock'a karşı sınanır.
Kimlik bilgisi. Test ortamında password alanına otpmock API anahtarınızı yazın. Kullanıcı adı olduğu gibi kalabilir.
otpmock neyi taklit ediyor?
| Uç nokta | Ne yapar |
|---|---|
GET /v2/send | Sorgu dizesi: username, password, source_addr, msg, dest (virgülle ayrılmış) |
POST /v2/send.json | JSON: username, password, source_addr, msg ve dest içeren messages[] |
Yanıtlar ve hatalar Verimor API'sinin kendi biçimindedir, bu yüzden istemci kütüphanesi onları her zamanki gibi çözümler. Yanlış anahtar ve aylık hakkın dolması da aynı hata biçimiyle döner.
Telefon numaraları
Verimor 905321234567 biçimini kullanır. otpmock bunu +905321234567 olarak saklar; yerel 5321234567 de aynı numaraya çevrilir. Testte kodu +90… biçimiyle sorgulayın.
Testinizde kodu okuyun
const telefon = otp.randomPhone("+905"); // her test için ayrı numara
const since = Date.now() - 5_000;
await page.getByRole("button", { name: "Kod gönder" }).click(); // uygulamanız Verimor API'sini çağırır
const { code } = await otp.waitForCode(telefon, { since });otp yardımcısı bağımlılığı olmayan tek bir dosyadır: dokümandan alın (İngilizce). Baştan sona örnekler: Playwright ve Cypress rehberleri (İngilizce). Verimor akışının Playwright ile baştan sona örneği, CI ve staging ayrıntıları için Netgsm rehberi (test çatısı tarafı aynı) sayfasına bakın.
Sık sorulanlar
otpmock Verimor üzerinden gerçek SMS gönderiyor mu?
Hayır. Test ortamında uygulamanızın Verimor istekleri otpmock'a gider; mesaj 10 dakika saklanır ve Verimor ya da herhangi bir operatör ağına hiç ulaşmaz. Canlı ortamınız Verimor kullanmaya devam eder, çünkü otpmock yalnızca OTPMOCK_URL tanımlıyken devreye girer.
Resmi SDK yoksa neyle test ediliyor?
Sınama, API'nin kendi yolları ve gövdeleriyle doğrudan HTTP üzerinden yapılır. Uygulamanız zaten API'yi doğrudan çağırdığı için yapmanız gereken tek şey adresi değiştirmektir.
otpmock hangi Verimor API'lerini destekliyor?
GET /v2/send (Sorgu dizesi: username, password, source_addr, msg, dest (virgülle ayrılmış)); POST /v2/send.json (JSON: username, password, source_addr, msg ve dest içeren messages[]).
GET ve POST uç noktalarının ikisi de çalışıyor mu?
Evet. GET /v2/send ve POST /v2/send.json birlikte desteklenir; hangisini kullanıyorsanız onunla test edebilirsiniz.
Ücretsiz plan ayda 300 mesaj içerir, kart gerekmez. Yapay zeka kodlama asistanı mı kullanıyorsunuz? otpmock.com/llms-full.txt adresini verin.
Ücretsiz API anahtarı al