Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Affiliate API

Eingetragen von KiLLAH89 (181)
am 10.06.2016 - 17:38 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x oder neuer

Hallo liebe Community,

ich möchte gerne eine Übersicht der Statistiken von affilinet (http://affili.net) in meine Drupal-Seite einbringen. Dafür möchte ich gerne eine eigene Admin-Seite erstellen auf der die Statistiken ausgegeben werden.

Die Partner-ID und das Passwort soll aus einem Formular kommen, welches sich ebenfalls im Adminbereich befinden soll.

Vorgestellt habe mich mir das so:

Der Menüeintrag soll unter Konfiguration->Services zu finden sein. Dieser Eintrag soll den Titel "Affiliate" haben. Auf der Seite "Affiliate" sollten 2 Tabs zu sehen sein.

1. Tab -> Übersicht
2. Tab -> Login (das Formular zum Anmelden beim Affilinet-Server

Ich habe folgenden Code, aber leider keine Ahnung wie ich das in Drupal einbringen kann. Wenn ich ehrlich bin, habe ich in PHP kaum bis gar keine Erfahrung.

<?php

// Set webservice endpoints
define("WSDL_LOGON", "https://api.affili.net/V2.0/Logon.svc?wsdl");
define("WSDL_STATS", "https://api.affili.net/V2.0/PublisherStatistics.svc?wsdl");

// Set credentials
$username = ''; // the publisher ID
$password = ''; // the publisher web services password

// Send a request to the Logon Service to get an authentication token
$soapLogon = new SoapClient(WSDL_LOGON);
$token = $soapLogon->Logon(array(
    'Username'  => $username,
    'Password'  => $password,
    'WebServiceType' => 'Publisher'
));

// Set page setting parameters
$pageSettings = array(
    'CurrentPage' => 1,
    'PageSize' => 5,
);

// Set transaction query parameters
$startDate = strtotime("-2 weeks");
$endDate = strtotime("today");
$rateFilter = array(
    'RateMode' => 'PayPerSale',
    'RateNumber' => 1
);
$transactionQuery = array(
    'StartDate' => $startDate,
    'EndDate' => $endDate,
    'RateFilter' => $rateFilter,
    'TransactionStatus' => 'All',
    'ValuationType' => 'DateOfRegistration'
);

// Send a request to the Publisher Statistics Service
$soapRequest = new SoapClient(WSDL_STATS);
$response = $soapRequest->GetTransactions(array(
    'CredentialToken' => $token,
    'PageSettings' => $pageSettings,
    'TransactionQuery' => $transactionQuery
));

// Show response
print_r($response);

Ich hoffe jemand kann mir dabei helfen.

Liebe Grüße,

Marvin

‹ Soap Server erstellen HTML Forms in Drupa 8 Modulen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Marvin, Du musst ein Modul

Eingetragen von Hyp1 (1463)
am 11.06.2016 - 09:36 Uhr

Hi Marvin,

Du musst ein Modul machen, welches eine Admin Form(hook_admin) sowie einen Menüpunkt (hook_menu) unter System Settings definiert.
Schau hier:
https://www.drupal.org/node/206761
Darin kannst Du dann deinen SOAP Request machen und auswerten.

Gruss

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Robert, Danke für deine

Eingetragen von KiLLAH89 (181)
am 11.06.2016 - 12:41 Uhr

Hallo Robert,

Danke für deine Antwort. Wie ich in etwa ein Modul schreibe, weiß ich. Dazu gibt es genügend Anleitungen. Was ich allerdings nicht hinbekomme, ist der SOAP Request und die anschließende Auswertung.

Ich hoffe, dass mir dabei jemand helfen kann. Habe auch schon in viele verschiedene Module geschaut, aber bin daraus leider nicht schlau geworden.

Es gibt zwar ein WordPress plugin, welches meinen Wünschen entspricht, jedoch nutze ich Drupal und ich möchte nicht wegen einem Plugin das ganze System wechseln, zumal es für WordPress kein Rules und Views gibt. Was für mich den großen Unterschied zu Drupal ausmacht.

Ich habe auch schon in das WordPress Plugin reingeschaut, aber daraus werde ich ebenfalls nicht schlau. Wie schon gesagt, habe ich so gut wie keine Coding Erfahrungen.

Liebe grüße,

Marvin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ohne Coding wirst du nicht weit damit kommen

Eingetragen von ronald (3857)
am 12.06.2016 - 08:41 Uhr

Der SOAP-Request ist eine Serveranfrage, die eine Antwort zurückliefert.

Du kannst den Request aus dem Userprifil deines angemeldeten Users generieren und absetzen, und die Antwort in einen Block schreiben lassen.

Das kannst du leicht mit AJAX realisieren.

Aber ein bisschen code wirst du dafür schreiben müssen.
Einerseits ein bisschen JAVAScript/JQuery, andererseits die Vorbereitung dafür als PHP-Gerüst.

Du wirst kaum jemanden finden, der dir die Arbeit kostenlos abnimmt. Wir können dir nur die Richtung zeigen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Marvin, aus dem obigen

Eingetragen von Hyp1 (1463)
am 12.06.2016 - 09:39 Uhr

Hallo Marvin,

aus dem obigen Code geht hervor, dass Du den PHP SoapClient verwendest.
http://php.net/manual/de/class.soapclient.php
Schau mal in phpInfo(); ob auf dem Server das PHP SOAP Modul installiert ist.
Denn ohne das Server SOAP Modul wird der obige Code nicht funktionieren.

Gruss

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich habe es soweit

Eingetragen von KiLLAH89 (181)
am 13.06.2016 - 02:38 Uhr

Also ich habe es soweit hinbekommen. Was mich jedoch stört ist, dass ich es nicht schaffe ein Menüpunkt bzw Tab für meine Loginseite zu erstellen. Das Formular und die Ausgabe der Ergebnisse sollen getrennt angezeigt werden.

Also wie folgt:
Der Menüpunkt für die Übersichtsseite befindet sich in "Web-Dienste". Es soll noch ein Menüpunkt verfügbar sein, den ich direkt von der Übersichtsseite aufrufen kann (das Anmeldeformular).

Hier der Code:

<?php
/**
* Affilinet Admin settings
*/
require_once('affiliate_overview.api.inc');
require_once(
'affiliate_overview.admin.inc');

function
affiliate_overview_print_pre() {
}

function
affiliate_overview_init() {
 
drupal_add_css(drupal_get_path('module', 'affiliate_overview') . '/css/affiliate_overview.css');

  if(!isset(
$_COOKIE['affiliate_overview_affilinet_username_active'])) {
   
setcookie('affiliate_overview_affilinet_username_active', variable_get('affiliate_overview_affilinet_username'), time() + 3600 * 24 * 180, '/', false, false, false);
  }
  if (!isset(
$_COOKIE['Drupal_visitor_affiliate_overview_affilinet_username_active'])) {
   
user_cookie_save(array('affiliate_overview_affilinet_username_active'=>variable_get('affiliate_overview_affilinet_username')));
  }
  if (!isset(
$_SESSION['Drupal_visitor_affiliate_overview_affilinet_username_active'])) {
   
$_SESSION['Drupal_visitor_affiliate_overview_affilinet_username_active'] = variable_get('affiliate_overview_affilinet_username');
  }
}

function
affiliate_overview_permission() {
  return array(
   
'access affiliate overview' => array(
   
'title' => t('Access Affiliate overview'),
  ),
 
'access all affiliate overview' => array(
   
'title' => t('Access Affiliate overview configuration'),
  ),
);
}

function
affiliate_overview_menu() {
 
$items = array();

 
$items['admin/config/services/affiliate-overview'] = array(
   
'title' => t('Affiliate overview'),
   
'access arguments' => array('access affiliate overview'),
   
'page arguments'  => array(0),
   
'page callback' => 'affiliate_overview_GetPublisherSummary',
   
'type'  => MENU_NORMAL_ITEM,
  );
 
$items['admin/config/services/affiliate-overview/affilinet-login'] = array(
   
'title' =>  t('Affilinet login'),
   
'page callback' =>  'drupal_get_form',
   
'page arguments'  => array('affiliate_overview_affilinet_admin_config_form'),
   
'access arguments'  => array('access all affiliate overview'),
   
'type'  => MENU_DEFAULT_LOCAL_TASK,
  );

  return
$items;
}
function
affiliate_overview_affilinet_admin_config_form($form,&$form_state) {

 
$form['username'] = array(
   
'#type' => 'textfield',
   
'#title'  => t('Publisher-ID'),
   
'#default_value' => variable_get('affiliate_overview_affilinet_username'),
   
'#required' => TRUE
 
);
 
$form['password'] = array(
   
'#type' => 'textfield',
   
'#title' => t('Password'),
   
'#default_value'  => variable_get('affiliate_overview_affilinet_password'),
   
'#required' => TRUE
 
);

 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value'  => t('Submit'),
  );
  return
$form;
}

function
affiliate_overview_affilinet_admin_config_form_submit(&$form_state) {
 
variable_set('affiliate_overview_affilinet_username', $form_state['username']['#value']);
 
variable_set('affiliate_overview_affilinet_password', $form_state['password']['#value']);

 
drupal_set_message(t('Your configuration has been saved.'));
}

function
gerDate($value)
{
 
$year = substr($value, 0, 4);
 
$month = substr($value, 5, 2);
 
$day = substr($value, 8, 2);
  if(
$year > 2000)
  {
 
$value = $day.'.'.$month.'.'.$year;
  }
  else
  {
 
$value = "noch keine&nbsp;";
  }
  return
$value;
}

function
money($value)
{
  if(
$value < 1)
  {
   
$value = " - ";
  }
 
$value = str_replace('.',',',$value);
 
$value = $value.' &euro;';
  return
$value;
}

function
affiliate_overview_GetPublisherSummary($title) {

 
$result = _affiliate_overview_GetPublisherSummary();

 
ZEILE 117 => $output .= '<h2>Statistiken</h2>'; <= ZEILE 117
  $output
.= '<table style="width:100%;border:dotted gray 1px;" cellspacing="1">';
 
$output .= '<tr class="header">';
 
$output .= '<th colspan="2">Kontostand</th>';
 
$output .= '<th colspan="2">Umsatz der Vormonate</th>';
 
$output .= '<th>Auszahlungen</th>';
 
$output .= '<th colspan="2">Partnerschaften</th>';
 
$output .= '</tr>';
 
$output .= '<tr class="gerade">';
 
$output .= '<td class="rightgray">Best&auml;tigt</td>';
 
$output .= '<td class="rightgray bold confirmed">' . money($result->CurrentMonth->Confirmed) . '</td>';
 
$output .= '<td class="rightgray">Best&auml;tigt</td>';
 
$output .= '<td class="rightgray bold confirmed">' . money($result->PreviousMonths->Confirmed) . '</td>';
 
$output .= '<td class="rightgray bold other">' . gerDate($result->Payments->LastPayment) . '</td>';
 
$output .= '<td class="rightgray">Aktive:</td>';
 
$output .= '<td class="bold other center">' . $result->Partnerships->PartnershipsActive . '</td>';
 
$output .= '</tr>';
 
$output .= '<tr class="ungerade">';
 
$output .= '<td class="rightgray">Offen</td>';
 
$output .= '<td class="rightgray bold open">' . money($result->CurrentMonth->Open) . '</td>';
 
$output .= '<td class="rightgray">Offen</td>';
 
$output .= '<td class="rightgray bold open">' . money($result->PreviousMonths->Open) . '</td>';
 
$output .= '<td class="rightgray bold other">' . money($result->Payments->TotalPayment) . '</td>';
 
$output .= '<td class="rightgray">Wartend:</td>';
 
$output .= '<td class="bold other center">' . $result->Partnerships->PartnershipsWaiting . '</td>';
 
$output .= '</tr>';
 
$output .= '<tr class="gerade">';
 
$output .= '<td class="rightgray">Storniert</td>';
 
$output .= '<td class="rightgray bold canceled">' . money($result->CurrentMonth->Cancelled) . '</td>';
 
$output .= '<td class="rightgray">Storniert</td>';
 
$output .= '<td class="rightgray bold canceled">' . money($result->PreviousMonths->Cancelled) . '</td>';
 
$output .= '<td>&nbsp;</td>';
 
$output .= '<td colspan="2">&nbsp;</td>';
 
$output .= '</tr>';
 
$output .= '<tr class="ungerade rightgray">';
 
$output .= '<td colspan="7"><a href="http://publisher.affili.net" target="_blank" title="publisher.affili.net"><b>&raquo; zum affilinet Publisher-Login</b></td>';
 
$output .= '</tr>';
 
$output .= '</table>';
  return
$output;
}
?>

Die Datei für die SOAP-Anfrage ist separat. Da steht aber nichts relevantes drin, nur die Anfrage, deswegen ist diese hier nicht als Code eingebunden.

Zudem bekomme ich eine Meldung:

Notice: Undefined variable: output in affiliate_overview_GetPublisherSummary() (Zeile 117 von /var/www/drupal7/sites/all/modules/affiliate_overview/affiliate_overview.module)

Kann mir dabei jemand helfen?

Liebe Grüße,

Marvin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Marvin. Du hast die

Eingetragen von Hyp1 (1463)
am 13.06.2016 - 09:30 Uhr

Hallo Marvin.

Du hast die Variable $output noch gar nicht definiert und möchtest einen String daran hängen.
Lass den Punkt in Zeile 117 weg, so definierst Du die Variable $output.
statt:

Zitat:

function affiliate_overview_GetPublisherSummary($title) {

$result = _affiliate_overview_GetPublisherSummary();

ZEILE 117 => $output .= '

Statistiken

'; <= ZEILE 117

machst Du (ohne Punkt):

Zitat:

$output = '

Statistiken

';

Das verstehe ich nicht ganz:

Zitat:

Also wie folgt:
Der Menüpunkt für die Übersichtsseite befindet sich in "Web-Dienste". Es soll noch ein Menüpunkt verfügbar sein, den ich direkt von der Übersichtsseite aufrufen kann (das Anmeldeformular).

Einen Menü Punkt kannst Du über den Menu Hook oder über die UI selbst erstellen.

Gruss

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Oh, so einfach :DAlso ich

Eingetragen von KiLLAH89 (181)
am 13.06.2016 - 13:34 Uhr

Oh, so einfach :D, Danke.

Also ich möchte in meinem Modul einen Menüpunkt unter "Admin->Config->Services" das klappt auch soweit. Nun möchte ich einen weiteren Menüpunkt unter "Admin->Config->Services->Mein Modul" als Tab. Es gibt bei einigen Modulen, wie z.B. Rules mehrere Tabs für verschiedene Einstellungen. Dort sollen dann in meinem Modul die Anmeldedaten für die SOAP-Abfrage eingetragen werden. Ich kann diese Seite zwar im Browser aufrufen, allerdings finde ich dafür keinen Tab. Habe es jetzt provisorisch mit 'type'  => MENU_LOCAL_ACTION, aber möchte gerne einen Tab haben.

Liebe Grüße,

Marvin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Marvin, also mir sieht der

Eingetragen von Hyp1 (1463)
am 13.06.2016 - 16:53 Uhr

Hi Marvin,

also mir sieht der Code in Deinem Menü Hook richtig aus.
Hast Du den Cache gelöscht nach der Code Änderung
oder rebuild_menu (devel modul) aufgerufen?

Schau mal hier (Rendering Menu Items As Tabs):
https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_menu/7.x
Könnte evtl. auch am Theme liegen, das die Tabs nicht gerendert werden.

Gruss

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Habe vieles probiert, leider

Eingetragen von KiLLAH89 (181)
am 15.06.2016 - 02:21 Uhr

Habe vieles probiert, leider ohne Erfolg

Trotzdem danke

Liebe Grüße,

Marvin

  • Anmelden oder Registrieren um Kommentare zu schreiben

wo fügst du diese Codes denn ein?

Eingetragen von ronald (3857)
am 15.06.2016 - 08:03 Uhr

Du wirst ein kleines eigenes Modul brauchen, bei dem du einen Block mit diesem Inhalt erzeugst.

Dann ist natürlich noch die Frage, wo der Aufruf die AffiliatID hernimmt.
Ich würde sie im Userprofil ablegen.

So bekommt jeder User einen individuellen Info-Block über seine Umsätze.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 4 Tagen
  • Hey danke
    vor 1 Woche 5 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 3 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 3 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 1 Tag
  • In der entsprechenden View
    vor 3 Wochen 1 Tag
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Tag
  • gelöst
    vor 5 Wochen 4 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 1 Benutzer und 17 Gäste online.

Benutzer online

  • C_Logemann

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association