§
    e»jN  ã                   óð   — d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	  G d„ de
e¦  «        Z G d„ d	e
e¦  «        Z G d
„ de¦  «        Z e	dd¬¦  «         G d„ d¦  «        ¦   «         Z G d„ d¦  «        ZdS )a-  
FreeExile Platform Payment Compliance Router.
Enforces Apple App Store Guideline 3.1.1 and Google Play Billing requirements.
Guarantees iOS and Google Play builds never expose unauthorized payment processors,
while Web/PC and Sideload builds offer complete gateway flexibility including Web3 Crypto.
é    N)ÚEnum)ÚDictÚListÚOptional)Ú	dataclassc                   ó&   — e Zd ZdZdZdZdZdZdZdS )ÚPlatformTypeÚPLATFORM_UNKNOWNÚPLATFORM_IOSÚPLATFORM_ANDROID_PLAYSTOREÚPLATFORM_ANDROID_SIDELOADÚPLATFORM_WEB_PCÚPLATFORM_MACOS_DIRECTN)	Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r   r   © ó    ú;C:\Projects\FreeExile\server\shop\payment_gateway_router.pyr	   r	      s2   € € € € € Ø)ÐØ!€LØ!=ÐØ ;ÐØ'€OØ3ÐÐÐr   r	   c                   ó*   — e Zd ZdZdZdZdZdZdZdZ	dS )	ÚPaymentGatewayÚGATEWAY_UNKNOWNÚGATEWAY_APPLE_IAPÚGATEWAY_GOOGLE_PLAYÚGATEWAY_STRIPEÚGATEWAY_PAYPALÚGATEWAY_CRYPTO_WEB3ÚGATEWAY_LOCAL_VIETNAMN)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s7   € € € € € Ø'€OØ+ÐØ/ÐØ%€NØ%€NØ/ÐØ3ÐÐÐr   r   c                   ó   — e Zd ZdZdS )ÚPlatformPolicyViolationErrorzPRaised when an unauthorized gateway is requested for a compliant platform build.N)r   r   r   Ú__doc__r   r   r   r    r    !   s   € € € € € ØZÐZØ€Dr   r    T)ÚslotsÚfrozenc                   óJ   — e Zd ZU eed<   eed<   eed<   dZeed<   dZe	ed<   dS )	ÚPaymentMethodOptionÚgatewayÚdisplay_nameÚicon_urlFÚis_recommendedç      ð?Úbonus_coin_multiplierN)
r   r   r   r   Ú__annotations__Ústrr)   Úboolr+   Úfloatr   r   r   r%   r%   &   sT   € € € € € € àÐÐÑØÐÐÑØ€M€M�MØ €N�DÐ Ð Ñ Ø#&Ð˜5Ð&Ð&Ñ&Ð&Ð&r   r%   c                   óZ   — e Zd ZdZ	 ddededee         fd„Z	 ddededed	e	dedefd
„Z
dS )ÚPaymentGatewayRouterzBAuthoritative Router for Cross-Platform Payment Policy Compliance.ÚUSÚplatformÚcountry_codeÚreturnc           	      ó  — |t           j        k    rt          t          j        dddd¬¦  «        gS |t           j        k    rt          t          j        dddd¬¦  «        gS t          t          j        dd	dd
¬¦  «        t          t          j        dddd
¬¦  «        t          t          j	        dddd¬¦  «        g}| 
                    ¦   «         dk    r1|                     t          t          j        dddd
¬¦  «        ¦  «         |S )zg
        Returns authorized payment methods strictly compliant with platform store guidelines.
        z"Apple In-App Purchase (StoreKit 2)z"assets/icons/payment_apple_pay.pngTr*   )r&   r'   r(   r)   r+   zGoogle Play Billingz$assets/icons/payment_google_play.pngz4Web3 Crypto Wallet (MetaMask / Phantom / USDT / ETH)z$assets/icons/payment_web3_crypto.pnggš™™™™™ñ?zCredit / Debit Card (Stripe)zassets/icons/payment_stripe.pngFzPayPal Globalzassets/icons/payment_paypal.pnggÍÌÌÌÌÌð?ÚVNu.   MoMo / VNPay / Chuyá»ƒn Khoáº£n NgÃ¢n HÃ ng QRz#assets/icons/payment_vnpay_momo.png)r	   r   r%   r   r   r   r   r   r   r   ÚupperÚappendr   )Úselfr3   r4   Úmethodss       r   Úget_allowed_payment_methodsz0PaymentGatewayRouter.get_allowed_payment_methods2   sQ  € ð •|Ô0Ò0Ð0å#Ý*Ô<Ø!EØAØ#'Ø*-ðñ ô ðð ð •|Ô>Ò>Ð>å#Ý*Ô>Ø!6ØCØ#'Ø*-ðñ ô ðð õ  Ý&Ô:ØSØ?Ø#Ø&*ðñ ô õ  Ý&Ô5Ø;Ø:Ø$Ø&*ðñ ô õ  Ý&Ô5Ø,Ø:Ø$Ø&*ðñ ô ð
ˆð0 ×ÒÑÔ 4Ò'Ð'Ø�NŠNÕ.Ý&Ô<ØMØ>Ø$Ø&*ðñ ô ñ ô ð ð ˆr   Ú
account_idÚ
product_idÚrequested_gatewayc           	      ó4  — |                       ||¦  «        }d„ |D ¦   «         }||vr,t          d|j        › d|j        › dd„ |D ¦   «         › �¦  «        ‚d|j                             ¦   «         dd…         › d	t          j        ¦   «         j        dd
…         › �}|S )zœ
        Validates request compliance before issuing order_id.
        Throws PlatformPolicyViolationError if attempting prohibited gateway bypass.
        c                 ó   — h | ]	}|j         ’Œ
S r   )r&   )Ú.0Úms     r   ú	<setcomp>z<PaymentGatewayRouter.create_payment_order.<locals>.<setcomp>ƒ   s   € Ð?Ð?Ð?¨!˜AœIÐ?Ð?Ð?r   z
Platform 'z' strictly forbids gateway 'z'. Allowed gateways: c                 ó   — g | ]	}|j         ‘Œ
S r   )Úvalue)rB   Úgs     r   ú
<listcomp>z=PaymentGatewayRouter.create_payment_order.<locals>.<listcomp>ˆ   s   € Ð%HÐ%HÐ%H°! a¤gÐ%HÐ%HÐ%Hr   Úord_Né   Ú_é   )r<   r    rF   ÚnameÚlowerÚuuidÚuuid4Úhex)	r:   r=   r>   r3   r?   r4   Úallowed_methodsÚallowed_gatewaysÚorder_ids	            r   Úcreate_payment_orderz)PaymentGatewayRouter.create_payment_orderv   s×   € ð ×:Ò:¸8À\ÑRÔRˆØ?Ð?¨Ð?Ñ?Ô?ÐàÐ$4Ð4Ð4Ý.ðK˜Xœ^ð Kð KÐIZÔI`ð Kð KØ%HÐ%HÐ7GÐ%HÑ%HÔ%HðKð Kñô ð ð
 N˜(œ-×-Ò-Ñ/Ô/°°°Ô3ÐMÐMµd´j±l´lÔ6FÀsÈÀsÔ6KÐMÐMˆØˆr   N)r2   )r   r   r   r!   r	   r-   r   r%   r<   r   rU   r   r   r   r1   r1   /   s»   € € € € € ØLÐLð
 !ðBð BàðBð ðBð 
Ð!Ô	"ð	Bð Bð Bð BðT !ðð àðð ðð ð	ð
 *ðð ðð 
ðð ð ð ð ð r   r1   )r!   rO   Úenumr   Útypingr   r   r   Údataclassesr   r-   r	   r   Ú	Exceptionr    r%   r1   r   r   r   ú<module>rZ      s^  ððð ð €€€Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø !Ð !Ð !Ð !Ð !Ð !ð4ð 4ð 4ð 4ð 4�3˜ñ 4ô 4ð 4ð4ð 4ð 4ð 4ð 4�S˜$ñ 4ô 4ð 4ð	ð 	ð 	ð 	ð 	 9ñ 	ô 	ð 	ð
 €�˜dÐ#Ñ#Ô#ð'ð 'ð 'ð 'ð 'ñ 'ô 'ñ $Ô#ð'ð]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð ]ð ]r   