


Zencart zahlt nach der Bestellung, ähnlich wie bei der Änderung des Bestellpreises im Taobao-Backend.
Wenn Zencart Paypal zur Zahlung verwendet, kommt es zu verpassten Bestellungen, d. h. Paypal hat die Zahlung des Kunden erhalten, es liegt jedoch keine Bestellung des Kunden im Backend der Website vor. Der Hauptgrund für fehlende Bestellungen bei Paypal liegt darin, dass der Kunde, wenn er zur Paypal-Website springt und die Zahlung abschließt, das Fenster direkt schließt oder das Netzwerk instabil ist und nicht normal zur Website springt.
Es gibt mehrere Lösungen für das Problem verpasster Bestellungen bei Paypal:
1 Aktivieren Sie die Option „Detaillierte Einzelposten im Warenkorb“.
Prinzip: Aktivieren Sie die Option „Detaillierte Einzelposten im Warenkorb“ im zencart-Backend-Modul –> PayPal Website Payments Standard – IPN. Mit dieser Option werden alle Artikelinformationen Ihrer Bestellung an PayPal übertragen. Wenn der Kunde erfolgreich bezahlt, das Backend die Bestellung jedoch nicht erfolgreich generieren kann, können Sie auch sehen, welche Artikel der Kunde über die Transaktionsinformationen des PayPal-Kontos gekauft hat.
2. Verwenden Sie das Paypal Sessions Viewer-Plugin, um von Paypal verpasste Bestellungen abzurufen.
Prinzip: Wenn die Artikel im zencart-Einkaufswagen über Paypal bezahlt werden, werden alle Datensätze der Zahlung in der Tabelle paypal_session gespeichert. Wenn die Zahlung erfolgreich ist, springt die Paypal-Website zur Shopping-Website und an Wenn eine Bestellung generiert wird, löscht das zencart-System automatisch diesen paypal_session-Datensatz und generiert keine erfolgreiche Bestellung. Bei Verwendung von Paypal werden diese Zahlungsdatensätze immer gespeichert Mit dem Session Viewer-Plugin können Sie alle aufgezeichneten Daten anzeigen, einschließlich Kundeninformationen, Einkaufszeit und Produktinformationen. Wenn Sie sicher sind, dass die Zahlung eingegangen ist, können Sie diese paypal_session-Informationen in die Bestellung übertragen und eine Bestellung generieren.
Plug-in-Download-Adresse: http://www.zen-cart.cn/english-version-modules/admin-tools/paypal-sessions-viewer
3. Ändern Sie den Zahlungsvorgang, geben Sie zuerst eine Bestellung auf und bezahlen Sie dann.
Grundsatz: Jeder, der zen-cart verwendet hat, weiß, dass die Bestellschritte in zen-cart wie folgt sind (die Ausdrücke in [] sind nicht erforderlich):
1 🎜>
2. [Lieferart]3. Bestellbestätigung (Bestätigung)[Zahlung durch Dritte]6. Bestellabwicklung (Bezahlvorgang) – Dieser Schritt ist wichtiger, da hier die Informationen im Warenkorb in die Bestellung übernommen werdenBestellung erfolgreich (Bezahlvorgang erfolgreich)Unter normalen Umständen gibt es bei diesem Vorgang kein Problem. Im Prozess von Schritt 5 bis Schritt 6 denkt der Benutzer jedoch möglicherweise, dass die Zahlung erfolgreich war, und schließt die Webseite direkt, oder der Benutzer kann aus Netzwerkgründen möglicherweise nicht normal zur Seite „checkout_process“ springen Dies ist sehr schwerwiegend, da die Bestellung nicht normal erstellt werden kann. Basierend auf der obigen Analyse hoffen wir, den Prozess leicht zu ändern, d. h. die Bestellung wurde vor der Zahlung erstellt, sodass wir den Benutzer nicht bezahlen müssen, selbst wenn die Zahlung nicht von der Zahlungswebsite des Drittanbieters zurückgesprungen werden kann erfolgreich, aber im Hintergrund wird kein Fehler angezeigt. Der Status der Bestellung. Ich habe das Tutorial von Herrn Dongguo zum Ändern des Zen-Cart-Bestell- und Zahlungsprozesses befolgt, um fehlende Bestellungen zu vermeiden. Da dieses Tutorial relativ alt und nicht sehr umfassend ist, habe ich es auf meinen eigenen tatsächlichen Bedürfnissen basiert sollte es perfekter und detaillierter machen. Der geänderte Entwurf sieht im Wesentlichen wie folgt aus: 1 Nachdem Sie die Bestellung auf der Seite „checkour_confirmation“ bestätigt haben, gelangen Sie direkt zur Seite „account_history_info“, auf der Sie die Zahlungsseite aufrufen können. Wie im Bild unten gezeigt:
2. Wenn der Kunde zu diesem Zeitpunkt nicht zahlt, kann er auch sein eigenes Backend eingeben, um für historische Bestellungen zu bezahlen. Wie im Bild unten gezeigt:
3. Bei unbezahlten Bestellungen können Sie den Preis im Hintergrund ändern, wie Taobao, der Ladenbesitzer wird den Preis vor der Zahlung für Sie ändern. Wie in der Abbildung unten gezeigt:
Lassen Sie uns den Code formal ändern. Zuerst liste ich alle zu ändernden Dateien auf:
Da Sie zuerst eine Bestellung erstellen und dann bezahlen, ist der Zahlungsschritt ein Schritt mehr als zuvor. Um den Zahlungsvorgang zu vereinfachen, habe ich zuvor das Plug-in „Fast And Easy Checkout For Zencart“ installiert Wenn Sie dieses Plug-in installieren, müssen Sie ein weiteres Plug-in Css Js Loader für Zencart installieren, das ein abhängiges Plug-in des Fast-Payment-Plug-ins ist. Es besteht kein kausaler Zusammenhang zwischen der schnellen Zahlung und der Zahlung nach der Bestellung, Sie können es also ignorieren, wenn Sie es nicht installieren möchten.
Befolgen Sie die Schritte, um die oben aufgeführten Dateien zu ändern:
Zuerst müssen wir das vorhandene Zahlungsmodul umwandeln. Sie müssen der Zahlungsmethodenklasse ein Feld „paynow_action_url“ hinzufügen, um die Seiten-URL für die Zahlung darzustellen. Darüber hinaus müssen Sie eine Funktion „paynow_button($order_id)“ hinzufügen, um den versteckten Parameterfeldcode des Zahlungsformulars zu erhalten.
Um die Variable paynow_action_url hinzuzufügen, fügen Sie bitte den folgenden Code am Ende des Konstruktors der Klassenzahlung hinzu:
<span>if</span> ( (zen_not_null(<span>$module</span>)) && (<span>in_array</span>(<span>$module</span>.'.php', <span>$this</span>->modules)) && (<span>isset</span>(<span>$GLOBALS</span>[<span>$module</span>]-><span>paynow_action_url)) ) { </span><span>$this</span>->paynow_action_url = <span>$GLOBALS</span>[<span>$module</span>]-><span>paynow_action_url; }</span>
Um die Variable paynow_button($order_id) hinzuzufügen Funktion, Bitte fügen Sie nach der letzten Funktion der Zahlungsklasse den folgenden Code hinzu:
<span>function</span> paynow_button(<span>$order_id</span><span>){ </span><span>if</span> (<span>is_array</span>(<span>$this</span>-><span>modules)) { </span><span>if</span> (<span>is_object</span>(<span>$GLOBALS</span>[<span>$this</span>-><span>selected_module])) { </span><span>return</span><span>$GLOBALS</span>[<span>$this</span>->selected_module]->paynow_button(<span>$order_id</span><span>); } } }</span>
2. Nehmen Sie die PayPal-Zahlungsmethode als Beispiel, um die Implementierung zu erklären. Ändern Sie die Datei paypal.php direkt hier. Stellen Sie sicher, dass Sie diese Datei sichern. Der Code ist wie unten gezeigt. Sie können sehen, dass die Angabe von form_action_url hier entfernt und paynow_action_url angegeben wird. Da wir hoffen, dass der Benutzer nach dem Klicken auf „Bestellung bestätigen“ direkt in den Checkout-Prozess eintritt. Wenn form_action_url nicht angegeben ist, wird der Code angezeigt Das Formular zur Bestätigung der Bestellung wird direkt an die Seite checkout_process gesendet, und paynow_action_url ist der Wert der vorherigen form_action_url. Die Implementierung der paynow_button-Funktion ist ebenfalls sehr einfach. Hier haben wir lediglich den Inhalt der ursprünglichen Funktion „process_button()“ herausgeschnitten, aber anstatt die globale Variable $order zu verwenden, verwenden wir $order = new order($order_id), um An Objekt, das zur Vorbereitung der Anzeige der Schaltfläche „Jetzt bezahlen“ in historischen Bestellungen erstellt wurde. Die geänderte Datei von paypal.php lautet wie folgt:


<span> 1</span> <?<span>php </span><span>2</span><span>/*</span><span>* </span><span> 3</span><span> * paypal.php-Zahlungsmodulklasse für die PayPal Website Payments Standard (IPN)-Methode </span><span> 4</span><span> * </span><span> 5</span><span> * @package paymentMethod </span><span> 6</span><span> * @copyright Copyright 2003-2010 Zen Cart Development Team </span><span> 7</span><span> * @copyright Teile Copyright 2003 osCommerce </span><span> 8</span><span> * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 </span><span> 9</span><span> * @version $Id: paypal.php 15735 2010-03-29 07:13:53Z drbyte $ </span><span> 10</span><span>*/</span><span> 11</span><span> 12</span><span>define</span>('MODULE_PAYMENT_PAYPAL_TAX_OVERRIDE', 'true'<span> ); </span><span>13</span><span>14</span><span>/*</span><span>* </span><span> 15</span><span> * Stellen Sie sicher, dass Abhängigkeiten geladen werden </span><span> 16</span><span>*/</span><span> 17</span><span>include_once</span>((IS_ADMIN_FLAG === <span>true</span> ? DIR_FS_CATALOG_MODULES : DIR_WS_MODULES) . 'zahlung/paypal/paypal_functions.php'<span>); </span><span>18</span><span>19</span><span>/*</span><span>* </span><span> 20</span><span> * paypal.php-Zahlungsmodulklasse für die PayPal Website Payments Standard (IPN)-Methode </span><span>21</span><span> * </span><span>22</span><span>*/</span><span>23</span><span>Klasse</span> Paypal <span>verlängert</span><span> Basis { </span><span>24</span><span>/*</span><span>* </span><span> 25</span><span> * Zeichenfolge, die die Zahlungsmethode darstellt </span><span>26</span><span> * </span><span> 27</span><span> * @var string </span><span>28</span><span>*/</span><span>29</span><span>var</span><span>$code</span><span>; </span><span>30</span><span>/*</span><span>* </span><span> 31</span><span> * $title ist der angezeigte Name für diese Zahlungsmethode </span><span>32</span><span> * </span><span> 33</span><span> * @var string </span><span> 34</span><span>*/</span><span> 35</span><span>var</span><span>$title</span><span>; </span><span>36</span><span>/*</span><span>* </span><span> 37</span><span> * $description ist ein weicher Name für diese Zahlungsmethode </span><span>38</span><span> * </span><span> 39</span><span> * @var string </span><span> 40</span><span>*/</span><span> 41</span><span>var</span><span>$description</span><span>; </span><span>42</span><span>/*</span><span>* </span><span> 43</span><span> * $enabled bestimmt, ob dieses Modul im Katalog angezeigt wird oder nicht. </span><span>44</span><span> * </span><span> 45</span><span> * @var boolean </span><span> 46</span><span>*/</span><span> 47</span><span>var</span><span>$enabled</span><span>; </span><span>48</span><span>/*</span><span>* </span><span> 49</span><span> * Konstruktor </span><span>50</span><span> * </span><span> 51</span><span> * @param int $paypal_ipn_id </span><span> 52</span><span> * @return paypal </span><span> 53</span><span>*/</span><span> 54</span><span>Funktion</span> paypal(<span>$paypal_ipn_id</span> = ''<span>) { </span><span> 55</span><span>global</span><span>$order</span>, <span>$messageStack</span><span>; </span><span> 56</span><span>$this</span>->code = 'paypal'<span>; </span><span> 57</span><span>$this</span>->codeVersion = '1.3.9'<span>; </span><span> 58</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span><span>) { </span><span> 59</span><span>$this</span>->title = MODULE_PAYMENT_PAYPAL_TEXT_ADMIN_TITLE; <span>//</span><span>Titel des Zahlungsmoduls in Admin</span><span> 60</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span> && <span>definiert </span>('MODULE_PAYMENT_PAYPAL_IPN_DEBUG') && MODULE_PAYMENT_PAYPAL_IPN_DEBUG != 'Aus') <span>$this</span>->title .= '<span> (Debug-Modus aktiv)</span>'<span>; </span><span> 61</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span> && MODULE_PAYMENT_PAYPAL_TESTING == 'Test') <span>$this</span>->title . = '<span> (Entwicklungs-/Testmodus aktiv)</span>'<span>; </span><span> 62</span> } <span>else</span><span> { </span><span> 63</span><span>$this</span>->title = MODULE_PAYMENT_PAYPAL_TEXT_CATALOG_TITLE; <span>//</span><span>Titel des Zahlungsmoduls im Katalog</span><span> 64</span><span> }</span><span> 65</span><span>$this</span>->description =<span> MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION; </span><span> 66</span><span>$this</span>->sort_order =<span> MODULE_PAYMENT_PAYPAL_SORT_ORDER; </span><span> 67</span><span>$this</span>->enabled = ((MODULE_PAYMENT_PAYPAL_STATUS == 'True') ? <span>true</span> : <span>false</span><span>); </span><span> 68</span><span>if</span> ((int)MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID > 0<span>) { </span><span> 69</span><span>$this</span>->order_status =<span> MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID; </span><span>70</span><span> } </span><span> 71</span><span>if</span> (<span>is_object</span>(<span>$order</span>)) <span>$this</span>-><span> update_status(); </span><span> 72</span><span>$this</span>->paynow_action_url = 'https://' .<span> MODULE_PAYMENT_PAYPAL_HANDLER; </span><span> 73</span><span> 74</span><span>if</span> (PROJECT_VERSION_MAJOR != '1' && <span>substr</span>(PROJECT_VERSION_MINOR, 0, 3) != '3.9 ') <span>$this</span>->enabled = <span>false</span><span>; </span><span> 75</span><span> 76</span><span>//</span><span> Tabellenstruktur überprüfen</span><span> 77</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span>) <span>$this</span>-><span>tableCheckup(); </span><span> 78</span><span> } </span><span>79</span><span>/*</span><span>* </span><span> 80</span><span> * Berechnen Sie Zonenübereinstimmungen und Flaggeneinstellungen, um zu bestimmen, ob dieses Modul den Kunden angezeigt werden soll oder nicht </span><span>81</span><span> * </span><span> 82</span><span>*/</span><span> 83</span><span>Funktion</span><span> update_status() { </span><span> 84</span><span>global</span><span>$order</span>, <span>$db</span><span>; </span><span> 85</span><span> 86</span><span>if</span> ( (<span>$this</span>->enabled == <span>true</span>) && ( (int)MODULE_PAYMENT_PAYPAL_ZONE > 0<span>) ) { </span><span> 87</span><span>$check_flag</span> = <span>false</span><span>; </span><span> 88</span><span>$check_query</span> = <span>$db</span>->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_ZONE . " ' und zone_country_id = '" . <span>$order</span>->billing['country']['id'] . "' order by zone_id"<span>); </span><span> 89</span><span>while</span> (!<span>$check_query</span>-><span>EOF) { </span><span> 90</span><span>if</span> (<span>$check_query</span>->fields['zone_id'] < 1<span>) { </span><span> 91</span><span>$check_flag</span> = <span>true</span><span>; </span><span>92</span><span>Pause</span><span>; </span><span> 93</span> } <span>elseif</span> (<span>$check_query</span>->fields['zone_id'] == <span>$order</span>->billing ['zone_id'<span>]) { </span><span> 94</span><span>$check_flag</span> = <span>true</span><span>; </span><span>95</span><span>Pause</span><span>; </span><span> 96</span><span> } </span><span> 97</span><span>$check_query</span>-><span>MoveNext(); </span><span> 98</span><span> } </span><span>99</span><span>100</span><span>if</span> (<span>$check_flag</span> == <span>false</span><span>) { </span><span>101</span><span>$this</span>->enabled = <span>false</span><span>; </span><span>102</span><span> } </span><span>103</span><span> } </span><span>104</span><span> } </span><span>105</span><span>/*</span><span>* </span><span>106</span><span> * JS-Validierung, die eine Fehlerprüfung der Dateneingabe durchführt, wenn dieses Modul zur Verwendung ausgewählt ist </span><span>107</span><span> * (Nummer, Besitzer und CVV-Längen) </span><span>108</span><span> * </span><span>109</span><span> * @return string </span><span>110</span><span>*/</span><span>111</span><span>Funktion</span><span> javascript_validation() { </span><span>112</span><span>return</span><span>false</span><span>; </span><span>113</span><span> } </span><span>114</span><span>/*</span><span>* </span><span>115</span><span> * Zeigt den Namen der Zahlungsmethode zusammen mit den Eingabefeldern für Kreditkarteninformationen (falls vorhanden) auf der Zahlungsseite zur Kasse an </span><span>116</span><span> * </span><span>117</span><span> * @return-Array </span><span>118</span><span>*/</span><span>119</span><span>Funktion</span><span>selection() { </span><span>120</span><span>return</span><span>array</span>('id' => <span>$this</span>->code, <span>121</span> 'module' => MODULE_PAYMENT_PAYPAL_TEXT_CATALOG_LOGO, <span>122</span> 'icon' =><span> MODULE_PAYMENT_PAYPAL_TEXT_CATALOG_LOGO </span><span>123</span><span> ); </span><span>124</span><span> }</span><span>125</span><span>/*</span><span>* </span><span>126</span><span> * Bewertet normalerweise den Kreditkartentyp auf Akzeptanz und die Gültigkeit der Kreditkartennummer und des Ablaufdatums </span><span>127</span><span> * Da das Paypal-Modul keine Informationen sammelt, wird dieser Schritt einfach übersprungen. </span><span>128</span><span> * </span><span>129</span><span> * @return boolean </span><span>130</span><span>*/</span><span>131</span><span>Funktion</span><span> pre_confirmation_check() { </span><span>132</span><span>return</span><span>false</span><span>; </span><span>133</span><span> } </span><span>134</span><span>/*</span><span>* </span><span>135</span><span> * Kreditkarteninformationen auf der Checkout-Bestätigungsseite anzeigen </span><span>136</span><span> * Da vor der Weiterleitung an die PayPal-Seite keine Daten für PayPal erfasst werden, wird dies übersprungen </span><span>137</span><span> * </span><span>138</span><span> * @return boolean </span><span>139</span><span>*/</span><span>140</span><span>Funktion</span><span> Bestätigung() { </span><span>141</span><span>return</span><span>false</span><span>; </span><span>142</span><span> } </span><span>143</span><span>/*</span><span>* </span><span>144</span><span> * Erstellen Sie die Daten und Aktionen, die verarbeitet werden sollen, wenn auf dem Bestellbestätigungsbildschirm die Schaltfläche „Senden“ gedrückt wird. </span><span>145</span><span> * Dadurch werden die Daten zur Verarbeitung an das Zahlungsgateway gesendet. </span><span>146</span><span> * (Dies sind ausgeblendete Felder auf der Checkout-Bestätigungsseite) </span><span>147</span><span> * </span><span>148</span><span> * @return string </span><span>149</span><span>*/</span><span>150</span><span>Funktion</span><span>process_button() { </span><span>151</span><span>return</span><span>false</span><span>; </span><span>152</span><span> } </span><span>153</span><span>/*</span><span>* </span><span>154</span><span> * Bestimmen Sie die Sprache, die beim Besuch der PayPal-Website verwendet werden soll </span><span>155</span><span>*/</span><span>156</span><span>Funktion</span><span> getLanguageCode() { </span><span>157</span><span>global</span><span>$order</span><span>; </span><span>158</span><span>$lang_code</span> = ''<span>; </span><span>159</span><span>$orderISO</span> = zen_get_countries(<span>$order</span>->customer['country']['id'], <span>true</span><span>); </span><span>160</span><span>$storeISO</span> = zen_get_countries(STORE_COUNTRY, <span>true</span><span>); </span><span>161</span><span>if</span> (<span>in_array</span>(<span>strtoupper</span>(<span>$orderISO</span>['countries_iso_code_2']), <span>Array</span>('US', 'AU', 'DE', 'FR', 'IT', 'GB', 'ES', 'AT', 'BE', 'CA', 'CH' , 'CN', 'NL', 'PL'<span>))) { </span><span>162</span><span>$lang_code</span> = <span>strtoupper</span>(<span>$orderISO</span>['countries_iso_code_2'<span>]); </span><span>163</span> } <span>elseif</span> (<span>in_array</span>(<span>strtoupper</span>(<span>$storeISO</span>['countries_iso_code_2']), <span>Array</span>('US', 'AU', 'DE', 'FR', 'IT', 'GB', 'ES', 'AT', 'BE', 'CA', 'CH ', 'CN', 'NL', 'PL'<span>))) { </span><span>164</span><span>$lang_code</span> = <span>strtoupper</span>(<span>$storeISO</span>['countries_iso_code_2'<span>]); </span><span>165</span> } <span>elseif</span> (<span>in_array</span>(<span>strtoupper</span>(<span>$_SESSION</span>['linguals_code']), <span>Array</span>('EN', 'US', 'AU', 'DE', 'FR', 'IT', 'GB', 'ES', 'AT', 'BE', 'CA ', 'CH', 'CN', 'NL', 'PL'<span>))) { </span><span>166</span><span>$lang_code</span> = <span>$_SESSION</span>['linguals_code'<span>]; </span><span>167</span><span>if</span> (<span>strtoupper</span>(<span>$lang_code</span>) == 'EN') <span>$lang_code</span> = 'USA'<span>; </span><span>168</span><span> } </span><span>169</span><span>//</span><span>return $orderISO['countries_iso_code_2'];</span><span>170</span><span>return</span><span> strtoupper</span>(<span>$lang_code</span><span>); </span><span>171</span><span> } </span><span>172</span><span>/*</span><span>* </span><span>173</span><span> * Speichern Sie Transaktionsinformationen zur Bestellung und verarbeiten Sie alle Ergebnisse, die vom Zahlungsgateway zurückkommen </span><span>174</span><span>*/</span><span>175</span><span>Funktion</span><span> before_process() { </span><span>176</span><span>return</span><span>false</span><span>; </span><span>177</span><span> } </span><span>178</span><span>/*</span><span>* </span><span>179</span><span> * Überprüft den Referrer </span><span>180</span><span> * </span><span>181</span><span> * @param string $zf_domain </span><span>182</span><span> * @return boolean </span><span>183</span><span>*/</span><span>184</span><span>function</span> check_referrer(<span>$zf_domain</span><span>) { </span><span>185</span><span>return</span><span>true</span><span>; </span><span>186</span><span> }</span><span>187</span><span>/*</span><span>* </span><span>188</span><span> * Erstellen Sie Admin-Seitenkomponenten </span><span>189</span><span> * </span><span>190</span><span> * @param int $zf_order_id </span><span>191</span><span> * @return string </span><span>192</span><span>*/</span><span>193</span><span>function</span> admin_notification(<span>$zf_order_id</span><span>) { </span><span>194</span><span>global</span><span>$db</span><span>; </span><span>195</span><span>$output</span> = ''<span>; </span><span>196</span><span>$sql</span> = "select * from " . TABLE_PAYPAL . "wo order_id = '" . (int)<span>$zf_order_id</span> . "' order by paypal_ipn_id DESC LIMIT 1"<span>; </span><span>197</span><span>$ipn</span> = <span>$db</span>->Execute(<span>$sql</span><span>); </span><span>198</span><span>if</span> (<span>$ipn</span>->RecordCount() > 0 && <span>file_exists</span>(DIR_FS_CATALOG . DIR_WS_MODULES . 'Zahlung /paypal/paypal_admin_notification.php')) <span>require</span>(DIR_FS_CATALOG . DIR_WS_MODULES . ' payment/paypal/paypal_admin_notification.php'<span>); </span><span>199</span><span>return</span><span>$output</span><span>; </span><span>200</span><span> } </span><span>201</span><span>/*</span><span>* </span><span>202</span><span> * Nachbearbeitungsaktivitäten </span><span>203</span><span> * Wenn die Bestellung vom Prozessor zurückkommt und die PDT erfolgreich war, werden die Ergebnisse im Bestellstatusverlauf gespeichert und Daten zur späteren Bezugnahme protokolliert </span><span>204</span><span> * </span><span>205</span><span> * @return boolean </span><span>206</span><span>*/</span><span>207</span><span>Funktion</span><span> after_process() { </span><span>208</span><span>return</span><span>false</span><span>; </span><span>209</span><span> } </span><span>210</span><span>/*</span><span>* </span><span>211</span><span> * Wird zur Anzeige von Fehlermeldungsdetails verwendet </span><span>212</span><span> * </span><span>213</span><span> * @return boolean </span><span>214</span><span>*/</span><span>215</span><span>Funktion</span><span>output_error() { </span><span>216</span><span>return</span><span>false</span><span>; </span><span>217</span><span> } </span><span>218</span><span>/*</span><span>* </span><span>219</span><span> * Überprüfen Sie, ob das Modul installiert ist </span><span>220</span><span> * </span><span>221</span><span> * @return boolean </span><span>222</span><span>*/</span><span>223</span><span>Funktion</span><span> check() { </span><span>224</span><span>global</span><span>$db</span><span>; </span><span>225</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span><span>) { </span><span>226</span><span>global</span><span>$sniffer</span><span>; </span><span>227</span><span>if</span> (<span>$sniffer</span>->field_exists(TABLE_PAYPAL, 'zen_order_id')) <span>$db</span>->Execute ("ALTER TABLE " . TABLE_PAYPAL . " CHANGE COLUMN zen_order_id order_id int(11) NOT NULL default '0'"<span>); </span><span>228</span><span> } </span><span>229</span><span>if</span> (!<span>isset</span>(<span>$this</span>-><span>_check)) { </span><span>230</span><span>$check_query</span> = <span>$db</span>->Execute("wähle den Konfigurationswert aus " . TABLE_CONFIGURATION . " wobei der Konfigurationsschlüssel = 'MODULE_PAYMENT_PAYPAL_STATUS' ist"<span>); </span><span>231</span><span>$this</span>->_check = <span>$check_query</span>-><span>RecordCount(); </span><span>232</span><span> } </span><span>233</span><span>return</span><span>$this</span>-><span>_check; </span><span>234</span><span> } </span><span>235</span><span>/*</span><span>* </span><span>236</span><span> * Installieren Sie das Zahlungsmodul und seine Konfigurationseinstellungen </span><span>237</span><span> * </span><span>238</span><span>*/</span><span>239</span><span>Funktion</span><span> install() { </span><span>240</span><span>global</span><span>$db</span>, <span>$messageStack</span><span>; </span><span>241</span><span>if</span> (<span>definiert</span>('MODULE_PAYMENT_PAYPAL_STATUS'<span>)) { </span><span>242</span><span>$messageStack</span>->add_session('PayPal Website Payments Standard-Modul bereits installiert.', 'error'<span>); </span><span>243</span> zen_redirect(zen_href_link(FILENAME_MODULES, 'set= payment&module=paypal', 'NONSSL'<span>)); </span><span>244</span><span>return</span> 'fehlgeschlagen'<span>; </span><span>245</span><span> } </span><span>246</span><span>if</span> (<span>definiert</span>('MODULE_PAYMENT_PAYPALWPP_STATUS'<span>)) { </span><span>247</span><span>$messageStack</span>->add_session('HINWEIS: PayPal Express Checkout-Modul bereits installiert. Sie benötigen Standard nicht, wenn Sie Express installiert haben.', 'error' <span>); </span><span>248</span> zen_redirect(zen_href_link(FILENAME_MODULES, 'set= payment&module=paypalwpp', 'NONSSL'<span>)); </span><span>249</span><span>Rückgabe</span> 'fehlgeschlagen'<span>; </span><span>250</span><span> }</span><span>251</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_order, Set_Function, Date_Added) Werte ( 'PayPal-Modul aktivieren', 'MODULE_PAYMENT_PAYPAL_STATUS', 'True', 'Möchten Sie PayPal-Zahlungen akzeptieren?', '6', '0', 'zen_cfg_select_option(array('True', 'False'), ', jetzt ())"<span>); </span><span>252</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_Order, Date_Added) Values ('Business ID', 'MODULE_PAYMENT_PAYPAL_BUSINESS_ID','".STORE_OWNER_EMAIL_ADDRESS."', 'Primäre E-Mail-Adresse für Ihr PayPal-Konto.<br />HINWEIS: Dies muss <strong>GENAU </strong>der primären E-Mail-Adresse auf entsprechen In den Einstellungen Ihres PayPal-Kontos wird die Groß-/Kleinschreibung beachtet. Überprüfen Sie daher bitte Ihre PayPal-Profileinstellungen auf paypal.com und geben Sie hier GENAU dieselbe primäre E-Mail-Adresse ein.', '6', ' 2', now())"<span>); </span><span>253</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_order, Set_Function, Date_Added) Werte ( „Transaktionswährung“, „MODULE_PAYMENT_PAYPAL_CURRENCY“, „Ausgewählte Währung“, „Als welche Währung soll die Bestellung an PayPal gesendet werden? <br />HINWEIS: Wenn eine nicht unterstützte Währung an PayPal gesendet wird, wird diese automatisch umgerechnet USD.', '6', '3', 'zen_cfg_select_option(array('Ausgewählte Währung', 'Nur USD', 'Nur AUD', 'Nur CAD', 'Nur EUR', 'Nur GBP', 'Nur CHF ', 'Nur CZK', 'Nur DKK', 'Nur HKD', 'Nur HUF', 'Nur JPY', 'Nur NOK', 'Nur NZD', 'Nur PLN', 'Nur SEK', 'Nur SGD ', 'Nur THB', 'Nur MXN', 'Nur ILS', 'Nur PHP', 'Nur TWD', 'Nur BRL', 'Nur MYR'), ', now())"<span>); 254 Werte ('Zahlungszone', 'MODULE_PAYMENT_PAYPAL_ZONE', '0', 'Wenn eine Zone ausgewählt ist, aktivieren Sie diese Zahlungsmethode nur für diese Zone.', '6', '4', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())"</span>); 255 Werte ('Ausstehenden Benachrichtigungsstatus festlegen', 'MODULE_PAYMENT_PAYPAL_PROCESSING_STATUS_ID', '". DEFAULT_ORDERS_STATUS_ID . "', 'Setzen Sie den Status von Bestellungen mit diesem Zahlungsmodul, die noch nicht abgeschlossen sind, auf diesen Wert<br />('Ausstehend' empfohlen )', '6', '5', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())"<span>); 256 Werte ('Bestellstatus festlegen', 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', '2', 'Setzen Sie den Status von Bestellungen mit diesem Zahlungsmodul, deren Zahlung auf diesen Wert abgeschlossen wurde<br />('Verarbeitung' empfohlen)', '6' , '6', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())"</span>); <span></span>257<span></span>$db<span>->Execute("einfügen in " . TABLE_CONFIGURATION . " (Konfigurationstitel, Konfigurationsschlüssel, Konfigurationswert, Konfigurationsbeschreibung, Konfigurationsgruppen-ID, Sortierreihenfolge, Set_Funktion, Verwendungsfunktion, Datum_hinzugefügt) Werte ('Rückerstattungsauftragsstatus festlegen', 'MODULE_PAYMENT_PAYPAL_REFUND_ORDER_STATUS_ID', '1', 'Setzen Sie den Status von Bestellungen, die mit diesem Zahlungsmodul erstattet wurden, auf diesen Wert<br />('Ausstehend' empfohlen)', '6 ', '7', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())"</span>); <span></span>258<span></span>$db<span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_Value, Configuration_Description, Configuration_Group_ID, Sort_Order, Date_Added) Values ('Sort Reihenfolge der Anzeige.', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER', '0', 'Sortierreihenfolge der Anzeige wird zuerst angezeigt.', '6', '8', now())"</span>); <span></span>259<span></span>$db<span>->Execute("einfügen in " . TABLE_CONFIGURATION . " (Konfigurationstitel, Konfigurationsschlüssel, Konfigurationswert, Konfigurationsbeschreibung, Konfigurationsgruppen-ID, Sortierreihenfolge, Set_Funktion, Datum hinzugefügt) Werte ('Adressüberschreibung', 'MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE', '1', 'Wenn auf 1 gesetzt , überschreibt die in Zen Cart ausgewählte Kundenversandadresse das im PayPal-Konto des Kunden gespeicherte Adressbuch. Der Kunde sieht seine Adresse in Zen Cart, kann sie jedoch NICHT bei PayPal bearbeiten.<br />(Eine ungültige Adresse wird von PayPal als nicht bereitgestellt behandelt oder override=0)<br />0=No Override<br />1=ZC-Adresse überschreibt die PayPal-Adressauswahl', '6', '18', 'zen_cfg_select_option (array('0','1'), ', now())"<span>); 260 „Anforderungen an die Lieferadresse?“, „MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED“, „2“, „Die Lieferadresse des Käufers“. Bei „0“ wird Ihr Kunde aufgefordert, eine Lieferadresse anzugeben. Bei „1“ wird Ihr Kunde nicht nach einer Lieferadresse gefragt . Wenn auf 2 eingestellt, wird Ihr Kunde aufgefordert, eine Lieferadresse anzugeben.<br />0=Aufforderung<br />1=Nicht gefragt<br />2=Erforderlich<br /><br /><strong>HINWEIS: Wenn Sie Ihren Kunden erlauben, ihre eigene Lieferadresse einzugeben, stellen Sie sicher, dass Sie die PayPal-Bestätigungsdetails persönlich überprüfen, um die richtige Adresse beim Ausfüllen von Bestellungen zu überprüfen, wenn Sie Website Payments Standard (IPN) verwenden. Zen Cart weiß nicht, ob sie bei PayPal eine andere Lieferadresse als die bei der Bestellung angegebene Adresse wählen.</strong>', '6', '20', 'zen_cfg_select_option(array('0','1' ,'2'), ', now())"</span>); <span></span>261<span></span>$db<span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_order, Set_Function, Date_Added) Werte ( „Detaillierte Einzelposten im Warenkorb“, „MODULE_PAYMENT_PAYPAL_DETAILED_CART“, „Nein“, „Möchten Sie Einzelpostendetails an PayPal weitergeben? Wenn auf „True“ gesetzt, werden Einzelpostendetails an PayPal weitergegeben, wenn keine Rabatte gelten und wenn Steuern anfallen und Versand sind einfach. Andernfalls wird eine aggregierte Warenkorbzusammenfassung gesendet.', '6', '22', 'zen_cfg_select_option(array('No','Yes'), ', now())"</span>); <span></span>262<span></span>$db<span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_order, Date_Added) Values ('Page Style“, „MODULE_PAYMENT_PAYPAL_PAGE_STYLE“, „Primary“, „Legt den benutzerdefinierten Zahlungsseitenstil für Zahlungsseiten fest. Der Wert von page_style ist derselbe wie der Seitenstilname, den Sie beim Hinzufügen oder Bearbeiten des Seitenstils ausgewählt haben Zahlungsseitenstile auf der Unterregisterkarte „Profil“ der Registerkarte „Mein Konto“ auf der PayPal-Website. Wenn Sie immer auf Ihren primären Stil verweisen möchten, stellen Sie dies auf „primär“ ein "paypal".', '6', '25', now())"</span>); <span></span>263<span></span>$db<span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_order, Set_Function, Date_Added) Werte ( 'Modus für PayPal-Webdienste<br /><br />Standard:<br /><code>www.paypal.com/cgi-bin/webscr</code><br /> oder<br /><code>www.paypal.com/us/cgi-bin/webscr</code><br />oder für das Vereinigte Königreich,<br /><code>www. paypal.com/uk/cgi-bin/webscr</code>', 'MODULE_PAYMENT_PAYPAL_HANDLER', 'www.paypal.com/cgi-bin/webscr', 'Wählen Sie die URL für die PayPal-Live-Verarbeitung', '6', ' 73', '', now())"</span>); <span></span>264<span></span>//<span></span> Sandbox: www.sandbox.paypal.com/cgi-bin/webscr<span></span>265<span></span>$ db<span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_order, Date_Added, Use_Function) Values ('PDT Token (Payment Data Transfer)', 'MODULE_PAYMENT_PAYPAL_PDTTOKEN', '', 'Geben Sie hier Ihren PDT-Token-Wert ein, um Transaktionen sofort nach der Verarbeitung zu aktivieren (wenn sie die Validierung bestehen).', '6', '25', now(), 'zen_cfg_password_display')"</span>); <span></span>266<span></span>//<span></span> Paypal-Testoptionen hier<span></span>267<span></span>$db<span>->Execute("einfügen in " . TABLE_CONFIGURATION . " (Konfigurationstitel, Konfigurationsschlüssel, Konfigurationswert, Konfigurationsbeschreibung, Konfigurationsgruppen-ID, Sortierreihenfolge, Set_Funktion, Datum_hinzugefügt) Werte ('Debug-Modus', 'MODULE_PAYMENT_PAYPAL_IPN_DEBUG', 'Aus', 'Debug-Protokollierung aktivieren? <br />HINWEIS: Dies kann Ihren E-Mail-Posteingang WIRKLICH überladen!<br />Die Protokollierung erfolgt im Ordner /includes/modules/zahlung/paypal/logs<br />E-Mails gehen an die Adresse des Shop-Inhabers .<br />E-Mail-Option NICHT empfohlen.<br /><strong>Für den Normalbetrieb auf AUS lassen.</strong>', '6', '71', 'zen_cfg_select_option(array('Off ','Protokolldatei','Protokoll und E-Mail'), ', now())"<span>); </span><span>268</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, Configuration_key, Configuration_value, Configuration_Description, Configuration_Group_ID, Sort_order, Date_Added) Values ('Debug E-Mail-Adresse', 'MODULE_PAYMENT_PAYPAL_DEBUG_EMAIL_ADDRESS','".STORE_OWNER_EMAIL_ADDRESS."', 'Die für das PayPal-Debugging zu verwendende E-Mail-Adresse', '6', '72', now())"<span>); </span><span>269</span><span>270</span><span>$this</span>->notify('NOTIFY_PAYMENT_PAYPAL_INSTALLED'<span>); </span><span>271</span><span> } </span><span>272</span><span>/*</span><span>* </span><span>273</span><span> * Entfernen Sie das Modul und alle seine Einstellungen </span><span>274</span><span> * </span><span>275</span><span>*/</span><span>276</span><span>Funktion</span><span> remove() { </span><span>277</span><span>global</span><span>$db</span><span>; </span><span>278</span><span>$db</span>->Execute("delete from " . TABLE_CONFIGURATION . " where configure_key LIKE 'MODULE_PAYMENT_PAYPAL_%'"<span>); </span><span>279</span><span>$this</span>->notify('NOTIFY_PAYMENT_PAYPAL_UNINSTALLED'<span>); </span><span>280</span><span> } </span><span>281</span><span>/*</span><span>* </span><span>282</span><span> * Interne Liste der Konfigurationsschlüssel, die zur Konfiguration des Moduls verwendet werden </span><span>283</span><span> * </span><span>284</span><span> * @return-Array </span><span>285</span><span>*/</span><span>286</span><span>Funktion</span><span> Tasten() { </span><span>287</span><span>$keys_list</span> = <span>array</span><span>( </span><span>288</span> 'MODULE_PAYMENT_PAYPAL_STATUS', <span>289</span> 'MODULE_PAYMENT_PAYPAL_BUSINESS_ID', <span>290</span> 'MODULE_PAYMENT_PAYPAL_PDTTOKEN', <span>291</span> 'MODULE_PAYMENT_PAYPAL_CURRENCY', <span>292</span> 'MODULE_PAYMENT_PAYPAL_ZONE', <span>293</span> 'MODULE_PAYMENT_PAYPAL_PROCESSING_STATUS_ID', <span>294</span> 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', <span>295</span> 'MODULE_PAYMENT_PAYPAL_REFUND_ORDER_STATUS_ID', <span>296</span> 'MODULE_PAYMENT_PAYPAL_SORT_ORDER', <span>297</span> 'MODULE_PAYMENT_PAYPAL_DETAILED_CART', <span>298</span> 'MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE' , <span>299</span> 'MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED' , <span>300</span> 'MODULE_PAYMENT_PAYPAL_PAGE_STYLE' , <span>301</span> 'MODULE_PAYMENT_PAYPAL_HANDLER', <span>302</span> 'MODULE_PAYMENT_PAYPAL_IPN_DEBUG', <span>303</span><span> ); </span><span>304</span><span>305</span><span>//</span><span> Paypal-Test-/Debug-Optionen finden Sie hier:</span><span>306</span><span>if </span> (IS_ADMIN_FLAG === <span>true</span><span>) { </span><span>307</span><span>if</span> (<span>isset</span>(<span>$_GET</span>['debug']) && <span>$_GET</span>[ 'debug']=='on'<span>) { </span><span>308</span><span>$keys_list</span>[]='MODULE_PAYMENT_PAYPAL_DEBUG_EMAIL_ADDRESS'; <span>/*</span><span> Dies ist standardmäßig die E-Mail-Adresse des Shopbesitzers </span><span>*/</span><span>309</span><span> } </span><span>310</span><span> } </span><span>311</span><span>return</span><span>$keys_list</span><span>; </span><span>312</span><span> }</span><span>313</span><span>314</span><span>Funktion</span> _getPDTresults(<span>$orderAmount</span>, <span>$my_currency</span>, <span>$pdtTX</span><span>) { </span><span>315</span><span>global</span><span>$db</span><span>; </span><span>316</span><span>$ipnData</span> = ipn_postback('PDT', <span>$pdtTX</span><span>); </span><span>317</span><span>$respdata</span> = <span>$ipnData</span>['info'<span>]; </span><span>318</span><span>319</span><span>//</span><span> Daten analysieren</span><span>320</span><span>$lines</span> = <span>explode</span>("n", <span>$respdata</span><span>); </span><span>321</span><span>$this</span>->pdtData = <span>array</span><span>(); </span><span>322</span><span>für</span> (<span>$i</span>=1; <span>$i</span><<span>Anzahl</span>(<span> $lines</span>);<span>$i</span> <span>){ </span><span>323</span><span>if</span> (!<span>strstr</span>(<span>$lines</span>[<span>$i</span>], "=") ) <span>weiter</span><span>; </span><span>324</span><span>list</span>(<span>$key</span>,<span>$val</span>) = <span>explode</span>("=", <span>$lines</span>[<span>$i</span><span>]); </span><span>325</span><span>$this</span>->pdtData[<span>urldecode</span>(<span>$key</span>)] = <span>urldecode</span>( <span>$val</span><span>); </span><span>326</span><span> } </span><span>327</span><span>328</span><span>if</span> (<span>$this</span>->pdtData['txn_id'] == '' || <span>$this</span>->pdtData['zahlungsstatus'] == ''<span>) { </span><span>329</span> ipn_debug_email('PDT hat UNGÜLTIGE Daten zurückgegeben. Muss stattdessen warten, bis IPN verarbeitet wird. ' . "n" . <span>print_r</span>(<span>$this</span>-> ;pdtData, <span>true</span><span>)); </span><span>330</span><span>return</span><span>FALSE</span><span>; </span><span>331</span> } <span>sonst</span><span> { </span><span>332</span> ipn_debug_email('PDT Returned Data ' . <span>print_r</span>(<span>$this</span>->pdtData, <span>true</span><span>) ); </span><span>333</span><span> } </span><span>334</span><span>335</span><span>$_POST</span>['mc_gross'] = <span>$this</span>->pdtData['mc_gross'<span> ]; </span><span>336</span><span>$_POST</span>['mc_currency'] = <span>$this</span>->pdtData['mc_currency'<span>]; </span><span>337</span><span>$_POST</span>['business'] = <span>$this</span>->pdtData['business'<span>]; </span><span>338</span><span>$_POST</span>['receiver_email'] = <span>$this</span>->pdtData['receiver_email'<span>]; </span><span>339</span><span>340</span><span>$PDTstatus</span> = (ipn_validate_transaction(<span>$respdata</span>, <span>$this</span>->pdtData , 'PDT') && valid_zahlung(<span>$orderAmount</span>, <span>$my_currency</span>, 'PDT') && <span>$this</span>->pdtData['zahlungsstatus'] == 'Abgeschlossen'<span>); </span><span>341</span><span>if</span> (<span>$this</span>->pdtData['zahlungsstatus'] != '' && <span>$this</span>-> ;pdtData['zahlungsstatus'] != 'Abgeschlossen'<span>) { </span><span>342</span> ipn_debug_email('PDT-WARNUNG: Bestellung nicht als „Abgeschlossen“ markiert. Überprüfen Sie die Gründe für „Ausstehend“ oder warten Sie, bis IPN abgeschlossen ist.' . "n" . '[paid_status] => ' . <span>$this</span>->pdtData['zahlungsstatus'] "n" '[pending_reason] => >]); <span></span>343<span></span> } <span></span>344<span></span>345<span></span>$sql<span> = "</span>SELECT order_id, paypal_ipn_id, payment_status, txn_type, pending_reason <span></span>346<span> FROM " . TABLE_PAYPAL . " </span>347<span></span> WHERE txn_id = :transactionID OR parent_txn_id = :transactionID <span></span>348<span> ORDER BY order_id DESC "</span>; <span></span>349<span></span>$sql<span> = </span>$db<span>->bindVars(</span>$sql<span>, ':transactionID', </span>$ this<span>->pdtData['txn_id'], 'string'</span>); <span></span>350<span></span>$ipn_id<span> = </span>$db<span>->Execute(</span>$sql<span></span>); <span></span>351<span></span>if<span> (</span>$ipn_id<span>->RecordCount() != 0</span>) { <span></span>352<span> ipn_debug_email('PDT WARNUNG :: Transaktion existiert bereits. Möglicherweise hat IPN sie bereits hinzugefügt. PDT-Verarbeitung beendet.'</span>); <span></span>353<span></span>$pdtTXN_is_unique<span> = </span>false<span></span>; <span></span>354<span> } </span>sonst<span></span> { <span></span>355<span></span>$pdtTXN_is_unique<span> = </span>true<span></span>; <span></span>356<span></span> } <span></span>357<span></span>358<span></span>$PDTstatus<span> = (</span>$pdtTXN_is_unique<span> && </span>$PDTstatus<span></span>); <span></span>359<span></span>360<span></span>return<span></span>$PDTstatus<span></span>; <span></span>361<span></span> }</span><span>362</span><span>363</span><span>364</span><span>Funktion</span><span> tableCheckup() { </span><span>365</span><span>global</span><span>$db</span>, <span>$sniffer</span><span>; </span><span>366</span><span>$fieldOkay1</span> = (<span>method_exists</span>(<span>$sniffer</span>, 'field_type')) ? <span>$sniffer</span>->field_type(TABLE_PAYPAL, 'txn_id', 'varchar(20)', <span>true</span>) : -1<span>; </span><span>367</span><span>$fieldOkay2</span> = (<span>$sniffer</span>->field_exists(TABLE_PAYPAL, 'module_name')) ? <span>wahr</span> : -1<span>; </span><span>368</span><span>$fieldOkay3</span> = (<span>$sniffer</span>->field_exists(TABLE_PAYPAL, 'order_id')) ? <span>wahr</span> : -1<span>; </span><span>369</span><span>370</span><span>if</span> (<span>$fieldOkay1</span> == -1<span>) { </span><span>371</span><span>$sql</span> = "Felder anzeigen von " .<span> TABLE_PAYPAL; </span><span>372</span><span>$result</span> = <span>$db</span>->Execute(<span>$sql</span><span>); </span><span>373</span><span>while</span> (!<span>$result</span>-><span>EOF) { </span><span>374</span><span>if</span> (<span>$result</span>->fields['Field'] == 'txn_id'<span>) { </span><span>375</span><span>if</span> (<span>$result</span>->fields['Type'] == 'varchar(20)'<span>) { </span><span>376</span><span>$fieldOkay1</span> = <span>true</span>; <span>//</span><span> existiert und entspricht dem erforderlichen Typ, also fahren Sie mit der anderen Prüfung fort</span><span>377</span> } <span>else</span><span> { </span><span>378</span><span>$fieldOkay1</span> = <span>$result</span>->fields['Type']; <span>//</span><span> stimmt nicht überein, also gib zurück, was es „ist“</span><span>379</span><span>break</span><span>; </span><span>380</span><span> } </span><span>381</span><span> } </span><span>382</span><span>$result</span>-><span>MoveNext(); </span><span>383</span><span> } </span><span>384</span><span> } </span><span>385</span><span>386</span><span>if</span> (<span>$fieldOkay1</span> !== <span>true</span><span>) { </span><span>387</span><span>//</span><span> Vorübergehende Korrektur der Tabellenstruktur für v1.3.7.x – kann in späteren Versionen entfernt werden</span><span>388</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE payment_type payment_type varchar(40) NOT NULL default ''"<span>); </span><span>389</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE txn_type txn_type varchar(40) NOT NULL default ''"<span>); </span><span>390</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE payment_status payment_status varchar(32) NOT NULL default ''"<span>); </span><span>391</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE reason_code reason_code varchar(40) default NULL"<span>); </span><span>392</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE pending_reason pending_reason varchar(32) default NULL"<span>); </span><span>393</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGErechnung Rechnung varchar(128) default NULL"<span>); </span><span>394</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE payer_business_name payer_business_name varchar(128) default NULL"<span>); </span><span>395</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE Adressname Adressname varchar(64) Standard NULL"<span>); </span><span>396</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE address_street address_street varchar(254) default NULL"<span>); </span><span>397</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE address_city address_city varchar(120) default NULL"<span>); </span><span>398</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE address_state address_state varchar(120) default NULL"<span>); </span><span>399</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE payer_email payer_email varchar(128) NOT NULL default ''"<span>); </span><span>400</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE business business varchar(128) NOT NULL default ''"<span>); </span><span>401</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE Receiver_Email Receiver_Email varchar(128) NOT NULL Standard ''"<span>); </span><span>402</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE txn_id txn_id varchar(20) NOT NULL default ''"<span>); </span><span>403</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE parent_txn_id parent_txn_id varchar(20) default NULL"<span>); </span><span>404</span><span> }</span><span>405</span><span>if</span> (<span>$fieldOkay2</span> !== <span>true</span><span>) { </span><span>406</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " ADD COLUMN module_name varchar(40) NOT NULL default '' after txn_type"<span>) ; </span><span>407</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " ADD COLUMN module_mode varchar(40) NOT NULL default '' after module_name"<span>) ; </span><span>408</span><span> } </span><span>409</span><span>if</span> (<span>$fieldOkay3</span> !== <span>true</span><span>) { </span><span>410</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE zen_order_id order_id int(11) NOT NULL default '0'"<span>); </span><span>411</span><span> } </span><span>412</span><span> } </span><span>413</span><span>414</span><span>function</span> paynow_button(<span>$order_id</span><span>) { </span><span>415</span><span>global</span><span>$db</span>, <span>$order</span>, <span>$currencies</span>, <span>$currency</span><span>; </span><span>416</span><span>require_once</span>(DIR_WS_CLASSES . 'order.php'<span>); </span><span>417</span><span>$order</span> = <span>new</span> order(<span>$order_id</span><span>); </span><span>418</span><span>$options</span> = <span>array</span><span>(); </span><span>419</span><span>$optionsCore</span> = <span>array</span><span>(); </span><span>420</span><span>$optionsPhone</span> = <span>array</span><span>(); </span><span>421</span><span>$optionsShip</span> = <span>array</span><span>(); </span><span>422</span><span>$optionsLineItems</span> = <span>array</span><span>(); </span><span>423</span><span>$optionsAggregate</span> = <span>array</span><span>(); </span><span>424</span><span>$optionsTrans</span> = <span>array</span><span>(); </span><span>425</span><span>$buttonArray</span> = <span>array</span><span>(); </span><span>426</span><span>427</span><span>$this</span>->totalsum = <span>$order</span>->info['total'<span>] ; </span><span>428</span><span>429</span><span>//</span><span> Speichern Sie die Sitzungsinhalte dauerhaft für den Fall, dass PayPal die Sitzung verliert</span><span>430</span><span>$_SESSION</span>['ppipn_key_to_remove'] = <span>session_id</span><span>(); </span><span>431</span><span>$db</span>->Execute("delete from " . TABLE_PAYPAL_SESSION . " where session_id = '" . zen_db_input(<span>$_SESSION</span>['ppipn_key_to_remove ']) . "'"<span>); </span><span>432</span><span>433</span><span>$sql</span> = "insert into " . TABLE_PAYPAL_SESSION . „<span> (Sitzungs-ID, gespeicherte Sitzung, Ablauf) Werte ( </span><span>434</span> '" . zen_db_input(<span>$_SESSION</span>['ppipn_key_to_remove']) . "<span>', </span><span>435</span> '" . <span>base64_encode</span>(<span>serialize</span>(<span>$_SESSION</span>)) . "<span>', </span><span>436</span> '" . (<span>Zeit</span>() (1*60*60*24*2)) . "')"<span>; </span><span>437</span><span>438</span><span>$db</span>->Execute(<span>$sql</span><span>); </span><span>439</span><span>440</span><span>$my_currency</span> =<span> select_pp_currency(); </span><span>441</span><span>if</span>(!<span>empty</span>(<span>$order</span>->info['currency'<span>])){ </span><span>442</span><span>$my_currency</span>=<span>$order</span>->info['currency'<span>]; </span><span>443</span><span> } </span><span>444</span><span>$this</span>->transaction_currency = <span>$my_currency</span><span>; </span><span>445</span><span>446</span><span>$this</span>->transaction_amount = (<span>$this</span>->totalsum * <span>$currencies</span>->get_value(<span>$my_currency</span><span>)); </span><span>447</span><span>448</span><span>$telephone</span> = <span>preg_replace</span>('/D/', '', <span>$order</span>->customer['telephone'<span>]); </span><span>449</span><span>if</span> (<span>$telephone</span> != ''<span>) { </span><span>450</span><span>$optionsPhone</span>['H_PhoneNumber'] = <span>$telephone</span><span>; </span><span>451</span><span>if</span> (<span>in_array</span>(<span>$order</span>->customer['country']['iso_code_2'], <span>array</span>('US','CA'<span>))) { </span><span>452</span><span>$optionsPhone</span>['night_phone_a'] = <span>substr</span>(<span>$telephone</span>,0,3<span>); </span><span>453</span><span>$optionsPhone</span>['night_phone_b'] = <span>substr</span>(<span>$telephone</span>,3,3<span>); </span><span>454</span><span>$optionsPhone</span>['night_phone_c'] = <span>substr</span>(<span>$telephone</span>,6,4<span>); </span><span>455</span><span>$optionsPhone</span>['day_phone_a'] = <span>substr</span>(<span>$telephone</span>,0,3<span>); </span><span>456</span><span>$optionsPhone</span>['day_phone_b'] = <span>substr</span>(<span>$telephone</span>,3,3<span>); </span><span>457</span><span>$optionsPhone</span>['day_phone_c'] = <span>substr</span>(<span>$telephone</span>,6,4<span>); </span><span>458</span> }<span>sonst</span><span> { </span><span>459</span><span>$optionsPhone</span>['night_phone_b'] = <span>$telephone</span><span>; </span><span>460</span><span>$optionsPhone</span>['day_phone_b'] = <span>$telephone</span><span>; </span><span>461</span><span> } </span><span>462</span><span> }</span><span>463</span><span>464</span><span>$optionsCore</span> = <span>array</span><span>( </span><span>465</span> 'lc' => UNS, <span>466</span><span>//</span><span>'lc' => $order->customer['country']['iso_code_2'],</span><span>467</span> 'charset' => CHARSET, <span>468</span> 'page_style' => MODULE_PAYMENT_PAYPAL_PAGE_STYLE, <span>469</span> 'custom' => zen_session_name() . '=' . zen_session_id(), <span>470</span> 'Rechnung' => <span>$order</span>->info['num'], <span>471</span> 'business' => MODULE_PAYMENT_PAYPAL_BUSINESS_ID, <span>472</span> 'return' => zen_href_link(FILENAME_CHECKOUT_PROCESS, 'referer=paypal', 'SSL'), <span>473</span> 'cancel_return' => zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'), <span>474</span> 'shopping_url' => zen_href_link(FILENAME_SHOPPING_CART, '', 'SSL'), <span>475</span> 'notify_url' => zen_href_link('ipn_main_handler.php', '', 'SSL',<span>false</span>,<span>false</span>,<span>true</span>), <span>476</span> 'redirect_cmd' => '_xclick','rm' => 2,'bn' => 'zencart','mrb' => 'R-6C7952342H795591R','pal' => '9E82WJBKKGPLQ', <span>477</span><span> ); </span><span>478</span><span>$optionsCust</span> = <span>array</span><span>( </span><span>479</span> 'Vorname' => replace_accents(<span>$order</span>->customer['firstname']), <span>480</span> 'last_name' => replace_accents(<span>$order</span>->customer['lastname']), <span>481</span> 'address1' => replace_accents(<span>$order</span>->customer['street_address']), <span>482</span> 'Stadt' => replace_accents(<span>$order</span>->customer['city']), <span>483</span> 'state' => zen_get_zone_code(<span>$order</span>->customer['country']['id'], <span>$order</span>->customer['zone_id'], <span>$order</span>->Kunde['Staat']), <span>484</span> 'zip' => <span>$order</span>->Kunde['Postleitzahl'], <span>485</span> 'Land' => <span>$order</span>->customer['country']['iso_code_2'], <span>486</span> 'email' => <span>$order</span>->customer['email_address'], <span>487</span><span> ); </span><span>488</span><span>//</span><span> Adresszeile 2 ist optional</span><span>489</span><span>if</span> (<span>$order</span>->customer['suburb'] != '') <span>$optionsCust</span>['address2'] = <span>$order</span>->customer['suburb'<span>] ; </span><span>490</span><span>//</span><span> anderes Format für japanisches Adresslayout:</span><span>491</span><span>if</span> (<span>$ order</span>->customer['country']['iso_code_2'] == 'JP') <span>$optionsCust</span>['zip'] = <span>substr</span>(<span>$ order</span>->customer['postcode'], 0, 3) . '-' . <span>substr</span>(<span>$order</span>->customer['postcode'], 3<span>); </span><span>492</span><span>if</span> (MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED == 2<span>) { </span><span>493</span><span>$optionsCust</span> = <span>array</span><span>( </span><span>494</span> 'Vorname' => replace_accents(<span>$order</span>->delivery['firstname'] != '' ? <span>$order</span>->delivery['firstname'] : <span>$order</span> ->billing['firstname']), <span>495</span> 'last_name' => replace_accents(<span>$order</span>->delivery['lastname'] != '' ? <span>$order</span>->delivery['lastname'] : <span>$order</span> ->billing['lastname']), <span>496</span> 'address1' => replace_accents(<span>$order</span>->delivery['street_address'] != '' ? <span>$order</span>->delivery['street_address'] : <span>$order</span> ->billing['street_address']), <span>497</span> 'Stadt' => replace_accents(<span>$order</span>->delivery['city'] != '' ? <span>$order</span>->delivery['city'] : <span>$order</span> ->billing['city']), <span>498</span> 'state' => (<span>$order</span>->delivery['country']['id'] != '' ? zen_get_zone_code(<span>$order</span>->delivery['country']['id '], <span>$order</span>->delivery['zone_id'], <span>$order</span>->delivery['state']): zen_get_zone_code(<span>$order</span> ->billing['country']['id'], <span>$order</span>->billing['zone_id'], <span>$order</span>->billing['state'] )), <span>499</span> 'zip' => (<span>$order</span>->delivery['postcode'] != '' ? <span>$order</span>->delivery['postcode'] : <span>$order</span>- >billing['postcode']), <span>500</span> 'Land' => (<span>$order</span>->delivery['country']['title'] != '' ? <span>$order</span>->delivery['country']['title'] : <span>$order</span>->billing['country']['title']), <span>501</span> 'country_code' => (<span>$order</span>->delivery['country']['iso_code_2'] != '' ? <span>$order</span>->delivery['country']['iso_code_2'] : <span>$order</span>->billing['country']['iso_code_2']), <span>502</span> 'email' => <span>$order</span>->customer['email_address'], <span>503</span><span> ); </span><span>504</span><span>if</span> (<span>$order</span>->delivery['suburb'] != '') <span>$optionsCust</span>[' address2'] = <span>$order</span>->delivery['suburb'<span>]; </span><span>505</span><span>if</span> (<span>$order</span>->delivery['country']['iso_code_2'] == 'JP') <span>$ optionsCust</span>['zip'] = <span>substr</span>(<span>$order</span>->delivery['postcode'], 0, 3) . '-' . <span>substr</span>(<span>$order</span>->delivery['postcode'], 3<span>); </span><span>506</span><span> } </span><span>507</span><span>$optionsShip</span>['no_shipping'] =<span> MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED; </span><span>508</span><span>if</span> (MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE == '1') <span>$optionsShip</span>['address_override'] =<span> MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE; </span><span>509</span><span>//</span><span> Bereiten Sie nach Möglichkeit Details zum Warenkorbinhalt vor</span><span>510</span><span>if</span> (MODULE_PAYMENT_PAYPAL_DETAILED_CART == 'Ja ') <span>$optionsLineItems</span> =<span> ipn_getLineItemDetails(); </span><span>511</span><span>if</span> (<span>sizeof</span>(<span>$optionsLineItems</span>) > 0<span>) { </span><span>512</span><span>$optionsLineItems</span>['cmd'] = '_cart'<span>; </span><span>513</span><span>//</span><span> $optionsLineItems['num_cart_items'] = sizeof($order->products);</span><span>514</span><span>if</span> (<span>isset</span>(<span>$optionsLineItems</span>['shipping'<span>])) { </span><span>515</span><span>$optionsLineItems</span>['shipping_1'] = <span>$optionsLineItems</span>['shipping'<span>]; </span><span>516</span><span>unset</span>(<span>$optionsLineItems</span>['shipping'<span>]); </span><span>517</span><span> } </span><span>518</span><span>unset</span>(<span>$optionsLineItems</span>['subtotal'<span>]); </span><span>519</span><span>//</span><span> Wenn Einzelpostendetails aufgrund von Berechnungskonflikten oder Rabatten usw. nicht beibehalten werden konnten, wird standardmäßig der Aggregationsmodus verwendet</span><span>520 </span><span>if</span> (!<span>isset</span>(<span>$optionsLineItems</span>['item_name_1']) || <span>$optionsLineItems</span>['creditsExist'] = = <span>TRUE</span>) <span>$optionsLineItems</span> = <span>array</span><span>(); </span><span>521</span><span>//</span><span>if ($optionsLineItems['amount'] != $this->transaction_amount) $optionsLineItems = array(); </span><span>522</span><span> // debug: </span><span>523</span><span> //ipn_debug_email('Einzelpostendetails (wenn leer, bedeutet dies, dass eine Dateninkongruenz vorliegt oder Gutschriften angewendet und somit umgangen wurden): ' . "n" . print_r($ optionsLineItems, true));</span><span>524</span><span>unset</span>(<span>$optionsLineItems</span>['creditsExist'<span>]); </span><span>525</span><span> }</span><span>526</span><span>$optionsAggregate</span> = <span>array</span><span>( </span><span>527</span> 'cmd' => '_ext-enter', <span>528</span> 'item_name' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_TITLE, <span>529</span> 'item_number' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_ITEMNUM, <span>530</span><span>//</span><span>'num_cart_items' => sizeof($order->products),</span><span>531</span> 'amount' => <span>Zahlenformat</span>(<span>$this</span>->transaction_amount, <span>$currencies</span>->get_decimal_places(<span>$my_currency</span>)), <span>532</span> 'Versand' => '0,00', <span>533</span><span> ); </span><span>534</span><span>if</span> (MODULE_PAYMENT_PAYPAL_TAX_OVERRIDE == 'true') <span>$optionsAggregate</span>['tax'] = '0.00'<span>; </span><span>535</span><span>if</span> (MODULE_PAYMENT_PAYPAL_TAX_OVERRIDE == 'true') <span>$optionsAggregate</span>['tax_cart'] = '0.00'<span>; </span><span>536</span><span>$optionsTrans</span> = <span>array</span><span>( </span><span>537</span> 'upload' => (int)(<span>sizeof</span>(<span>$order</span>->products) > 0), <span>538</span> 'currency_code' => <span>$my_currency</span>, <span>539</span><span>//</span><span>'paypal_order_id' => $paypal_order_id, </span><span>540</span><span> //'no_note' => '1', </span><span>541</span><span> //'invoice' => '',</span><span>542</span><span> ); </span><span>543</span><span>544</span><span>//</span><span> Wenn die Einzelposteninformationen ungültig sind, verwenden Sie das Aggregat:</span><span>545</span><span>if</span> (<span>sizeof</span>(<span>$optionsLineItems</span>) > 0) <span>$optionsAggregate</span> = <span>$optionsLineItems</span><span>; </span><span>546</span><span>547</span><span>//</span><span> Einreichung vorbereiten</span><span>548</span><span>$options</span> = <span>array_merge</span>(<span>$optionsCore</span>, <span>$optionsCust</span>, <span>$optionsPhone</span>, <span>$optionsShip</span>, <span>$optionsTrans</span>, <span>$optionsAggregate</span><span>); </span><span>549</span><span>//</span><span>ipn_debug_email('Schlüssel für die Übermittlung: ' . print_r($options, true)); </span><span>550</span><span>551</span><span> // Schaltflächenfelder erstellen</span><span>552</span><span>foreach</span> (<span>$options</span><span>as</span><span>$name</span> => <span></span>553<span></span>//<span></span> Anführungszeichen entfernen<span></span>554<span></span>$value<span> = </span>str_replace<span> ('"', '', </span>$value<span></span>); <span></span>555<span></span>//<span></span>auf ungültige Zeichen prüfen<span></span>556<span></span>if<span> (</span>preg_match<span> ('/[^a-zA-Z_0-9]/', </span>$name<span></span>)) { <span></span>557<span> ipn_debug_email('datacheck - ABORTING - preg_match hat einen ungültigen Übermittlungsschlüssel gefunden: ' . </span>$name<span> . ' (' . </span>$value<span> . ')' </span>); <span></span>558<span></span>Pause<span></span>; <span></span>559<span></span> } <span></span>560<span></span>//<span></span> Benötigen wir eine spezielle Behandlung für &- und =-Symbole? <span></span>561<span></span> //if (strpos($value, '&') !== false || strpos($value, '=') !== false) $value = URL-Code ($value);<span></span>562<span></span>563<span></span>$bu</span>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

Teil 1: Erste Schritte zur Fehlerbehebung Überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen Lösungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt möglicherweise nicht an Ihrem Gerät; die Server von Apple sind möglicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgemäß funktioniert. Wenn es ein Problem gibt, können Sie nur warten, bis Apple es behebt. Überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem „Verbindung zum AppStore nicht möglich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Watch4pro und GT verfügen jeweils über unterschiedliche Funktionen und Anwendungsszenarien. Wenn Sie Wert auf umfassende Funktionen, hohe Leistung und ein stilvolles Erscheinungsbild legen und bereit sind, einen höheren Preis in Kauf zu nehmen, ist Watch 4 Pro möglicherweise besser geeignet. Wenn Sie keine hohen funktionalen Ansprüche haben und mehr Wert auf Akkulaufzeit und einen angemessenen Preis legen, ist die GT-Serie möglicherweise besser geeignet. Die endgültige Wahl sollte auf der Grundlage persönlicher Bedürfnisse, Budgets und Vorlieben getroffen werden. Es wird empfohlen, vor dem Kauf Ihre eigenen Bedürfnisse sorgfältig zu prüfen und sich die Bewertungen und Vergleiche verschiedener Produkte anzusehen, um eine fundiertere Entscheidung zu treffen.

请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?那么请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?http://127.0.0.1/myo/newuser.php?mod=search&type=fastone比如现在我要修改mod=new要怎么做呢?------解决方案--------------------发送了请求

So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 Die Verlängerung der Akkulaufzeit ist der Schlüssel zum mobilen Geräteerlebnis, und das iPad ist ein gutes Beispiel. Wenn Sie das Gefühl haben, dass der Akku Ihres iPads zu schnell leer wird, machen Sie sich keine Sorgen, es gibt eine Reihe von Tricks und Optimierungen in iPadOS 17.4, die die Laufzeit Ihres Geräts deutlich verlängern können. Das Ziel dieses ausführlichen Leitfadens besteht nicht nur darin, Informationen bereitzustellen, sondern auch darin, die Art und Weise zu ändern, wie Sie Ihr iPad verwenden, Ihr gesamtes Batteriemanagement zu verbessern und sicherzustellen, dass Sie sich länger auf Ihr Gerät verlassen können, ohne es aufladen zu müssen. Durch die Übernahme der hier beschriebenen Vorgehensweisen machen Sie einen Schritt hin zu einem effizienteren und bewussteren Einsatz von Technologie, der auf Ihre individuellen Bedürfnisse und Nutzungsmuster zugeschnitten ist. Identifizieren Sie die größten Energieverbraucher

Alle freuen sich auf die heutige Veröffentlichung von Windows 1123H2. Tatsächlich hat Microsoft gerade Updates für die Release-Vorschau veröffentlicht, die dem offiziellen Release-Stadium am nächsten kommt. Bekannt als Build 22631 gibt Microsoft bekannt, dass sie die neue umbenannte Chat-App, Phone Links und Play Together-Widgets einführen, die in den letzten Monaten auf anderen internen Kanälen getestet wurden. „Dieses neue Update wird den gleichen Wartungszweig und die gleiche Codebasis wie Windows 11 Version 22H2 haben und mit allen neu angekündigten Funktionen kumulativ sein, einschließlich Copilot in Windows (Vorschau)“, verspricht Microsoft. Redmond-Beamte weiter
