@@ -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}
0 commit comments