Skip to content

Commit 30f8a94

Browse files
authored
Merge pull request #333 from codebude/feature/whatsapp-payload-generator-update
Feature/whatsapp payload generator update
2 parents a52a22c + 0c3de71 commit 30f8a94

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

QRCoder/PayloadGenerator.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,10 @@ public class WhatsAppMessage : Payload
331331
/// <summary>
332332
/// Let's you compose a WhatApp message and send it the receiver number.
333333
/// </summary>
334-
/// <param name="number">Receiver phone number</param>
334+
/// <param name="number">Receiver phone number where the <number> is a full phone number in international format.
335+
/// Omit any zeroes, brackets, or dashes when adding the phone number in international format.
336+
/// Use: 1XXXXXXXXXX | Don't use: +001-(XXX)XXXXXXX
337+
/// </param>
335338
/// <param name="message">The message</param>
336339
public WhatsAppMessage(string number, string message)
337340
{
@@ -351,7 +354,8 @@ public WhatsAppMessage(string message)
351354

352355
public override string ToString()
353356
{
354-
return ($"whatsapp://send?phone={this.number}&text={Uri.EscapeDataString(message)}");
357+
var cleanedPhone = Regex.Replace(this.number, @"^[0+]+|[ ()-]", string.Empty);
358+
return ($"https://wa.me/{cleanedPhone}?text={Uri.EscapeDataString(message)}");
355359
}
356360
}
357361

QRCoderTests/PayloadGeneratorTests.cs

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2923,13 +2923,13 @@ public void contactdata_generator_can_generate_payload_full_vcard4_reverse()
29232923
[Category("PayloadGenerator/WhatsAppMessage")]
29242924
public void whatsapp_generator_can_generate_payload_simple()
29252925
{
2926-
var number = "01601234567";
2926+
var number = "491601234567";
29272927
var msg = "This is a sample message with Umlauts: Ä,ö, ü and ß.";
29282928
var generator = new PayloadGenerator.WhatsAppMessage(number, msg);
29292929

29302930
generator
29312931
.ToString()
2932-
.ShouldBe("whatsapp://send?phone=01601234567&text=This%20is%20a%20sample%20message%20with%20Umlauts%3A%20%C3%84%2C%C3%B6%2C%20%C3%BC%20and%20%C3%9F.");
2932+
.ShouldBe("https://wa.me/491601234567?text=This%20is%20a%20sample%20message%20with%20Umlauts%3A%20%C3%84%2C%C3%B6%2C%20%C3%BC%20and%20%C3%9F.");
29332933
}
29342934

29352935
[Fact]
@@ -2941,9 +2941,34 @@ public void whatsapp_should_add_unused_params()
29412941

29422942
generator
29432943
.ToString()
2944-
.ShouldBe("whatsapp://send?phone=&text=This%20is%20a%20sample%20message%20with%20Umlauts%3A%20%C3%84%2C%C3%B6%2C%20%C3%BC%20and%20%C3%9F.");
2944+
.ShouldBe("https://wa.me/?text=This%20is%20a%20sample%20message%20with%20Umlauts%3A%20%C3%84%2C%C3%B6%2C%20%C3%BC%20and%20%C3%9F.");
29452945
}
29462946

2947+
[Fact]
2948+
[Category("PayloadGenerator/WhatsAppMessage")]
2949+
public void whatsapp_should_cleanup_phonenumber_1()
2950+
{
2951+
var number = "+49(160)1234567";
2952+
var msg = "This is a sample message with Umlauts: Ä,ö, ü and ß.";
2953+
var generator = new PayloadGenerator.WhatsAppMessage(number, msg);
2954+
2955+
generator
2956+
.ToString()
2957+
.ShouldBe("https://wa.me/491601234567?text=This%20is%20a%20sample%20message%20with%20Umlauts%3A%20%C3%84%2C%C3%B6%2C%20%C3%BC%20and%20%C3%9F.");
2958+
}
2959+
2960+
[Fact]
2961+
[Category("PayloadGenerator/WhatsAppMessage")]
2962+
public void whatsapp_should_cleanup_phonenumber_2()
2963+
{
2964+
var number = "0049-160-1234 567";
2965+
var msg = "This is a sample message with Umlauts: Ä,ö, ü and ß.";
2966+
var generator = new PayloadGenerator.WhatsAppMessage(number, msg);
2967+
2968+
generator
2969+
.ToString()
2970+
.ShouldBe("https://wa.me/491601234567?text=This%20is%20a%20sample%20message%20with%20Umlauts%3A%20%C3%84%2C%C3%B6%2C%20%C3%BC%20and%20%C3%9F.");
2971+
}
29472972

29482973
[Fact]
29492974
[Category("PayloadGenerator/Monero")]
@@ -2957,7 +2982,6 @@ public void monero_generator_can_generate_payload_simple()
29572982
.ShouldBe("monero://46BeWrHpwXmHDpDEUmZBWZfoQpdc6HaERCNmx1pEYL2rAcuwufPN9rXHHtyUA4QVy66qeFQkn6sfK8aHYjA3jk3o1Bv16em");
29582983
}
29592984

2960-
29612985
[Fact]
29622986
[Category("PayloadGenerator/Monero")]
29632987
public void monero_generator_can_generate_payload_first_param()

0 commit comments

Comments
 (0)