此包已被弃用且不再维护。没有建议的替代包。

MCom 支付组件

安装: 266

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 12

分支: 0

公开问题: 1

类型:服务

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