{"id":3418,"date":"2025-07-31T12:34:19","date_gmt":"2025-07-31T04:34:19","guid":{"rendered":"https:\/\/www.deekpay.com\/?p=3418"},"modified":"2025-07-31T12:34:19","modified_gmt":"2025-07-31T04:34:19","slug":"%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3","status":"publish","type":"post","link":"https:\/\/www.deekpay.com\/ru\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/","title":{"rendered":"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 GCash \u0438\u043b\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Maya \u0441 PHP\/Python"},"content":{"rendered":"<h1>\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e \u0441 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 GCash \u0438 Maya<\/h1>\n<h2>\u0414\u043e\u043a\u0438\u043d\u0433 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 GCash<\/h2>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f PHP<\/h3>\n<pre><code class=\"language-php\">&lt;?php<br>\r\n\/\/ \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f API GCash<br>\r\n$gcash_api_key = 'YOUR_GCASH_API_KEY';<br>\r\n$gcash_secret = 'YOUR_GCASH_SECRET';<br>\r\n$gcash_base_url = 'https:\/\/api.gcash.com';<br>\r\n<br>\r\n\/\/ \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443<br>\r\nfunction createGcashPayment($amount, $reference_id, $callback_url) {<br>\r\n    \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 $gcash_api_key, $gcash_secret, $gcash_base_url;<br>\r\n    <br>\r\n    $endpoint = '\/payments\/v1\/payments';<br>\r\n    $timestamp = time();<br>\r\n    <br>\r\n    \/\/ \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430<br>\r\n    $data = [<br>\r\n        'amount' =&gt; number_format($amount, 2),<br>\r\n        'currency' =&gt; 'PHP',<br>\r\n        'payment_method' =&gt; ['type' =&gt; 'GCASH'],<br>\r\n        'reference_id' =&gt; $reference_id,<br>\r\n        'redirect_urls' =&gt; [<br>\r\n            'success' =&gt; \"$callback_url?status=success\",<br>\r\n            'failure' =&gt; \"$callback_url?status=failure\",<br>\r\n            'cancel' =&gt; \"$callback_url?status=cancel\"<br>\r\n        ]<br>\r\n    ];<br>\r\n    <br>\r\n    \/\/ \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044c<br>\r\n    $signature_data = \"POST\\n{$endpoint}\\n{$timestamp}\\n\" . json_encode($data);<br>\r\n    $signature = hash_hmac('sha256', base64_encode($signature_data), base64_encode($gcash_secret));<br>\r\n    <br>\r\n    \/\/ \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430<br>\r\n    $headers = [<br>\r\n        \"Content-Type: application\/json\".<br>\r\n        \"Authorization: Bearer {$gcash_api_key}\", \"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f: Bearer {$gcash_api_key}\".<br>\r\n        \"X-GCash-Timestamp: {$timestamp}\",<br>\r\n        \"X-GCash-Signature: {$signature}\"<br>\r\n    ];<br>\r\n    <br>\r\n     \/\/ cURL-\u0437\u0430\u043f\u0440\u043e\u0441 <br>\r\n     \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 {<br>\r\n         return makeApiRequest(\"{$gcash_base_url}{$endpoint}\", json_encode($data), true);<br>\r\n     } catch (Exception) {<br>\r\n         throw new Exception(\"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c GCASH-\u043f\u043b\u0430\u0442\u0435\u0436\");<br>\r\n     }<br>\r\n}<br>\r\n<br>\r\nfunction makeApiRequest(string url string data bool isPost): array|false {  <br>\r\n   \/* \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0434\u0435\u0441\u044c *\/<br>\r\n}<br>\r\n<\/code><\/pre>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python<\/h3>\n<pre><code class=\"language-python\">\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0438\u043c\u043f\u043e\u0440\u0442<br>\r\n\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c hashlib <br>\r\n\u0438\u043c\u043f\u043e\u0440\u0442 hmac <br>\r\n\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c base64 <br>\r\n\u0432\u0440\u0435\u043c\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 <br>\r\n\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c json <br>\r\n<br>\r\n\u043a\u043b\u0430\u0441\u0441 GcashPayment.<br>\r\n    <br>\r\ndef __init__(self api_key secret).<br>\r\nself.api_key api key self.secret secret self.base url https:\/\/api.gcash.com<br>\r\n    <br>\r\ndef create_payment(self amount reference id callback url)::<br>\r\n \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \/payments\/v1\/payments timestamp int(time.time())<br>\r\n        <br>\r\n \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u0430 f{float(amount):.2f} \u0432\u0430\u043b\u044e\u0442\u0430 PHP \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u043b\u0430\u0442\u044b \u0442\u0438\u043f GCASH \u0441\u0441\u044b\u043b\u043a\u0430 id \u0441\u0441\u044b\u043b\u043a\u0430 id \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0440\u043b\u043e\u0432 \u0443\u0441\u043f\u0435\u0445 f{call backurl \u0441\u0442\u0430\u0442\u0443\u0441 \u0443\u0441\u043f\u0435\u0445 failure f{call backurl status failure cancel f call backurl status cancel<br>\r\n        <br>\r\n \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 POST\\n \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \\n str(timestamp)\\n +json.dumps(data)<br>\r\n \u043f\u043e\u0434\u043f\u0438\u0441\u044c hmac.new(base64.b64encode(self.secret.encode()) base64.b6encode(signatur_data.encode()) hashlib.sha256).hexdigest()<br>\r\n        <br>\r\n headers Content-Type application\/json Authorization Bearer {self.api key X-GCash-Timestamp str(timestamp) X-GCash-Signatur signature<br>\r\n        <br>\r\n response requests.post(f\"{self.base url}{end point}\" jso=data headers=headers)<br>\r\n response.raise_for_status()<br>\r\n return response.json()<br>\r\n<br>\r\n<\/code><\/pre>\n<h2>\u0421\u0442\u044b\u043a\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Maya<\/h2>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f PHP<\/h3>\n<pre><code class=\"language-php\"><br>\r\npublic function createCheckout(float amount string requestReferenceNumber array redirectUrls try payload [ totalAmount [ value amount currency PHP items [[ name Item name quantity | price value (amoun\/100)*100 code item001 description Sample item]] requestReferenceNumber requestReferenceNumber redirectUrl redirectUrls ] ]<br>\r\n<br>\r\nresponse this-&gt;makeRequest('\/checkout\/v1\/checkouts payload); if (!isset(response['checkoutId'])) throw new Exception('Failed to create checkout').<br>\r\n<br>\r\nreturn [ checkoutUrl response['redirectUrl'] checkoutId response['checkoutId'] ]; catch (Exception e) error log(e-&gt;getMessage()); return false. }<br>\r\n<br>\r\nprivate function makeRequest(string path array data string method POST') curl curl_init(this-&gt;api Url path); curl_setopt_array(curl CURLOPT_ RETURNTRANSFER true CURLOPT_CUSTOMREQUEST \u043c\u0435\u0442\u043e\u0434 CURLOPT_POSTFIELDS json encode(data)); headers ['Content-Type application\/json Authorization Basic .base6 encode(this-&gt;checOutKey )]; curl setopt(curl CURLOPT HTTPHEADER headers);<br>\r\n<br>\r\nresult cur_exec(curl); errno cur_errno(curl); error cur_error(curl); if errno throw new Exception(Curl error error error).<br>\r\n<br>\r\nhttpCode cur_getinfo(cu CURLINFO HTTP CODE if httpCode &gt;=400 parse result ?json decode(result true :[]; message parsed['message??parsed[0][' message]? 'Unknown Maya API erro'; throw new Exception(Maya API Error message httpCod finally cu_close(cu );<br>\r\n<br>\r\nreturn son decode(result tru ); } ```<br>\r\n<br>\r\n \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Python ``python import reques import bas664 import jsor from typing impo Dict Any Optional class May Payment def __init__(sel checout_k y your_may _check utkey se ret ey your maya s cret k y a i_u l https:\/ pg sand ox pay ay . om).<br>\r\n<br>\r\n elf ch ck ut ke check t k y elf sec et ke secre _ke elf a i u l ap _ur def cre te_ch ckou sel am unt floa req est ref r nc numbe tr redi ectU ls Di t[str st ] D ct[str An ].<br>\r\n<br>\r\npayload otal mount alue amou nt curr ncy PH it ms na e Ite name qua ti price valu round(amo t *10 )\/100 co de ite O01 descr pt on Sam le tem re uestRefere ce um er requ stR ferenc Numbe redi ectU l redir ctUr s ]<br>\r\n<br>\r\nrespon e self._ma e_req est \/ch ck ut v1\/ch c outs paylo d)<br>\r\n<br>\r\n\u0435\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0435\u0442 \u0438\u043b\u0438 \u043d\u0435\u0442 respo se.get( chec ou d ): rais Except on(Fai ed o cre te Ma ya ch c out )<br>\r\n<br>\r\nret r dict chec ou Ur res o se[ ed rectUr ] che kou Id espo se[c ec outI ] )<br>\r\n<br>\r\nef _mak eque t(se pa th str da a Di t ny met od st POS ) &gt; Op iona Dic any].<br>\r\n<br>\r\nrl f {s If.a i_r }{ ath heade s ont nt Typ appli ation\/jso Auth riz tion asic b4encod ((f sel .checou key ).en ode() hex ist()]<br>\r\n<br>\r\nsponse re uests.req est method lower() ur he ers head rs jso da a)<br>\r\n<br>\r\nspons raise fo sta us()<br>\r\n<br>\r\nre urn sponse.jso () excep Exce tion as xceptio print(f May API er or ex ep ion ret urn No ne ```<br>\r\n<br>\r\n \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f  <br>\r\n<br>\r\n1 \u0421\u0440\u0435\u0434\u0430 \"\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b\": \u043e\u0431\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0440\u0435\u0434\u0443 \"\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b\", \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 API-\u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<br>\r\n<br>\r\n2 \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 Webhook: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438.<br>\r\n<br>\r\n3 \u041c\u0435\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438:<br>\r\n- \u0412\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b API \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HTTPS  <br>\r\n- \u0427\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043a\u043b\u044e\u0447\u0438 API, \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u043a\u043e\u0434\u0435  <br>\r\n- \u0411\u0435\u043b\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f) \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043a IP-\u0430\u0434\u0440\u0435\u0441\u0430\u043c \u0432\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.  <br>\r\n<br>\r\n4 \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044e:<br>\r\n- \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u043a\u0430\u0440\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 PCI DSS (\u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e)<br>\r\n- \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c GDPR \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043c\u0435\u0441\u0442\u043d\u044b\u043c \u043d\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0430\u043a\u0442\u0430\u043c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438  <br>\r\n<br>\r\n5 \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a: \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0439\u0442\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0431\u043e\u0438.<br>\r\n<\/code><\/pre>\n<h2>\u0423\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0438 \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0441\u0442\u044b\u043a\u043e\u0432\u043a\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/h2>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Webhook (\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 PHP)<\/h3>\n<pre><code class=\"language-php\">&lt;?php<br>\r\n\/\/ \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u0435\u0431\u0445\u0443\u043a\u043e\u0432 GCash\/Maya<br>\r\n\u043a\u043b\u0430\u0441\u0441 PaymentWebhookHandler {<br>\r\n    \u0447\u0430\u0441\u0442\u043d\u044b\u0439 $apiSecret.<br>\r\n    <br>\r\n    public function __construct(string $apiSecret) {<br>\r\n        $this-&gt;apiSecret = $apiSecret;<br>\r\n    }<br>\r\n    <br>\r\n    public function handleGcashWebhook(): void {<br>\r\n        \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044c<br>\r\n        $signature = $_SERVER['HTTP_X_GCASH_SIGNATURE'] ?? '';<br>\r\n        $payload = file_get_contents('php:\/\/input');<br>\r\n        <br>\r\n        \u0435\u0441\u043b\u0438 (!$this-&gt;verifyGcashSignature($signature, $payload)) {<br>\r\n            http_response_code(401).<br>\r\n            \u0432\u044b\u0445\u043e\u0434;<br>\r\n        }<br>\r\n        <br>\r\n        \/\/ \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432\u0435\u0431\u0445\u0443\u043a\u0430<br>\r\n        \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 {<br>\r\n            return match ($eventType) {<br>\r\n                'payment.success' =&gt; new SuccessPaymentEvent($data),<br>\r\n                'payment.failed' =&gt; new FailedPaymentEvent($data),<br>\r\n                default =&gt; throw new UnexpectedValueException(\"\u041d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0442\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f: {$eventType}\"),<br>\r\n            };<br>\r\n            <br>\r\n            \/\/ TODO: \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u043a\u0430\u0437\u0430 \u0438 \u0434\u0440\u0443\u0433\u0430\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430<br>\r\n            <br>\r\n            http_response_code(200).<br>\r\n            <br>\r\n<\/code><\/pre>\n<h3>\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u0431-\u0445\u0443\u043a\u043e\u0432 \u043d\u0430 Python<\/h3>\n<pre><code class=\"language-python\">from fastapi import FastAPI, Request, HTTPException <br>\r\n\u0438\u043c\u043f\u043e\u0440\u0442 hmac <br>\r\n\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c hashlib <br>\r\n<br>\r\napp = FastAPI()<br>\r\n<br>\r\nMAYA_WEBHOOK_SECRET = \"your_webhook_secret\"<br>\r\n<br>\r\n@app.post(\"\/maya\/webhooks\")<br>\r\nasync def handle_maya_webhook(request: Request).<br>\r\n    # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 <br>\r\n    signature_header = request.headers.get(\"X-Maya-Signature\")<br>\r\n    <br>\r\n<\/code><\/pre>\n<h2>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c<\/h2>\n<ol>\n<li>\n<p><strong>\u0421\u0431\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430<\/strong>::<\/p>\n<pre><code class=\"language-bash\"># PHP cURL SSL (\u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e)<br>\r\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); <br>\r\n<br>\r\n# Python \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 SSL  <br>\r\nrequests.post(url, verify='\/path\/to\/cert.pem')  <br>\r\n<br>\r\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>\u0421\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u043e\u0442\u043b\u0430\u0434\u043a\u0435<\/strong>::<\/p>\n<ul>\n<li>\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b GCash:<code>4111111111111111<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/strong>::<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u044e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/strong><\/p>\n<\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ol>\n<p>10<\/p>\n<h2>\u0423\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0438 \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0441\u0442\u044b\u043a\u043e\u0432\u043a\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435)<\/h2>\n<h3>5. \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/h3>\n<h4>PHP-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/h4>\n<pre><code class=\"language-php\">function getGcashPaymentStatus(string $paymentId): array {<br>\r\n    $endpoint = \"\/payments\/v1\/payments\/{$paymentId}\";<br>\r\n    $timestamp = time();<br>\r\n    <br>\r\n    \/\/ \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044c (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0434\u043f\u0438\u0441\u0438)<br>\r\n    $signature = generateGcashSignature('GET', $endpoint, $imestamp);<br>\r\n    <br>\r\n    \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 {<br>\r\n        return makeApiRequest(<br>\r\n            \"{$gcash_base_url}{$endpoint}\",<br>\r\n            \u043d\u043e\u043b\u044c,<br>\r\n            false, \/\/ GET-\u0437\u0430\u043f\u0440\u043e\u0441<br>\r\n            [<br>\r\n                \"Authorization: Bearer {$gcash_api_key}\", \"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f: Bearer {$gcash_api_key}\".<br>\r\n                \"X-GCash-Timestamp: {$timestamp}\",<br>\r\n                \"X-GCash-Signature: {$signature}\"<br>\r\n            ]<br>\r\n        );<br>\r\n    } catch (Exception) {<br>\r\n        throw new Exception(\"Failed to fetch payment status\");<br>\r\n    }<br>\r\n}<br>\r\n<\/code><\/pre>\n<h4>\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 Python<\/h4>\n<pre><code class=\"language-python\">async def check_maya_payment_status(session, checkout_id).<br>\r\n    url = f\"{self.base_url}\/checkout\/v1\/checkouts\/{checkout_id}\"<br>\r\n    <br>\r\n<\/code><\/pre>\n<h3>6. \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a<\/h3>\n<p><strong>PHP \u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430<\/strong><\/p>\n<pre><code class=\"language-php\">function makePaymentWithRetry(callable $paymentFn, int maxRetries) { retryCount while (true) { try return paymentFn(); catch PaymentException e if retryCount &gt;= maxRetries throw e; } }<br>\r\n<br>\r\nsleep(min(pow(2 retryCount rand(1000)\/1000)); retryCount++; } }<br>\r\n<br>\r\n\/\/ \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435.<br>\r\nmakePaymentWithRetry(fn createGcashPayment(...)) ;<br>\r\n<\/code><\/pre>\n<p><strong>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 Python<\/strong><\/p>\n<pre><code class=\"language-python\">\u0438\u0437 functools import wraps <br>\r\n<br>\r\ndef retriable(max_retries=3 backoff_factor=1)::<br>\r\n def decorator(func @wraps(func))<br>\r\n async def wrapper(*args kwargs last_error None for attempt in range(max_retrieve sleep_time backoff_factor * (2 attempt await asyncio.sleep(sleep_ \u0432\u0440\u0435\u043c\u044f)<br>\r\n<br>\r\ntry return await func(*args kwargs except PaymentError as e last_error e raise Retr yExhaustedError from last_error return wrapper return decorator<br>\r\n<br>\r\n@retriable(max_retrie )<br>\r\nasync def process_paymen().<br>\r\n \u043f\u0440\u043e\u0439\u0442\u0438 ``<br>\r\n<br>\r\n  <br>\r\n<br>\r\n7.<br>\r\n<br>\r\n8.<br>\r\n<br>\r\n9.<br>\r\n<br>\r\n10<br>\r\n<\/code><\/pre>","protected":false},"excerpt":{"rendered":"<p>\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0441\u0442\u044b\u043a\u043e\u0432\u043a\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 GCash \u0438 Maya \u041f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 GCash \u0414\u043e\u043a...<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[32],"tags":[],"class_list":["post-3418","post","type-post","status-publish","format-standard","hentry","category-32"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.9 (Yoast SEO v23.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3 - DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u56db\u65b9\u652f\u4ed8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.deekpay.com\/ru\/2025\/07\/31\/\u7528php\uff0fpython\u5bf9\u63a5gcash\u6216maya\u652f\u4ed8\u63a5\u53e3\/\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3\" \/>\n<meta property=\"og:description\" content=\"\u5bf9\u63a5GCash\u548cMaya\u652f\u4ed8\u63a5\u53e3\u6307\u5357 GCash\u652f\u4ed8\u63a5\u53e3\u5bf9\u63a5&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.deekpay.com\/ru\/2025\/07\/31\/\u7528php\uff0fpython\u5bf9\u63a5gcash\u6216maya\u652f\u4ed8\u63a5\u53e3\/\" \/>\n<meta property=\"og:site_name\" content=\"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u56db\u65b9\u652f\u4ed8\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-31T04:34:19+00:00\" \/>\n<meta name=\"author\" content=\"deekpay\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u043c\" \/>\n\t<meta name=\"twitter:data1\" content=\"deekpay\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u043c\u0438\u043d\u0443\u0442\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/\"},\"author\":{\"name\":\"deekpay\",\"@id\":\"https:\/\/www.deekpay.com\/#\/schema\/person\/91e4e842fdd04f8c957a9f642506f51d\"},\"headline\":\"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3\",\"datePublished\":\"2025-07-31T04:34:19+00:00\",\"dateModified\":\"2025-07-31T04:34:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/\"},\"wordCount\":20,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.deekpay.com\/#organization\"},\"articleSection\":[\"\u83f2\u5f8b\u5bbe\u652f\u4ed8\"],\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/\",\"url\":\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/\",\"name\":\"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3 - DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u56db\u65b9\u652f\u4ed8\",\"isPartOf\":{\"@id\":\"https:\/\/www.deekpay.com\/#website\"},\"datePublished\":\"2025-07-31T04:34:19+00:00\",\"dateModified\":\"2025-07-31T04:34:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.deekpay.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.deekpay.com\/#website\",\"url\":\"https:\/\/www.deekpay.com\/\",\"name\":\"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u652f\u4ed8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.deekpay.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.deekpay.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ru-RU\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.deekpay.com\/#organization\",\"name\":\"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8\u548cUPI\u652f\u4ed8\u670d\u52a1\u5546\",\"url\":\"https:\/\/www.deekpay.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/www.deekpay.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/deekpay.com\/wp-content\/uploads\/2024\/11\/LOGO-1.png\",\"contentUrl\":\"https:\/\/deekpay.com\/wp-content\/uploads\/2024\/11\/LOGO-1.png\",\"width\":649,\"height\":191,\"caption\":\"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8\u548cUPI\u652f\u4ed8\u670d\u52a1\u5546\"},\"image\":{\"@id\":\"https:\/\/www.deekpay.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.deekpay.com\/#\/schema\/person\/91e4e842fdd04f8c957a9f642506f51d\",\"name\":\"deekpay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/www.deekpay.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/485e931d0b237ba5cfa6c7cea419d88f7e3258b4837d99943e099ff93b458f8c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/485e931d0b237ba5cfa6c7cea419d88f7e3258b4837d99943e099ff93b458f8c?s=96&d=mm&r=g\",\"caption\":\"deekpay\"},\"sameAs\":[\"https:\/\/deekpay.com\"],\"url\":\"https:\/\/www.deekpay.com\/ru\/author\/deekpay\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3 - DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u56db\u65b9\u652f\u4ed8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.deekpay.com\/ru\/2025\/07\/31\/\u7528php\uff0fpython\u5bf9\u63a5gcash\u6216maya\u652f\u4ed8\u63a5\u53e3\/","og_locale":"ru_RU","og_type":"article","og_title":"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3","og_description":"\u5bf9\u63a5GCash\u548cMaya\u652f\u4ed8\u63a5\u53e3\u6307\u5357 GCash\u652f\u4ed8\u63a5\u53e3\u5bf9\u63a5&hellip;","og_url":"https:\/\/www.deekpay.com\/ru\/2025\/07\/31\/\u7528php\uff0fpython\u5bf9\u63a5gcash\u6216maya\u652f\u4ed8\u63a5\u53e3\/","og_site_name":"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u56db\u65b9\u652f\u4ed8","article_published_time":"2025-07-31T04:34:19+00:00","author":"deekpay","twitter_card":"summary_large_image","twitter_misc":{"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u043c":"deekpay","\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f":"6 \u043c\u0438\u043d\u0443\u0442"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#article","isPartOf":{"@id":"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/"},"author":{"name":"deekpay","@id":"https:\/\/www.deekpay.com\/#\/schema\/person\/91e4e842fdd04f8c957a9f642506f51d"},"headline":"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3","datePublished":"2025-07-31T04:34:19+00:00","dateModified":"2025-07-31T04:34:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/"},"wordCount":20,"commentCount":0,"publisher":{"@id":"https:\/\/www.deekpay.com\/#organization"},"articleSection":["\u83f2\u5f8b\u5bbe\u652f\u4ed8"],"inLanguage":"ru-RU","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/","url":"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/","name":"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3 - DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u56db\u65b9\u652f\u4ed8","isPartOf":{"@id":"https:\/\/www.deekpay.com\/#website"},"datePublished":"2025-07-31T04:34:19+00:00","dateModified":"2025-07-31T04:34:19+00:00","breadcrumb":{"@id":"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.deekpay.com\/2025\/07\/31\/%e7%94%a8php%ef%bc%8fpython%e5%af%b9%e6%8e%a5gcash%e6%88%96maya%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.deekpay.com\/"},{"@type":"ListItem","position":2,"name":"\u7528PHP\uff0fPython\u5bf9\u63a5GCash\u6216Maya\u652f\u4ed8\u63a5\u53e3"}]},{"@type":"WebSite","@id":"https:\/\/www.deekpay.com\/#website","url":"https:\/\/www.deekpay.com\/","name":"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8|\u5370\u5ea6UPI\u652f\u4ed8|\u5370\u5ea6\u4e09\u65b9\u652f\u4ed8","description":"","publisher":{"@id":"https:\/\/www.deekpay.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.deekpay.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ru-RU"},{"@type":"Organization","@id":"https:\/\/www.deekpay.com\/#organization","name":"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8\u548cUPI\u652f\u4ed8\u670d\u52a1\u5546","url":"https:\/\/www.deekpay.com\/","logo":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/www.deekpay.com\/#\/schema\/logo\/image\/","url":"https:\/\/deekpay.com\/wp-content\/uploads\/2024\/11\/LOGO-1.png","contentUrl":"https:\/\/deekpay.com\/wp-content\/uploads\/2024\/11\/LOGO-1.png","width":649,"height":191,"caption":"DEEKPAY-\u5370\u5ea6\u539f\u751f\u652f\u4ed8\u548cUPI\u652f\u4ed8\u670d\u52a1\u5546"},"image":{"@id":"https:\/\/www.deekpay.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.deekpay.com\/#\/schema\/person\/91e4e842fdd04f8c957a9f642506f51d","name":"deekpay","image":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/www.deekpay.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/485e931d0b237ba5cfa6c7cea419d88f7e3258b4837d99943e099ff93b458f8c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/485e931d0b237ba5cfa6c7cea419d88f7e3258b4837d99943e099ff93b458f8c?s=96&d=mm&r=g","caption":"deekpay"},"sameAs":["https:\/\/deekpay.com"],"url":"https:\/\/www.deekpay.com\/ru\/author\/deekpay\/"}]}},"_links":{"self":[{"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/posts\/3418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/comments?post=3418"}],"version-history":[{"count":1,"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/posts\/3418\/revisions"}],"predecessor-version":[{"id":3419,"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/posts\/3418\/revisions\/3419"}],"wp:attachment":[{"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/media?parent=3418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/categories?post=3418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deekpay.com\/ru\/wp-json\/wp\/v2\/tags?post=3418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}