ironkeith / moneris-eselectplus-api

一种更简洁的方式来访问Moneris eSELECTplus API。

0.3.1 2020-06-30 15:51 UTC

This package is not auto-updated.

Last update: 2024-10-01 19:28:39 UTC


README

Moneris为eSelectPlus提供的PHP API非常混乱,它像游行中的糖果一样抛出警告。这是一个简单的替代方案,适合喜欢PHP5且讨厌错误的人。

注意:目前,我只为购买、验证、预授权、抓取和退款操作编写了支持。我还包括了对AVS/CVD验证的支持。

开始使用

第一步是设置配置,并获取Moneris网关对象。

$config = array(
	'api_key' => 'yesguy',
	'store_id' => 'store1',
	'environment' => Moneris::ENV_TESTING
);
$moneris = Moneris::create($config);

配置中还有一些实用的可选参数。

$config = array(
	'api_key' => 'yesguy',
	'store_id' => 'store1',
	'environment' => Moneris::ENV_TESTING,
	// optional:
	'require_avs' => true, // default: false
	'avs_codes' => array('A','B', 'D', 'M', 'P', 'W', 'X', 'Y', 'Z'), // default
	'require_cvd' => true, // default: true
	'cvd_codes' => array('M', 'Y', 'P', 'S', 'U') // default
);

进行购买非常直接。

// set up $moneris like we did ^^ up there
$params = array(
	'cc_number' => '4242424242424242',
	'order_id' => 'test' . date("dmy-G:i:s"),
	'amount' => '20.00',
	'expiry_month' => date('m', $time),
	'expiry_year' => date('y', $time)
);
$result = $moneris->purchase($params);

结果对象会告诉你一切如何进行。

$result->was_successful(); // did the transaction work?
$result->failed_avs(); // did the transaction pass the AVS check?
$result->failed_cvd(); // did the transaction pass the CVD check?
$result->error_message(); // if something went wrong, what was it?

一个常见的流程可能看起来像这样。

$errors = array();
$result = $moneris->purchase($params);

if ($result->was_successful()) {
	// HOORAY! Party like it's 1999.
} else {
	$errors[] = $result->error_message();
}

但是有一个注意事项!如果交易失败AVS/CVD,你仍然需要将其作废!一个简单的解决方案是首先验证卡片!

$errors = array();
$verification_result = $moneris->verify($params);

if ($verification_result->was_successful() && $verification_result->passed_avs() && $verification_result->passed_cvd()) {
	
	$purchase_result = $moneris->purchase($params);

	if ($purchase_result->was_successful()) {
		// HOORAY! Party like it's 1999.
	} else {
		$errors[] = $result->error_message();
	}
	
} 

或者

$errors = array();
$purchase_result = $moneris->purchase($params);

if ($purchase_result->was_successful() && ( $purchase->failed_avs() || $purchase_result->failed_cvd() )) {
	$errors[] = $purchase_result->error_message();
	$void = $moneris->void($purchase_result->transaction());
} else if (! $purchase_result->was_successful()) {
	$errors[] = $purchase_result->error_message();
} else {
	// OMG we're rich!
}

您可以通过交易对象查看交易详情。

$result = $moneris->purchase($params);
$transaction = $result->transaction();

您可以从中了解一些有趣的内容,以及看到Moneris返回的XML。

$transaction->number(); // receipt->TransID from the Moneris XML response
$transaction->amount(); // amount processed
$transaction->response(); // the SimpleXMLElement from the parsed Moneris response.

抓取、作废和退款方法都可以接受交易对象作为第一个参数。

$result = $moneris->purchase($params);
$moneris->refund($result->transaction()); // refund the full purchase
$moneris->refund($result->transaction(), null, '5.00'); // refund $5.00
// OR
$moneris->refund($result->transaction()->number(), $params['order_id'], $params['amount']); // refund the full purchase
$moneris->refund($result->transaction()->number(), $params['order_id'], '5.00'); // refund $5.00

$result = $moneris->preauth($params);
$moneris->capture($result->transaction());
// OR
$moneris->capture($result->transaction()->number(), $params['order_id'], $params['amount']);

$result = $moneris->purchase($params);
$moneris->void($result->transaction());
// OR
$moneris->void($result->transaction()->number(), $params['order_id']);

如果您有任何问题,请告诉我。在Twitter上关注@ironkeith。