fintech-fab / mcom
此包已被弃用且不再维护。没有建议的替代包。
MCom 支付组件
dev-master
2015-04-03 09:25 UTC
This package is not auto-updated.
Last update: 2022-02-01 12:42:37 UTC
README
要求
- php >=5.5.0
- MySQL 数据库
- composer
安装
Composer
"repositories": [
{
"url": "git remote add origin https://github.com/fintech-fab/mcom.git",
"type": "git"
}
],
"require": {
"fintech-fab/mcom": "dev-master"
}
composer update
使用
初始化购买请求
use FintechFab\Payments\RuRuPayment\RuRuPayment; $secretKey = 'секретный ключ'; // ID продавца $spId = 1234; // задаем URL сервиса, для тестового запроса это не обязательно, в классе прописан тестовый шлюз $apiUrl = 'http://serviceurl'; // создаем объект с параметрами секретного ключа, ID пользователя и URL сервиса $ruRuPayment = new RuRuPayment($spId, $secretKey, $apiUrl); // установим уникальный номер транзакции по времени $transactionId = time(); $phone = '9031111111'; //10 цифр $info = 'тестовый товар'; $account = $phone; // номер счета клиента, может быть например номером телефона $amount = 1000; // 10 рублей, сумма в копейках // ID продукта, зарегистрированного для данного продавца в RuRu $productId = 3922; // инициируем запрос на оплату $ruRu = $ruRuPayment->doPaymentRequest($transactionId, $phone, $productId, $info, $account, $amount);
响应后,我们得到 RuRuInitRequest 对象,它有 isError()、getError()、getErrorMessage() 方法。应检查是否有错误发生,并适当地处理错误。
如果一切顺利,则会在 RuRu URL 上收到配置的回调,应该有一个以下处理器
use FintechFab\Payments\RuRuPayment\RuRuPayment; use FintechFab\Payments\RuRuPayment\RuRu; $secretKey = 'секретный ключ'; $spId = 1234; $ruRuPayment = new RuRuPayment($spId, $secretKey); // обрабатываем пришедший коллбэк $result = $ruRuPayment->doProcessCallback(); // убедимся, что коллбэк обработан, и что не возникло ошибок (например, ошибка ЭЦП) // также следует проверять данные (ID транзации и прочее) согласно требованиям ТСП if ($result->isProcessed() && !$result->isError()) { // отвечаем на коллбэк что все ОК $response = $result->doCallbackResponseSuccess('тестовая оплата успешно');//текст от ТСП, который в случае если запрос успешный будет (по желанию ТСП) передан клиенту } else { // отвечаем на коллбэк ошибкой, следует определять конкретную ошибку и указывать ее код (из констант класса RuRu) в ответе // код ошибки следует определять для каждого случая отдельно $response = $result->doCallbackResponseError(FintechFab\Payments\RuRuPayment\RuRu::ERROR_UNKNOWN, 'error unknown'); } // всегда следует отправить в ответ $response, т.к. методы doCallback*() возвращают текст ответа, но не отвечают сами. echo $response; // если ошибка при обработке, получим данные об ошибке для логирования if($result->isError){ // код ошибки $error = $result->getError(); // сообщение об ошибке $errorMessage = $result->getErrorMessage(); // информация о curl запросе $curlInfo = $result->getCurlInfo(); // массив с параметрами запроса $curlParameters = $result->getCurlParameters(); // текст ответа на запрос $curlResponse = $result->getCurlResponse(); }
在正常情况下,会收到 2 个回调:init 和 payment,如果 payment 响应为 "错误",则会收到 cancelinit 回调。应按名称或类处理所有回调
$result = $ruRuPayment->doProcessCallback(); // проверим, нет ли ошибки action запроса if($result->isActionError()){ // ответим ошибкой action запроса echo $result->doCallbackActionError(); return; } switch($result->action) { case 'init': // обработаем init, т.е. проверим что мы отправляли такой запрос и подтвердим его // тут проверяем ошибки isError(), проверяем данные и так далее, отвечаем успехом или ошибкой break; case 'payment': // обработаем payment, т.е. обработаем сообщение, что клиент упсешно оплатил товар/услугу // тут проверяем ошибки isError(), проверяем данные и так далее, отвечаем успехом или ошибкой break; case 'cancelinit': // обработаем cancelinit, т.е. пометим запрос как не удавшийся (например, позже потребуется его переслать заново) // тут проверяем ошибки isError(), проверяем данные и так далее, отвечаем успехом или ошибкой break; default: // выше показан пример, когда еще до switch проверяется action запроса, тогда default не потребуется echo $result->doCallbackActionError(); }
如果需要发送关于操作状态的 Notice 通知,所有操作都在 RuRuNoticeRequest::OPERATION_ 常量中可用
$result = $ruRuPayment->doNoticeRequest($transactionId, $ruRuTransactionId, RuRuNoticeRequest::OPERATION_COMPLETE);
响应后,我们得到 RuRuNoticeRequest 对象,它有 isError()、getError()、getErrorMessage() 方法。应检查是否有错误发生,并适当地处理错误。
在 doNoticeRequest() 中还可以传递以下参数
dt 日期时间,字符串 yyyy-mm-dd hh:mm:ss receiver 收款人,字符串码钱渠道 /0-9A-Za-z_/ account 收款人识别字符串,例如电话号码或隐藏的卡号或姓名,unistream rate 手续费大小 float 00000.00