Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: API ProfitSMS
Forum PHP.pl > Forum > PHP
coolorzel
Witam.

Mam pytanko.
  1. <?php
  2. ################################################################################
  3. ###################
  4. #
  5. # ProfitSMS.pl
  6. # Przykładowy moduł autorzacji płatności dla usługi posiadającej przypisany 1 numer telefonu
  7. # Przykład 1 | wersja 0.1
  8. # 15 listopada 2011r.
  9. #
  10. ################################################################################
  11. ###################
  12.  
  13.  
  14. # klucz Api z serwisu www.profitsms.pl (zakładka Moje usługi)
  15. $apiKey = 'xxx';
  16.  
  17. function getStatus($url) {
  18. $curl = curl_init($url) ;
  19. curl_setopt( $curl, CURLOPT_URL , $url );
  20. curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
  21. $source = curl_exec( $curl );
  22. curl_close( $curl );
  23. } else {
  24. $source = file_get_contents($url);
  25. }
  26.  
  27. return $source;
  28. }
  29. ?>
  30. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  31. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  32. <head>
  33. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  34. <meta name="author" content="ProfitSMS.pl" />
  35.  
  36. <title>Płatność Premium SMS</title>
  37. </head>
  38. <body>
  39.  
  40.  
  41. <div style="width: 500px; padding: 15px; border:1px solid #ababab; margin: 0px auto;">
  42. <p style="font-size: 13px; text-align: center; margin: 0px;">
  43. Aby otrzymać kod wyślij sms<br /> na numer <strong>
  44.  
  45.  
  46. </strong><br /> o treści <strong>KGD.TEST</strong>.
  47.  
  48. </p>
  49. <br />
  50. <form style="text-align: center;" method="post">
  51.  
  52. <select name="numer">
  53. <option value="7055">7055</option>
  54. <option value="7136">7136</option>
  55. <option value="7255">7255</option>
  56. <option value="7355">7355</option>
  57. <option value="7455">7455</option>
  58. <option value="7555">7555</option>
  59. <option value="7636">7636</option>
  60. <option value="7936">7936</option>
  61. <option value="91455">91455</option>
  62. <option value="91955">91955</option>
  63. <option value="92555">92555</option>
  64. </select>
  65.  
  66. <p style="text-align: center;">
  67. Wprowadz otrzymany kod:<br />
  68. <input type="text" name="kod" style="width: 100px;" /> <input type="submit" name="ok" value="Ok" />
  69. </p>
  70. </form>
  71.  
  72. <?php
  73. # Sprawdzamy czy wysłano formularz
  74. if(isset($_POST['ok'])) {
  75. # Sprawdzamy czy nie otrzymaliśmy pustego kodu
  76. if(empty($_POST['kod'])) {
  77. echo '<p style="color: red; text-align: center;">Wprowadź otrzymany kod</p>';
  78. } else {
  79. # Pobieramy odpowiedź z serwera ProfitSMS w sprawie kodu sms otrzymanego od klienta
  80. $status = getStatus('http://profitsms.pl/check.php?apiKey='.$apiKey.'&code='.$_POST['kod'].'&smsNr='.$_POST['numer'],'r');
  81.  
  82. # Od 10.2011 API udostępnia dodatkowe informacje na temat przebiegu autoryzacji kodu od użytkownika, dlatego niezależnie od tego jakiej wersji używamy zawsze powinniśmy korzystać z pełnej obsługi API systemu
  83. # Przykładowa odpowiedź ma postać: 1|99 OK|5435454534534
  84. # Rozbijamy odpowiedź na poszczególne wartości
  85.  
  86. $raport = explode('|', $status);
  87.  
  88. # sprawdzamy odpowiedź serwera ProfitSMS - o powodzeniu autoryzacji danego kodu jesteśmy informowani w wartości oznaczonej jako "0" (pierwszy element tablicy, którą utworzyliśmy powyrzej)
  89. switch($raport['0']) {
  90. case 1:
  91. # kod prawidłowy
  92.  
  93. # Jeśli nasz kod jest poprawny:
  94. # - możemy wyswietlić użytkownikowi jakiś tekst:
  95. echo '<p style="color: green; text-align: center;">Poprawny kod</p>';
  96.  
  97. # - wysłać mu jakąś wiadomość na e-mail ( o ile w formularzu zadbamy o pobranie od użytkownika jego adres e-mail)
  98. # mail('adres@uzytkownika.pl', 'Temat wiadomosci' 'Tresc wiadomosci');
  99.  
  100. # - wykonać jakaś operacje na bazie danych np. przyznać wirtualne kredyty na zakup dodatkow do konta w grze czy profilu na stronie
  101. # mysql_query("UPDATE users SET points = '10' WHERE id = '43'");
  102. break;
  103.  
  104. case 0:
  105. # kod nieprawidłowy
  106. echo '<p style="color: red; text-align: center;">Błędny kod</p>';
  107. break;
  108.  
  109. default:
  110. echo 'Błąd serwera';
  111. break;
  112. }
  113.  
  114. # UWAGA !! Na czas testów zalecamy wyświetlanie pełnych raportów dostarczanych przez serwer ProfitSMS. W momencie aktywacji płatności dla użytkowników należy koniecznie pamiętać o dezaktywacji tej funkcji, poprzez dodanie "#" na początku linijki poniżej
  115. # echo '<p style="color: red; text-align: center;">'.$status.'</p>';
  116. }
  117. }
  118. ?>
  119.  
  120. <p style="font-size: 11px; margin-bottom: 10px;">
  121. Koszt wysyłki sms wynosi 1zł (1.23zł z VAT). Płatności sms w serwisie obsługuje <a href="http://www.profitsms.pl" title="ProfitSMS.pl - sprawdzone płatności premium sms">ProfitSMS.pl</a>. Regulamin usługi znajduje się na stronie operatora usługi. Wszelkie reklamacje można zgłaszać pod tym <a href="http://profitsms.pl/page/kontakt/reklamacje">adresem</a>. Kontakt z serwisem w sprawie płatności sms: platnosci@strona.pl
  122. </p>
  123.  
  124. </div>
  125.  
  126. </body>
  127. </html>


Jak zrobić do powyższego kodu, by zmieniało w tabeli users kolumny user_portfel dodawało odpowiednią ilość pieniędzy w zamian za SMS?

Z góry dziękuję. Pozdrawiam.
IProSoft
Masz przecież ładnie opisane:

  1. # - wykonać jakaś operacje na bazie danych np. przyznać wirtualne kredyty na zakup dodatkow do konta w grze czy profilu na stronie
  2. # mysql_query("UPDATE users SET points = '10' WHERE id = '43'");


Wstaw w tym meijscu update swojej bazy jak na przykładzie.
coolorzel
Cytat(IProSoft @ 1.03.2014, 08:43:28 ) *
Masz przecież ładnie opisane:

  1. # - wykonać jakaś operacje na bazie danych np. przyznać wirtualne kredyty na zakup dodatkow do konta w grze czy profilu na stronie
  2. # mysql_query("UPDATE users SET points = '10' WHERE id = '43'");


Wstaw w tym meijscu update swojej bazy jak na przykładzie.



OK. Ustawiłem, aby pobierało samemu ID usera, ale nie wiem jak zrobić funkcję do tego, by przekazywała x piieniędzy w zależności jaki nr wybierze


Zrobiłem takie coś:

Kod
function wpln() {
        if($_POST['numer'] == 7055) {
        echo '10';
        } else {
        echo'';
        }
        if($_POST['numer'] == 7136) {
        echo'15';
        } else {
        echo'';
        }
        if($_POST['numer'] == 7255) {
        echo'20';
        } else {
        echo'';
        }
}
w pliku config.php

Kod
  mysql_query("UPDATE users SET user_portfel = user_portfel + wpln(); WHERE user_id = '{$user_data['user_id']}'");
w pliku index.php

Gdy zwróci wiadomość z poprawnym kodem, powinno dodać wpln, lecz tego nie robi.
markonix
Co to w ogóle za składnia? Podstawy się kłaniają.

Funkcja wpln jest bezużyteczna. Czemu? Pomijając samą składnie to właśnie przez to, że wyświetla zamiast zwracać wartości, nie użyjesz jej w ten sposób jak próbujesz w zapytaniu.
Zacznij od przepisania tej funkcji z użyciem return z użyciem argumentu $numer, a nie odwoływaniem się do tablicy $_POST i zwracaj int lub float, a nie liczby jako string.
Potem pójdziemy dalej.
gornik
Cytat(coolorzel @ 1.03.2014, 11:54:41 ) *
OK. Ustawiłem, aby pobierało samemu ID usera, ale nie wiem jak zrobić funkcję do tego, by przekazywała x piieniędzy w zależności jaki nr wybierze


Zrobiłem takie coś:

Kod
function wpln() {
        if($_POST['numer'] == 7055) {
        echo '10';
        } else {
        echo'';
        }
        if($_POST['numer'] == 7136) {
        echo'15';
        } else {
        echo'';
        }
        if($_POST['numer'] == 7255) {
        echo'20';
        } else {
        echo'';
        }
}
w pliku config.php

Kod
  mysql_query("UPDATE users SET user_portfel = user_portfel + wpln(); WHERE user_id = '{$user_data['user_id']}'");
w pliku index.php

Gdy zwróci wiadomość z poprawnym kodem, powinno dodać wpln, lecz tego nie robi.


  1. function wpln($numer) {
  2. if($numer == '7055' )
  3. $kredyt = 10;
  4.  
  5. if($numer == '7136' )
  6. $kredyt = 15;
  7.  
  8. if($numer =='7255' )
  9. $kredyt = 20;
  10.  
  11. return $kredyt;
  12.  
  13. }


  1. IF (isset($_POST['numer']))
  2. $numer = $_POST['numer'];
  3.  
  4. mysql_query("UPDATE users SET user_portfel = user_portfel + wpln($numer) WHERE user_id = '{$user_data['user_id']}'");


Nie chce mi się sprawdzac błędów w zapytaniu, masz prawie gotowca, główkuj w razie czego smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.