www.gusucode.com > iWebshop开源PHP商城系统 v2.8源码程序 > iwebshop/classes/paymentplugin.php

    <?php
/**
 * @copyright Copyright(c) 2011 jooyea.cn
 * @file paymentplugin.php
 * @brief 支付插件基类
 * @author chendeshan
 * @date 2013/5/7 20:07:59
 * @version 1.0.0
 */

 /**
 * @class PaymentPlugin
 * @brief 支付插件抽象类
 */
abstract class paymentPlugin
{
	public $method            = "post";//表单提交模式
	public $name              = null;  //支付插件名称
	public $version           = 1.0;   //版本
	public $callbackUrl       = '';    //支付完成后,回调地址
	public $serverCallbackUrl = '';    //异步通知地址

	/**
	* @brief 构造函数
	* @param $payment_id 支付方式ID
	*/
	public function __construct($payment_id)
	{
		//回调函数地址
		$this->callbackUrl       = IUrl::getHost().IUrl::creatUrl("/block/callback/_id/".$payment_id);

		//回调业务处理地址
		$this->serverCallbackUrl = IUrl::getHost().IUrl::creatUrl("/block/server_callback/_id/".$payment_id);
	}

	/**
	 * @brief 记录支付平台的交易号
	 * @param $orderNo string 订单编号
	 * @param $tradeNo string 交易流水号
	 * @return boolean
	 */
	protected function recordTradeNo($orderNo,$tradeNo)
	{
		$orderDB  = new IModel('order');
		$orderDB->setData(array('trade_no' => $tradeNo));
		return $orderDB->update('order_no = "'.$orderNo.'"');
	}

	/**
	 * @brief 开始支付
	 */
	public function doPay($sendData)
	{
echo <<< OEF
		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
		<html xmlns="http://www.w3.org/1999/xhtml">
			<head></head>
			<body>
				<p>please wait...</p>
				<form action="{$this->getSubmitUrl()}" method="{$this->method}">
OEF;
					foreach($sendData as $key => $item)
					{
echo <<< OEF
					<input type='hidden' name='{$key}' value='{$item}' />
OEF;
					}
echo <<< OEF
				</form>
			</body>
			<script type='text/javascript'>
				window.document.forms[0].submit();
			</script>
		</html>
OEF;
	}

	/**
	 * @brief 返回配置参数
	 */
	public function configParam()
	{
		return array(
			'M_PartnerId'  => '商户ID号',
			'M_PartnerKey' => '商户KEY密钥',
		);
	}

	/**
	 * 异步通知停止
	 */
	abstract public function notifyStop();

	/**
	 * 获取提交地址
	 * @return string Url提交地址
	 */
	abstract public function getSubmitUrl();

	/**
	 * 获取要发送的数据数组结构
	 * @param $payment array 要传递的支付信息
	 * @return array
	 */
	abstract public function getSendData($paymentInfo);

	/**
	 * 同步支付回调
	 * @param $ExternalData array  支付接口回传的数据
	 * @param $paymentId    int    支付接口ID
	 * @param $money        float  交易金额
	 * @param $message      string 信息
	 * @param $orderNo      string 订单号
	 */
	abstract public function callback($ExternalData,&$paymentId,&$money,&$message,&$orderNo);

	/**
	 * 同步支付回调
	 * @param $ExternalData array  支付接口回传的数据
	 * @param $paymentId    int    支付接口ID
	 * @param $money        float  交易金额
	 * @param $message      string 信息
	 * @param $orderNo      string 订单号
	 */
	abstract public function serverCallback($ExternalData,&$paymentId,&$money,&$message,&$orderNo);
}