xync-client 0.0.121__tar.gz → 0.0.125__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of xync-client might be problematic. Click here for more details.
- {xync_client-0.0.121/xync_client.egg-info → xync_client-0.0.125}/PKG-INFO +1 -1
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/InAgent.py +67 -60
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/etype/order.py +1 -2
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Payeer/__init__.py +2 -2
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Payeer/login.py +12 -2
- {xync_client-0.0.121 → xync_client-0.0.125/xync_client.egg-info}/PKG-INFO +1 -1
- {xync_client-0.0.121 → xync_client-0.0.125}/.env.sample +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/.gitignore +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/README.md +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/makefile +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/pyproject.toml +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/setup.cfg +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/TestAgent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/TestAsset.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/TestEx.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/TestOrder.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/Agent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/Auth.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/Ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/Exception.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/Order.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/PmAgent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Abc/xtype.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/etype/pm.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BitGet/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/BitPapa/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/agent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/etype/cred.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/order.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Bybit/ws.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Gate/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Gmail/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/etype/test.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Htx/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/KuCoin/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/KuCoin/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Mexc/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Mexc/etype/pm.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Mexc/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/.gitignore +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Alfa/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Alfa/state.json +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/MTS/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Ozon/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Payeer/.gitignore +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Payeer/api.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Sber/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Sber/utils.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Tinkoff/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Volet/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Volet/api.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Volet/pl.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Xync/__main__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Xync/ed.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/Pms/Yandex/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/ex.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/pyd.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/__init__.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/loader.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client/pm_unifier.py +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client.egg-info/SOURCES.txt +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.121 → xync_client-0.0.125}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -87,9 +87,11 @@ class InAgentClient(BaseInAgentClient):
|
|
|
87
87
|
match upd.status:
|
|
88
88
|
case StatusApi.created:
|
|
89
89
|
logging.info(f"Order {order.id} created at {order.createDate}")
|
|
90
|
-
|
|
90
|
+
# сразу уменьшаем доступный остаток монеты/валюты
|
|
91
|
+
await self.money_upd(order_db)
|
|
92
|
+
if upd.side: # я покупатель - ждем мою оплату
|
|
91
93
|
dest = order.paymentTermList[0].accountNo
|
|
92
|
-
if not re.match(r"^
|
|
94
|
+
if not re.match(r"^([Pp])\d{8,10}$", dest):
|
|
93
95
|
continue
|
|
94
96
|
await order_db.fetch_related("ad__pair_side__pair", "cred__pmcur__cur")
|
|
95
97
|
await self.send_payment(order_db, dest)
|
|
@@ -114,34 +116,17 @@ class InAgentClient(BaseInAgentClient):
|
|
|
114
116
|
accepted_at=datetime.now(timezone.utc),
|
|
115
117
|
),
|
|
116
118
|
order=order_db,
|
|
119
|
+
# pm_id=order_db.cred.pmcur.pm_id,
|
|
117
120
|
pmid=tid,
|
|
118
121
|
)
|
|
119
122
|
if not is_new:
|
|
120
123
|
continue
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
)
|
|
128
|
-
coinex = await models.CoinEx.get(
|
|
129
|
-
coin_id=order_db.ad.pair_side.pair.coin_id,
|
|
130
|
-
ex=self.agent_client.ex_client.ex,
|
|
131
|
-
)
|
|
132
|
-
ass.free -= (
|
|
133
|
-
int(order_db.amount / order_db.ad.price) * 10**coinex.scale
|
|
134
|
-
)
|
|
135
|
-
await ass.save(update_fields=["free"])
|
|
136
|
-
# обновляем остаток валюты
|
|
137
|
-
fiat = await models.Fiat.get(cred_id=order_db.cred_id)
|
|
138
|
-
fiat.amount += order_db.amount
|
|
139
|
-
await fiat.save(update_fields=["amount"])
|
|
140
|
-
# отправляем деньги
|
|
141
|
-
self.agent_client.api.release_assets(orderId=upd.id)
|
|
142
|
-
logging.info(
|
|
143
|
-
f"Order {order.id} created, paid before #{tid}:{am} at {order.createDate}, and RELEASED at {datetime.now()}"
|
|
144
|
-
)
|
|
124
|
+
|
|
125
|
+
# !!! ОТПРАВЛЯЕМ ДЕНЬГИ !!!
|
|
126
|
+
self.agent_client.api.release_assets(orderId=upd.id)
|
|
127
|
+
logging.info(
|
|
128
|
+
f"Order {order.id} created, paid before #{tid}:{am} at {order.createDate}, and RELEASED at {datetime.now()}"
|
|
129
|
+
)
|
|
145
130
|
elif upd.side == 1: # я покупатель - ждем мою оплату
|
|
146
131
|
continue # logging.warning(f"Order {order.id} PAID at {datetime.now()}: {int_am}")
|
|
147
132
|
else:
|
|
@@ -149,6 +134,20 @@ class InAgentClient(BaseInAgentClient):
|
|
|
149
134
|
# todo: check is always canceling
|
|
150
135
|
# await order_db.update_from_dict({"status": OrderStatus.canceled}).save()
|
|
151
136
|
# logging.info(f"Order {order.id} canceled at {datetime.now()}")
|
|
137
|
+
|
|
138
|
+
case StatusApi.wait_for_seller:
|
|
139
|
+
if order_db.status == OrderStatus.paid:
|
|
140
|
+
continue
|
|
141
|
+
await order_db.update_from_dict(
|
|
142
|
+
{
|
|
143
|
+
"status": OrderStatus.paid,
|
|
144
|
+
"payed_at": datetime.fromtimestamp(
|
|
145
|
+
float(order.transferDate) / 1000
|
|
146
|
+
),
|
|
147
|
+
}
|
|
148
|
+
).save()
|
|
149
|
+
logging.info(f"Order {order.id} payed at {order_db.payed_at}")
|
|
150
|
+
|
|
152
151
|
case StatusApi.appealed:
|
|
153
152
|
# todo: appealed by WHO? щас наугад стоит by_seller
|
|
154
153
|
await order_db.update_from_dict(
|
|
@@ -160,19 +159,13 @@ class InAgentClient(BaseInAgentClient):
|
|
|
160
159
|
}
|
|
161
160
|
).save()
|
|
162
161
|
logging.info(f"Order {order.id} appealed at {order_db.appealed_at}")
|
|
162
|
+
|
|
163
163
|
case StatusApi.canceled:
|
|
164
164
|
await order_db.update_from_dict({"status": OrderStatus.canceled}).save()
|
|
165
165
|
logging.info(f"Order {order.id} canceled at {datetime.now()}")
|
|
166
|
+
await self.money_upd(order_db)
|
|
167
|
+
|
|
166
168
|
case StatusApi.completed:
|
|
167
|
-
if upd.side: # я покупатель, продавец подтвердил получение
|
|
168
|
-
# добавляем остаток монеты
|
|
169
|
-
await order_db.fetch_related("ad__pair_side__pair") # todo: refact
|
|
170
|
-
ass = await models.Asset.get(
|
|
171
|
-
addr__coin_id=order_db.ad.pair_side.pair.coin_id,
|
|
172
|
-
addr__actor=self.agent_client.actor,
|
|
173
|
-
)
|
|
174
|
-
ass.free += order_db.quantity
|
|
175
|
-
await ass.save(update_fields=["free"])
|
|
176
169
|
await order_db.update_from_dict(
|
|
177
170
|
{
|
|
178
171
|
"status": OrderStatus.completed,
|
|
@@ -181,19 +174,8 @@ class InAgentClient(BaseInAgentClient):
|
|
|
181
174
|
),
|
|
182
175
|
}
|
|
183
176
|
).save()
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if order_db.status == OrderStatus.paid:
|
|
187
|
-
continue
|
|
188
|
-
await order_db.update_from_dict(
|
|
189
|
-
{
|
|
190
|
-
"status": OrderStatus.paid,
|
|
191
|
-
"payed_at": datetime.fromtimestamp(
|
|
192
|
-
float(order.transferDate) / 1000
|
|
193
|
-
),
|
|
194
|
-
}
|
|
195
|
-
).save()
|
|
196
|
-
logging.info(f"Order {order.id} payed at {order_db.payed_at}")
|
|
177
|
+
await self.money_upd(order_db)
|
|
178
|
+
|
|
197
179
|
case _:
|
|
198
180
|
logging.warning(f"Order {order.id} UNKNOWN STATUS {datetime.now()}")
|
|
199
181
|
case "COUNT_DOWN":
|
|
@@ -258,8 +240,44 @@ class InAgentClient(BaseInAgentClient):
|
|
|
258
240
|
if not upd:
|
|
259
241
|
logging.warning(data, "NOT PROCESSED UPDATE")
|
|
260
242
|
|
|
243
|
+
async def money_upd(self, order_db: models.Order):
|
|
244
|
+
# обновляем остаток монеты
|
|
245
|
+
await order_db.fetch_related("ad__pair_side__pair", "cred")
|
|
246
|
+
ass = await models.Asset.get(
|
|
247
|
+
addr__coin_id=order_db.ad.pair_side.pair.coin_id, addr__actor=self.agent_client.actor
|
|
248
|
+
)
|
|
249
|
+
# обновляем остаток валюты
|
|
250
|
+
fiat = await models.Fiat.get(
|
|
251
|
+
cred__person_id=self.agent_client.actor.person_id, cred__pmcur_id=order_db.cred.pmcur_id
|
|
252
|
+
).prefetch_related("cred__pmcur__pm")
|
|
253
|
+
fee = round(order_db.amount * (fiat.cred.pmcur.pm.fee or 0) * 0.0001)
|
|
254
|
+
im_seller = order_db.ad.pair_side.is_sell == (_im_maker := order_db.ad.maker_id == self.agent_client.actor.id)
|
|
255
|
+
# k = int(im_seller) * 2 - 1 # im_seller: 1, im_buyer: -1
|
|
256
|
+
if order_db.status == OrderStatus.created:
|
|
257
|
+
if im_seller:
|
|
258
|
+
ass.free -= order_db.quantity
|
|
259
|
+
ass.freeze += order_db.quantity
|
|
260
|
+
else: # я покупатель
|
|
261
|
+
fiat.amount -= order_db.amount + fee
|
|
262
|
+
elif order_db.status == OrderStatus.completed:
|
|
263
|
+
if im_seller:
|
|
264
|
+
fiat.amount += order_db.amount
|
|
265
|
+
else: # я покупатель
|
|
266
|
+
ass.free += order_db.quantity
|
|
267
|
+
elif order_db.status == OrderStatus.canceled:
|
|
268
|
+
if im_seller:
|
|
269
|
+
ass.free += order_db.quantity
|
|
270
|
+
ass.freeze -= order_db.quantity
|
|
271
|
+
else: # я покупатель
|
|
272
|
+
fiat.amount += order_db.amount + fee
|
|
273
|
+
else:
|
|
274
|
+
logging.exception(order_db.id, f"STATUS: {order_db.status.name}")
|
|
275
|
+
await ass.save(update_fields=["free", "freeze"])
|
|
276
|
+
await fiat.save(update_fields=["amount"])
|
|
277
|
+
logging.info(f"Order #{order_db.id} {order_db.status.name}. Fiat: {fiat.amount}, Asset: {ass.free}")
|
|
278
|
+
|
|
261
279
|
async def send_payment(self, order_db: models.Order, dest):
|
|
262
|
-
if order_db.status
|
|
280
|
+
if order_db.status != OrderStatus.created:
|
|
263
281
|
return
|
|
264
282
|
fmt_am = round(order_db.amount * 10**-2, 2)
|
|
265
283
|
pma, cur = await self.get_pma_by_pmex(order_db)
|
|
@@ -289,17 +307,6 @@ class InAgentClient(BaseInAgentClient):
|
|
|
289
307
|
order=order_db,
|
|
290
308
|
pmid=tid,
|
|
291
309
|
)
|
|
292
|
-
# обновляем остаток валюты
|
|
293
|
-
await order_db.fetch_related("cred") # todo: refact
|
|
294
|
-
await (
|
|
295
|
-
(
|
|
296
|
-
await models.Fiat.get(
|
|
297
|
-
cred__person_id=self.agent_client.actor.person_id, cred__pmcur_id=order_db.cred.pmcur_id
|
|
298
|
-
)
|
|
299
|
-
)
|
|
300
|
-
.update_from_dict({"amount": rest_amount * 100})
|
|
301
|
-
.save()
|
|
302
|
-
)
|
|
303
310
|
# отправляем продавцу чек
|
|
304
311
|
if res := self.agent_client.api.upload_chat_file(upload_file=f"tmp/{dest}.png").get("result"):
|
|
305
312
|
self.agent_client.api.send_chat_message(
|
|
@@ -16,7 +16,7 @@ class Topic(IntEnum):
|
|
|
16
16
|
|
|
17
17
|
class Status(IntEnum):
|
|
18
18
|
deleted = 40 # order canceled
|
|
19
|
-
|
|
19
|
+
created = 10
|
|
20
20
|
appealable = 20 # waiting for seller to release
|
|
21
21
|
canceled = 40
|
|
22
22
|
completed = 50 # order finished
|
|
@@ -26,7 +26,6 @@ class Status(IntEnum):
|
|
|
26
26
|
paid = 50
|
|
27
27
|
rejected = 40
|
|
28
28
|
request_canceled = 40
|
|
29
|
-
requested = 10
|
|
30
29
|
seller_appeal_disputed_by_buyer = 30
|
|
31
30
|
|
|
32
31
|
|
|
@@ -124,7 +124,7 @@ async def main(uid: int):
|
|
|
124
124
|
playwright: Playwright = await async_playwright().start()
|
|
125
125
|
pyr = Client(uid)
|
|
126
126
|
try:
|
|
127
|
-
await pyr.start(playwright,
|
|
127
|
+
await pyr.start(playwright, False)
|
|
128
128
|
|
|
129
129
|
dest, amount, cur = "P79619335", 2, "RUB"
|
|
130
130
|
|
|
@@ -151,4 +151,4 @@ async def main(uid: int):
|
|
|
151
151
|
|
|
152
152
|
|
|
153
153
|
if __name__ == "__main__":
|
|
154
|
-
run(main(
|
|
154
|
+
run(main(1779829771))
|
|
@@ -8,7 +8,14 @@ import time
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
async def login(agent: PmAgent):
|
|
11
|
-
|
|
11
|
+
options = uc.ChromeOptions()
|
|
12
|
+
options.add_argument("--disable-blink-features=AutomationControlled")
|
|
13
|
+
options.add_argument("--no-sandbox")
|
|
14
|
+
options.add_argument("--disable-dev-shm-usage")
|
|
15
|
+
options.add_argument("--window-size=1920,1080")
|
|
16
|
+
options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
|
|
17
|
+
|
|
18
|
+
driver = uc.Chrome(options=options, headless=True)
|
|
12
19
|
wait = WebDriverWait(driver, timeout=10)
|
|
13
20
|
try:
|
|
14
21
|
driver.get("https://payeer.com/en/auth")
|
|
@@ -22,7 +29,10 @@ async def login(agent: PmAgent):
|
|
|
22
29
|
login_button = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "login-form__login-btn.step1")))
|
|
23
30
|
login_button.click()
|
|
24
31
|
time.sleep(4)
|
|
25
|
-
|
|
32
|
+
try:
|
|
33
|
+
login_button.click()
|
|
34
|
+
except Exception:
|
|
35
|
+
pass
|
|
26
36
|
time.sleep(1)
|
|
27
37
|
if (v := driver.find_elements(By.CLASS_NAME, "form-input-top")) and v[0].text == "Введите проверочный код":
|
|
28
38
|
code = input("Email code: ")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|