Biz çözdük.
Her nasılsa "ASP.NET_SessionId" çerezinin "SameSite" özniteliği varsayılan olarak "Lax" olur ve bu, oturum çerezinin ödeme ağ geçidinin javascript kodu tarafından yapılan isteğe eklenmemesine neden olur.
Bu değeri geçersiz kılmak ve "None" olarak ayarlamak için web.config dosyasına aşağıdaki kuralı ekledik.
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
GÜNCELLEME 1 : Sadece yukarıdaki yapılandırmayı eklemek modern tarayıcılar için sorunu çözdü, ancak Micosoft Edge ve Internet Explorer'ın eski sürümleriyle ilgili sorun yaşadığımızı fark ettik.
Bu yüzden web.config dosyasındaki sessionState düğümüne cookieSameSite = "None" özniteliğini eklememiz gerekiyordu.
<sessionState cookieSameSite="None" />
Eski .net framework sürümleri bunu desteklemediğinden ve sitenizin hata sayfası görüntülemesine neden olduğundan bu yapılandırma değişikliğine dikkat edin.
Bu arada hala IOS 12'de tarayıcılarla ilgili sorunlar yaşıyoruz. Ama bence bu doğrulanmış hata ile ilgili
GÜNCELLEME 2 : IOS sorunuyla ilgili olası düzeltme için zemien'in cevabına bakın
GÜNCELLEME 3 : Bulgularımızı zemien'in cevabındaki önerilerle birleştirerek aşağıdaki yeniden yazma kurallarını bulduk. Bu konfigürasyonu üretimde kullanıyoruz. Ancak dikkat: tüm çerezleri uyumlu tarayıcılar için "SameSite: None" özniteliğiyle işaretler ve uyumsuz tarayıcılar için SameSite özniteliğini hariç tutar. Karmaşık görünebilir ama yorum satırları üzerinden açıklamaya çalıştım.
Üretimde kullandığımız FINAL yapılandırması:
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<preConditions>
<!-- Browsers incompatible with SameSite=None -->
<preCondition name="IncompatibleWithSameSiteNone" logicalGrouping="MatchAny">
<add input="{HTTP_USER_AGENT}" pattern="(CPU iPhone OS 12)|(iPad; CPU OS 12)" />
<add input="{HTTP_USER_AGENT}" pattern="(Chrome/5)|(Chrome/6)" />
<add input="{HTTP_USER_AGENT}" pattern="( OS X 10_14).*(Version/).*((Safari)|(KHTML, like Gecko)$)" />
</preCondition>
<!-- Rest of the browsers are assumed to be compatible with SameSite=None -->
<preCondition name="CompatibleWithSameSiteNone" logicalGrouping="MatchAll">
<add input="{HTTP_USER_AGENT}" pattern="(CPU iPhone OS 12)|(iPad; CPU OS 12)" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="(Chrome/5)|(Chrome/6)" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="( OS X 10_14).*(Version/).*((Safari)|(KHTML, like Gecko)$)" negate="true" />
</preCondition>
</preConditions>
<!-- Rule 1: Remove SameSite part from cookie for incompatible browsers if exists -->
<rule name="Remove_SameSiteCookie_IfExists_ForLegacyBrowsers" preCondition="IncompatibleWithSameSiteNone">
<match serverVariable="RESPONSE_Set-Cookie" pattern="(.*)(SameSite=.*)" />
<action type="Rewrite" value="{R:1}" />
</rule>
<!-- Rule 2: Override SameSite's value to None if exists, for compatible browsers -->
<rule name="Override_SameSiteCookie_IfExists_ForModernBrowsers" preCondition="CompatibleWithSameSiteNone">
<match serverVariable="RESPONSE_Set-Cookie" pattern="(.*)(SameSite=.*)" />
<action type="Rewrite" value="{R:1}; SameSite=None" />
</rule>
<!-- Rule 3: Add SameSite attribute with the value None if it does not exists, for compatible browsers -->
<rule name="Add_SameSiteCookie_IfNotExists_ForModernBrowsers" preCondition="CompatibleWithSameSiteNone">
<match serverVariable="RESPONSE_Set-Cookie" pattern=".*"/>
<!-- Condition explanation: Cookie data contains some string value but does not contain SameSite attribute -->
<conditions logicalGrouping="MatchAll">
<add input="{R:0}" pattern="^(?!\s*$).+"/>
<add input="{R:0}" pattern="SameSite=.*" negate="true"/>
</conditions>
<action type="Rewrite" value="{R:0}; SameSite=None" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>