Skip to content

Commit d2a8109

Browse files
authored
Merge pull request #7 from lee-to/master
fixed currency, added nds, item types, fixed callback method
2 parents 65b93f0 + e7d49fa commit d2a8109

6 files changed

Lines changed: 43 additions & 13 deletions

File tree

wa-plugins/payment/unitpay/lib/config/settings.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,12 @@
2121
'description' => 'Скопируйте SECRET KEY со страницы проекта в системе Unitpay',
2222
'control_type' => 'input',
2323
'class' => 'keys',
24-
));
24+
),
25+
'unit_item_type' => array(
26+
'value' => 'commodity',
27+
'title' => 'Тип товара',
28+
'description' => '',
29+
'control_type' => 'input',
30+
'class' => 'keys',
31+
)
32+
);

wa-plugins/payment/unitpay/lib/unitpayPayment.class.php

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ public function payment($payment_form_data, $order_data, $auto_submit = false)
2727
$sum = $order->total;
2828
$account = $order->id . unitpayPayment::DELIMITER . $this->merchant_id;
2929
$desc = $order->description;
30+
$currencyCode = $order['currency'];
3031
$signature = hash('sha256', join('{up}', array(
3132
$account,
33+
$currencyCode,
3234
$desc,
3335
$sum,
3436
$secret_key
@@ -38,6 +40,7 @@ public function payment($payment_form_data, $order_data, $auto_submit = false)
3840
$view = wa()->getView();
3941
$view->assign('domain', $domain);
4042
$view->assign('public_key', $public_key);
43+
$view->assign('currency', $currencyCode);
4144
$view->assign('sum', $sum);
4245
$view->assign('account', $account);
4346
$view->assign('desc', urlencode($desc));
@@ -84,9 +87,10 @@ protected function callbackHandler($data)
8487
{
8588
if (!isset($data['params']) || !isset($data['method']) || !isset($data['params']['signature'])) {
8689
$result = array('error' => array('message' => 'Не переданы обязательные параметры запроса'));
90+
8791
return $this->returnJson($result);
8892
}
89-
93+
9094
$params = $data['params'];
9195
$method = $data['method'];
9296

@@ -116,7 +120,7 @@ protected function callbackHandler($data)
116120
public function pay($params)
117121
{
118122
$transaction_data = $this->formalizeData($params);
119-
123+
120124
$transaction_data = $this->saveTransaction($transaction_data, $params);
121125

122126
$result = $this->execAppCallback(self::CALLBACK_PAYMENT, $transaction_data);
@@ -133,7 +137,7 @@ public function formalizeData($params)
133137
{
134138
$transaction_data = parent::formalizeData($params);
135139
$transaction_data['order_id'] = $this->order_id;
136-
$transaction_data['amount'] = $params['sum'];
140+
$transaction_data['amount'] = $params['orderSum'];
137141
$transaction_data['native_id'] = $params['unitpayId'];
138142
$transaction_data['type'] = self::OPERATION_CAPTURE;
139143
$transaction_data['state'] = self::STATE_CAPTURED;
@@ -180,25 +184,25 @@ private function getCashItems($order)
180184
$orderProducts = array_map(function ($item) use ($currencyCode, $order) {
181185
$vat = 'none';
182186

183-
if (isset($order['tax_included']) && $order['tax_included']) {
184-
$vat = 'vat20';
187+
if (isset($item['tax_included']) && $item['tax_included'] && $item['tax_rate'] != "") {
188+
$vat = $this->getTaxRates($item['tax_rate']);
185189
}
186190

187191
return array(
188192
'name' => $item['name'],
189193
'count' => $item['quantity'],
190194
'price' => round($item['price'], 2),
191195
'currency' => $currencyCode,
192-
'type' => 'commodity',
196+
'type' => $this->unit_item_type,
193197
'nds' => $vat,
194198
);
195199
}, $order['items']);
196200

197201
if (isset($order['shipping']) && ($order['shipping'] > 0) && isset($order['shipping_name'])) {
198202
$vat = 'none';
199203

200-
if (isset($order['tax_included']) && $order['tax_included']) {
201-
$vat = 'vat20';
204+
if (isset($order['shipping_tax_included']) && $order['shipping_tax_included'] && $order['shipping_tax_rate'] != "") {
205+
$vat = $this->getTaxRates($order['shipping_tax_rate']);
202206
}
203207

204208
$orderProducts[] = array(
@@ -213,4 +217,22 @@ private function getCashItems($order)
213217

214218
return base64_encode(json_encode($orderProducts));
215219
}
220+
221+
private function getTaxRates($rate){
222+
switch (intval($rate)){
223+
case 10:
224+
$vat = 'vat10';
225+
break;
226+
case 20:
227+
$vat = 'vat20';
228+
break;
229+
case 0:
230+
$vat = 'vat0';
231+
break;
232+
default:
233+
$vat = 'none';
234+
}
235+
236+
return $vat;
237+
}
216238
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<div class="pay-button">
2-
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&account={$account}&signature={$signature}&desc={$desc}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
2+
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&currency={$currency}&account={$account}&signature={$signature}&desc={$desc}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
33
</div>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<div class="pay-button">
2-
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&account={$account}&signature={$signature}&desc={$desc}&customerPhone={$customerPhone}&customerEmail={$customerEmail}&cashItems={$cashItems}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
2+
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&currency={$currency}&account={$account}&signature={$signature}&desc={$desc}&customerPhone={$customerPhone}&customerEmail={$customerEmail}&cashItems={$cashItems}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
33
</div>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<div class="pay-button">
2-
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&account={$account}&signature={$signature}&desc={$desc}&customerEmail={$customerEmail}&cashItems={$cashItems}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
2+
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&currency={$currency}&account={$account}&signature={$signature}&desc={$desc}&customerEmail={$customerEmail}&cashItems={$cashItems}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
33
</div>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<div class="pay-button">
2-
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&account={$account}&signature={$signature}&desc={$desc}&customerPhone={$customerPhone}&cashItems={$cashItems}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
2+
<a href="https://{$domain}/pay/{$public_key}?sum={$sum}&currency={$currency}&account={$account}&signature={$signature}&desc={$desc}&customerPhone={$customerPhone}&cashItems={$cashItems}" style="background-color: #ffa500; padding: 10px 20px; color: white">Оплатить</a>
33
</div>

0 commit comments

Comments
 (0)