repox/quickpay

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

QuickPay API集成和简单的QuickPay支付窗口助手

dev-master 2013-04-19 07:28 UTC

This package is auto-updated.

Last update: 2023-09-26 09:11:09 UTC


README

此库将使您能够与QuickPay API进行通信。
文档可在此处找到:http://doc.quickpay.net/api.html

使用Composer安装

对于使用Composer安装,您应该需要这个

"repox/quickpay": "@dev"  

用法

如果您不是使用Composer或其他方式自动加载对象,当您需要时请确保包含对象文件

include 'Quickpay.php';

要使用对象,只需包含QuickPay对象文件并创建一个实例。
要创建实例,请确保您已经准备好了QuickPay ID和MD5密钥。
如果您尚未通过QuickPay管理器将您的服务器IP列入白名单,您还需要API密钥。

所有交易的金额均以最小单位书写。例如,1 EUR写成100。

// This instantiation example assumes that you have whitelisted your servers IP.
$qp = new Quickpay(11111111, '569ef72642be0fadd711d6a468d68ee1d6b3c0ad82178d0242a6b36339051ca2');

// This instantiation example assumes that you have NOT whitelisted your servers IP and need to make use of the API key as the third parameter.
$qp = new Quickpay(11111111, '569ef72642be0fadd711d6a468d68ee1d6b3c0ad82178d0242a6b36339051ca2', '3c0ad82182178d0242a69051c[...]b78d0242a6b3633');

启用测试模式

这非常简单。一旦创建了QuickPay对象的实例,只需执行以下操作

$qp->testmode(TRUE);

消息类型

假设您已经创建了QuickPay对象的实例,现在您可以与API通过所有可用的消息类型进行通信。

警告!
只有当您的设置通过了完整的PCI认证时,您才可以通过QuickPay API执行授权和订阅操作。请使用QuickPay支付窗口。
请参阅本文件的底部以查看使用QuickPay支付窗口的示例。

消息类型:授权

当商家想验证退款卡数据并授权交易时使用此消息类型。交易金额仅在持卡人账户中预留,并不会从账户中扣除 - 除非将autocapture字段设置为TRUE。

Quickpay::authorize( $ordernumber, $amount, $currency, $cardnumber, $expirationdate, $cvd[, $autocapture = FALSE] )

示例

// Authorize a payment and reserve the amount for later capture
$response = $qp->authorize($unique_ordernumber, '100', 'EUR', '4571123412341234', '0912', '123');

// Authorize a payment and reserve the amount and capture it immediatly (third parameter set to TRUE
$response = $qp->authorize($unique_ordernumber, '100', 'EUR', '4571123412341234', '0912', '123', TRUE);	

消息类型:订阅

类似于授权消息类型,当商家想验证退款卡数据时使用此消息类型。当商家想从订阅中提款时,此交易的ID将用作连续消息类型的参考。

Quickpay::subscribe( $ordernumber, $description, $cardnumber, $expirationdate, $cvd )

示例

// Add a subscription to a refund card
$response = $qp->subscribe(time(), 'Something', '4571123412341234', '0912', '123');

消息类型:连续

当商家想从订阅中提款时使用此消息类型。交易金额仅在持卡人账户中预留,并不会从账户中扣除 - 除非将autocapture字段设置为TRUE。

Quickpay::recurring( $ordernumber, $amount, $currency, $transaction, [$autocapture = FALSE] )

示例

// Reserve a amount to capture later
$response = $qp->recurring($unique_ordernumber, 1000, 'EUR', '21451214' );

// Reserve a amount to autocapture by setting the 5th parameter to TRUE
$response = $qp->recurring($unique_ordernumber, 1000, 'EUR', '21451214', TRUE );

消息类型:取消

当商家想取消订单时使用此消息类型。取消将删除持卡人账户上的预留。

Quickpay::cancel( $transaction )

示例

// Cancel a transaction
$response = $qp->cancel('21451214');

消息类型:续订

当商家想续订授权交易时使用此消息类型。

Quickpay::renew( $transaction )

示例

// Renew a transaction
$response = $qp->renew('21451214');

消息类型:捕获

当商家想从持卡人账户中转移部分或全部交易金额时使用此消息类型。

Quickpay::capture($transaction, $amount, [$finalize = FALSE])

示例

// Capture an amount for a transaction
$response = $qp->recurring('21451214', 1000);

// Capture an amount for a transaction and finalize the transctions (no more captures can done) by setting the third paramater to TRUE.
$response = $qp->recurring('21451214', 1000, TRUE);

消息类型:退款

当商家想续订授权交易时使用此消息类型。

Quickpay::refund($transaction, $amount)

示例

// This message type is used when the merchant wants to transfer part of or the entire transaction amount to the cardholders account.
$response = $qp->refund('21451214', 1000);

消息类型:状态

当商家想要检查交易状态时使用此消息类型。与其他消息类型不同的是,它还包含交易的记录。

Quickpay::status( $transaction )

示例

// Get status and transaction history for a transaction ID
$response = $qp->status('21451214');
	
// Get status and transaction history for a transaction from the ordernumber
$response = $qp->status_from_order('1234');		

响应

后续将进一步解释如何处理响应。

示例中的 $response 变量包含以下公共成员的对象

  • msgtype - 定义执行了哪个操作
  • ordernumber - 在初始请求中由商家指定的值。
  • amount - 请求中定义的金额,以最小单位表示。例如,1 EUR 写作 100。
  • balance - 已捕获的总金额。仅在状态请求中存在。
  • currency - 交易货币的3字母ISO 4217字母代码。更多信息请参阅 http://quickpay.net/features/multi-currency/
  • time - 处理消息的时间。格式为 YYMMDDHHIISS。
  • state - 交易当前的状态。更多信息请参阅 http://quickpay.net/faq/transaction-states/
  • qpstat - QuickPay 返回代码。更多信息请参阅 http://quickpay.net/faq/status-codes/
  • qpstatmsg - 如果有的话,包含错误和警告的详细信息。
  • chstat - 清算行的返回代码。请参阅收购商的文档。
  • chstatmsg - 清算行的消息,如果有的话,包含错误和警告的详细信息。
  • merchant - QuickPay 商家名称
  • merchantemail - QuickPay 商家的电子邮件/用户名。
  • transaction - 分配给当前交易的ID。
  • cardtype - 用于授权交易的卡类型。
  • cardnumber - 卡号的截断版本 - 例如,'XXXX XXXX XXXX 1234'。注意:对于除 'authorize' 和 'subscribe' 之外的消息类型,此字段将为空。
  • cardexpire - 在 'subscribe' 中使用的卡的过期日期。表示法为 'yymm'。注意:对于除 'subscribe' 之外的消息类型,此字段将为空。
  • splitpayment - 指示交易是否启用了分摊支付功能。
  • fraudprobability - 如果执行了欺诈检查,则欺诈概率。
  • fraudremarks - 如果执行了欺诈检查,则欺诈备注。
  • fraudreport - 如果报告为欺诈,则欺诈报告。
  • md5check - 用于确保数据完整性的MD5校验和。更多信息请参阅 http://quickpay.net/faq/md5check/
  • is_valid - 包含一个布尔值,指示响应是否有效且未被篡改。

注意
对于状态请求,响应对象中还有一个名为 history 的成员,它包含一个数组,其中包含这些成员的对象

  • msgtype
  • amount
  • state
  • time
  • qpstat
  • qpstatmsg
  • chstat

处理响应

处理请求响应的简单方法是要确保返回代码(qpstat)等于 '000',并且请求有效(is_valid)。如下所示

if( $response->qpstat == '000' && $response->is_valid )
{
	// The response is valid and the request was approved.
}
else
{
	//Something went wrong
	var_dump($response->qpstatmsg);
	var_dump($response->chstat);
	var_dump($response->chstatmsg);
}

QuickPay 支付窗口

为了避免PCI认证,您应使用QuickPay支付窗口解决方案。

在此处查看所有可用字段: http://doc.quickpay.net/paymentwindow/technicalspecification.html#index1h2

还实现了一个简单的辅助程序,用于创建必要的字段以及创建MD5校验和。
请参阅此示例

<?php

			
	$qp = new Quickpay(11111111, '569ef72642be0fadd711d6a468d68ee1d6b3c0ad82178d0242a6b36339051ca2');
	
	$data_fields['msgtype'] = 'authorize';	
	$data_fields['language'] = 'en';	
	$data_fields['ordernumber'] = time();	
	$data_fields['amount'] = '100';	
	$data_fields['currency'] = 'EUR';
	$data_fields['continueurl'] = 'http://quickpay.net/features/payment-window/ok.php';
	$data_fields['cancelurl'] = 'http://quickpay.net/features/payment-window/error.php';
	$data_fields['callbackurl'] = 'http://quickpay.net/features/payment-window/callback.php';

?>
<form action="https://secure.quickpay.dk/form/" method="post">
	<?php echo $qp->form_fields($data_fields); ?>
<input type="submit" value="Open Quickpay payment window" />

此示例创建带有必要输入字段的表单,并按下提交按钮将打开QuickPay支付窗口。

对于回调URL字段中提供的回调,您可以获取与API中使用的相同的响应对象。

<?php

			
	$qp = new Quickpay(11111111, '569ef72642be0fadd711d6a468d68ee1d6b3c0ad82178d0242a6b36339051ca2');
	
	$response = $qp->callback();	
	foreach($response as $key => $value)
	{
		$message .= "{$key}: {$value}\r\n";
	}
	mail('you@example.com', 'callbackurl', $message);		

?>

最后一个示例将响应处理为将接收到的数据通过邮件发送。
为了验证响应,按照API解决方案中提到的早期说明操作。