8 require_once(
"ChPmtProvider.php");
10 define(
'TUCO_MODE_LIVE', 1);
11 define(
'TUCO_MODE_TEST', 2);
13 define(
'TUCO_PAYMENT_METHOD_CC',
'CC');
14 define(
'TUCO_PAYMENT_METHOD_CK',
'CK');
15 define(
'TUCO_PAYMENT_METHOD_AL',
'AL');
16 define(
'TUCO_PAYMENT_METHOD_PPI',
'PPI');
28 $this->_bRedirectOnResult =
true;
30 $this->_sDataReturnUrl = $this->_oConfig->getDataReturnUrl() . $this->_sName .
'/';
39 'demo' => $bTest ?
'Y' :
'',
40 'merchant_order_id' => $iPendingId,
41 'total' => sprintf(
"%.2f", (
float)$aCartInfo[
'items_price']),
42 'currency_code' => $aCartInfo[
'vendor_currency_code'],
43 'pay_method' => $this->
getOption(
'payment_method'),
44 'x_receipt_link_url' => $this->_sDataReturnUrl . $aCartInfo[
'vendor_id']
48 foreach($aCartInfo[
'items']
as $aItem) {
49 $aFormData[
'li_' .
$iIndex .
'_type'] =
'product';
50 $aFormData[
'li_' .
$iIndex .
'_name'] = $aItem[
'title'];
51 $aFormData[
'li_' .
$iIndex .
'_price'] = $aItem[
'price'];
52 $aFormData[
'li_' .
$iIndex .
'_quantity'] = $aItem[
'quantity'];
53 $aFormData[
'li_' .
$iIndex .
'_tangible'] =
'N';
58 $sActionURL =
'https://' . ($bTest ?
'sandbox' :
'www') .
'.2checkout.com/checkout/purchase';
59 Redirect($sActionURL, $aFormData,
'post', $this->_sCaption);
76 if(
empty($this->_aOptions) && isset($aData[
'merchant_order_id']))
79 if(
empty($this->_aOptions))
80 return array(
'code' => 2,
'message' =>
_t(
'_payment_2co_err_no_vendor_given'));
87 $aPending = $this->_oDb->getPending(array(
'type' =>
'id',
'id' => (
int)
$aResult[
'pending_id']));
88 if(!
empty($aPending[
'order']) || !
empty($aPending[
'error_code']) || !
empty($aPending[
'error_msg']) || (
int)$aPending[
'processed'] != 0)
89 return array(
'code' => 6,
'message' =>
_t(
'_payment_2co_err_already_processed'));
91 $this->_oDb->updatePending((
int)
$aResult[
'pending_id'], array(
92 'order' => $aData[
'order_number'],
100 if(
empty($aData[
'order_number']) ||
empty($aData[
'total']) ||
empty($aData[
'key']) ||
empty($aData[
'merchant_order_id']))
101 return array(
'code' => 3,
'message' =>
_t(
'_payment_2co_err_no_data_given'));
105 $iPendingId = (int)$aData[
'merchant_order_id'];
107 if($aData[
'key'] != $this->
_generateKey($sOrder, $sAmount))
108 return array(
'code' => 4,
'message' =>
_t(
'_payment_2co_err_wrong_key'),
'pending_id' => $iPendingId);
110 $aPending = $this->_oDb->getPending(array(
'type' =>
'id',
'id' => $iPendingId));
111 if((
float)$sAmount != (float)$aPending[
'amount'])
112 return array(
'code' => 5,
'message' =>
_t(
'_payment_2co_err_wrong_payment'),
'pending_id' => $iPendingId);
120 'message' =>
_t(
'_payment_2co_msg_verified'),
121 'pending_id' => $iPendingId,
122 'payer_name' =>
_t(
'_payment_txt_buyer_name_mask', $sBuyerFirstName, $sBuyerLastName),
123 'payer_email' => $sBuyerEmail
131 $sKey = $this->
getOption(
'secret_word') . $this->
getOption(
'account_id') . $sOrder . $sAmount;
132 return strtoupper(md5($sKey));