Zgodnie z dokumentacją commerca powinniśmy po przyjęciu platności wywołać commerce_payment_redirect_pane_next_page a w przypadku odrzucenia commerce_payment_redirect_pane_previous_page

Comments

marcin.wosinek’s picture

StatusFileSize
new1.94 KB

Pierwsza próba. Wrzucam patcha, ale wydaje mi się że to jeszcze nie jest to zaimplementowane tak jak powinno.

arturro’s picture

W jakim celu to robisz? Pisząc moduł wzorowałem się na kodzie twórców commerce m.in. z Paypala, moduł działa i obsługuje co powinien.

marcin.wosinek’s picture

As of Drupal Commerce 1.0, when you receive a payment notification and create the associated payment transaction, you should also be calling one of two API functions designed to move the related order forward or backward in the checkout process. The checkout router was updated to permit customers returning to the checkout/%commerce_order/payment page to be redirected to the appropriate checkout page upon their eventual return.

Writing a payment method module

I dalej opisują wspomniane wyżej funkcje.

Brak odwołań objawił się przy pokazywaniu błędu związanego z brakiem billing information. Po wykonaniu się kodu

     	drupal_set_message(t('Please enable Billing information in CHECKOUT PANE.'), 'error');
	drupal_goto('checkout');
	return '';

Zrzucało z checkout na główną; a samo zamówienie zostawało zablokowane. Zamówienie nie wracało ze stanu "w trakcie płatności", i użytkownik nie ma do niego dostępu.

To jest drobiazg, nikt poza developerem nie powinien zobaczyć takiego błędu, ale myślę że przy okazji można to też obsłużyć. Zmiany w pliku commerce_payu.module są wg mnie ok.

Z kolei moje zmiany w includes/commerce_payu.inc są w tym momencie prawdopodobnie błędne. Jak testowałem kod nie było widać żadnego wpływu obecności funkcji na działanie.

Z tego co czytałem błąd może być nie deterministyczny, lub występować kiedy ktoś po skończeniu płatności nie otworzy strony na którą będzie przekierowany. Potrzebuje jeszcze o tym doczytać; potestuję i podzielę się informacjami.

marcin.wosinek’s picture

StatusFileSize
new2.13 KB

Myślę że rozumiem: przekierowania z 'commerce_payu_close_transaction' załatwiają sprawę - o ile 'commerce_payu/close_transaction' będzie otwarte przez usera.

Jeśli przekierowanie nie będzie otwarte - informacja o wyniku płatności trafia do nas na UrlOnline. Jeśli nie wywołamy w takiej sytuacji jednej z wyżej wymienionych funkcji - zlecenie zostanie w stanie 'w trakcie płatności' kiedy jest zablokowane dla usera i ukryte przed adminem. Rzadki, ale brzydki błąd.

w załączonym patchu:

  1. commerce_payu.module - kosmetyczna zmiana opisana w #3
  2. includes/commerce_payu.inc - wyeliminowanie przypadku opisanego wyżej
arturro’s picture

Assigned: marcin.wosinek » arturro
Status: Active » Needs work

1) Wrzucę zaraz.
2) Muszę to sprawdzić funkcja commerce_payu_online jest wołana offlineowo przez PayU a nie usera. Daj znać na priva

arturro’s picture

Status: Needs work » Needs review

Poprawiłem.

Zamówienia nie znikają, jeśli użytkownik nie wróci do sklepu zamówienie widoczne jest w zakładce: "SHOPPING CARTS"

SHOPPING CARTS
Checkout: Review - status podsumowanie, przed wysłaniem do payu
Checkout: Payment - status przy przejściu do payu

Użytkownik od czasu wyjścia ze sklepu aż do powrotu ma status Checkout: Payment. Dopiero po powrocie do sklepu commerce zmienia na pending, a samo zamówienie widoczne jest już w zakładce "ORDERS".

ORDERS
Pending - po powrocie
Processing - po opłaceniu

Jeśli tego nie zrobi zamówienie "wisi", natomiast PayU wysyła poprawne raporty. Dopisałem więc warunkowy kod zamykający. Jeśli:
zamówienie ma status: Checkout: Payment i wpłyneła cała kwota zamykam zamówienie. Używając dodatkowo reguły zmieniającej status po wpłacie otrzymamy Processing.

Przetestuj i zamykamy.

arturro’s picture

Status: Needs review » Closed (fixed)

Może komuś z drupalowców jednak zechce się choć potestować skoro dostaje moduł za darmo ;-)

Zamykam ze względu na brak odzewu.

marcin.wosinek’s picture

Przetestowałem: nie otworzyłem url od payu => a informacja o zakończeniu płatności trafiła do system. Patch zadziałał jak trzeba.

Zostaje wg. mnie umiejscowienia logiki podejmowania decyzji na podstawie danych przekazanych przez payu do urlpositive/urlnegative. Wg dokumentacji:

Adresy powrotu do Sklepu mają tylko charakter informacyjny, nie można na ich podstawie podejmować żadnych decyzji.

Myślę się tym zająć. Jak będę mieć coś gotowego dam znać.

arturro’s picture

Tego się tak nie robi, do tego służy adres online. Adresu powrotu są niepodpisane md5 i łatwe do spreparowania przez użytkownika.

pined’s picture

Witam,

A czy poprawna jest sytuacja jak po testowej transakcji zamówienie ląduje do "Shopping carts"
ze statusem "Płatność"?

Nie mogę znaleść nigdzie informacji jak sprawdzić czy transakcja przebiegła prawidłowo.
Czy po poprawnej autoryzacji zamówienie nie powinno trafiać do zakładki
"Zamówienia" ze statusem "Oczekujące".

Jeśli transakcję obsługuję za pomocą "Płatność przykłądowa" to zamówienie ląduje do zakładki "Zamówienia".

Pozdrawiam,
Mariusz