geniv/nette-comgate
Composer 安装命令:
composer require geniv/nette-comgate
包简介
Comgate wrapper extension for Nette Framework
README 文档
README
Comgate payment gateway
inspired: https://github.com/renat-magadiev/comgate-client , https://github.com/LZaplata/Comgate
comgate info pdf: https://www.comgate.cz/files/informacni-brozura-comgate-payments.pdf
list test payment: https://portal.comgate.cz/cs/testovaci-platby
api: https://platebnibrana.comgate.cz/cz/protokol-api
need set in:
https://portal.comgate.cz/cs/propojeni-obchodu-detail/id/**XXmerchantIdXX**
- Url zaplacený
- Url zrušený
- Url nevyřízený
- Url pro předání výsledku platby
- Povolené IP adresy
thanks for code review: @AdamSmid
example url for production:
redirect url (GET redirect from Comgate):
https://example.cz/summary/result/${id}?refId=${refId}
status url (POST check from Comgate):
https://example.cz/summary/status
Installation
$ composer require geniv/nette-comgate
or
"geniv/nette-comgate": ">=1.0.0"
require:
"php": ">=7.0.0", "nette/nette": ">=2.4.0", "renat-magadiev/comgate-client": "^1.0"
Include in application
neon configure:
# comgate comgate: merchantId: "xxxyyy" secret: "******" sandbox: true
neon configure extension:
extensions: comgate: Comgate\Bridges\Nette\Extension
presenter create payment:
/** @var Comgate @inject */ public $comgate;
create payment:
try { // process Comgate $payment = $this->comgate->createPayment($values['order_price'] * 100, $values['order_id'], $values['email'], $game['name']); $payment->setPrepareOnly(true); $response = $this->comgate->sendResponse($payment); if ($response->isOk()) { // edit checkout_id $this->model->editItem($id, ['checkout_id' => $response->getTransId()]); $this->redirectUrl($response->getRedirectUrl()); } } catch (\Comgate\Exception\InvalidArgumentException $e) { Debugger::log($e); $this->redirect('error'); } catch (\Comgate\Exception\LabelTooLongException $e) { Debugger::log($e); $this->redirect('error'); }
status payment:
public function actionStatus() { $this->getHttpResponse()->setContentType('application/javascript'); $request = $this->getHttpRequest(); if ($request->isMethod('POST')) { $transId = $request->getPost('transId'); $status = $request->getPost('status'); if ($transId && $status) { $item = $this->model->getByCheckoutId($transId); if ($item) { if ($this->model->editItem((int) $item['id'], ['status' => $status, 'checkout_date%sql' => 'NOW()', 'active' => ($status == PaymentStatus::PAID)])) { $this->sendResponse(new ComgateResponse('code=0&message=OK')); } $this->sendResponse(new ComgateResponse('code=1&message=SAVE_ERROR')); } $this->sendResponse(new ComgateResponse('code=1&message=TRANS_ID_NOT_FOUND')); } $this->sendResponse(new ComgateResponse('code=1&message=MISSING_PARAMETERS')); } $this->sendResponse(new ComgateResponse('code=1&message=FAIL')); }
result payment:
public function actionResult(string $id, string $refId) { $item = $this->model->getByCheckoutId($id); if ($item) { if ($item['status'] == PaymentStatus::PAID) { //success } else { //danger } } $this->redirect('Homepage:'); }
geniv/nette-comgate 适用场景与选型建议
geniv/nette-comgate 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 332 次下载、GitHub Stars 达 1, 最近一次更新时间为 2018 年 08 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「nette」 「comgate」 「geniv」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 geniv/nette-comgate 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 geniv/nette-comgate 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 geniv/nette-comgate 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
统计信息
- 总下载量: 332
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-08-28