Jump to content
  • 0

Dodawanie wartości do skarbonki w Nexus


Go to solution Solved by Spanner,

Question

Cześć, rozszerzam funkcję Nexus o dodawanie pln do skarbonki, nie mogę znaleźć zbytnio przejrzystego sposobu użycia tak abym go zrozumiał, użyłem takiego kodu:

$credits = \IPS\nexus\Customer::loggedIn()->cm_credits;
$credits[ 'USD' ]->amount = $credits[ 'USD' ]->amount->subtract( new \IPS\Math\Number( number_format( $b[$api->data->number], \IPS\nexus\Money::numberOfDecimalsForCurrency( 'USD' ), '.', '' ) ) );
\IPS\nexus\Customer::loggedIn()->cm_credits = $credits;
\IPS\nexus\Customer::loggedIn()->save();

gdzie $b[$api->data->number] przyjmuje wartości typu "0.51", "1.20" itp, wszystko pięknie się dodaje ale z nawiasami:

image.png.068fe66f101269f805e666ae61ea1335.png

Edited by X3nO
Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Okej, moje rozwiązanie nie przewiduje opcji wybrania waluty, w jaki sposób mogę pobrać domyślną wartość?

Link to post
Share on other sites
  • 0

Okej, dzięki wielkie, szukam jeszcze opcji płacenia za produkty za pomocą tej waluty, jest w ogóle taka opcja dostępna w Nexus?


Wysłane z iPhone za pomocą Tapatalk

Link to post
Share on other sites
  • 0
  • Administrator

jeśli masz dodaną walutę X w tym przypadku PLN, to musisz ustawić cenę produktu w nexusie dla tej waluty. Jak na moim screenie ja mam na testowym forum 3 waluty i możesz kupować w każdej z nich

Link to post
Share on other sites
  • 0

Coś jest nie tak z dodawaniem środków do konta, mianowicie z PayPala gdy dodaje jest wszystko ok, ten kod:

$credits = \IPS\nexus\Customer::loggedIn()->cm_credits;
$credits[ \IPS\nexus\Customer::loggedIn()->defaultCurrency() ]->amount = $credits[ \IPS\nexus\Customer::loggedIn()->defaultCurrency() ]->amount->subtract( new \IPS\Math\Number( number_format( $b[$api->data->number], \IPS\nexus\Money::numberOfDecimalsForCurrency( \IPS\nexus\Customer::loggedIn()->defaultCurrency() ), '.', '' ) ) );
\IPS\nexus\Customer::loggedIn()->cm_credits = $credits;
\IPS\nexus\Customer::loggedIn()->save();

dodaje środki ale zapisuje się w złej formie, robiłeś już kiedyś podobny myk? 

Link to post
Share on other sites
  • 0
  • Administrator

Nie, bo od tego jest wbudowana funkcjonalność i nie bawiłem się tym. Ale jak dla mnie to tutaj masz błąd jakiś logiczny. Użyj lepiej zwykłego dodawania 2 Math\Number i tyle

Link to post
Share on other sites
  • 0

Okej, chyba rozumiem, pobieram wartość konta

\IPS\nexus\Customer::loggedIn()->cm_credits[\IPS\nexus\Customer::loggedIn()->defaultCurrency()]->amount

pokazuje jako liczba ujemna, abs() wyświetla jako "1", mnożenie *(-1) daje "-1", number_format kraczy błędem expects parameter 1 to be float, object given co do Math\Number, można gdzieś wyczytać na czym to polega?

Link to post
Share on other sites
  • 0
  • Administrator

Jeśli dobrze pamiętam to ten kod:

\IPS\nexus\Customer::loggedIn()->cm_credits[\IPS\nexus\Customer::loggedIn()->defaultCurrency()]->amount

zwraca Ci objekt \IPS\Math\Number, czyli robiesz:

$current = \IPS\nexus\Customer::loggedIn()->cm_credits[\IPS\nexus\Customer::loggedIn()->defaultCurrency()]->amount;
$current->add( new \IPS\Math\Number( XXXX ) );
\IPS\nexus\Customer::loggedIn()->cm_credits[\IPS\nexus\Customer::loggedIn()->defaultCurrency()] = $current;

a zamiast XXX wstawiasz kwotę, którą chcesz dodać

  • Thanks 1
Link to post
Share on other sites
  • 0

Dzięki wielkie za pomoc, okazało się że kod który miałem działał prawidłowo tylko moje niedopatrzenie i zamiast dodawać kwotę to odejmowało. Jesteś wielki!

Link to post
Share on other sites
Guest
This topic is now closed to further replies.
  • Dołącz do pierwszego newslettera Invision Community

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.