ホームページ バックエンド開発 PHPチュートリアル Zencart は注文後に支払いを行います。これは、注文価格を変更できる Taobao バックエンドと同様です。

Zencart は注文後に支払いを行います。これは、注文価格を変更できる Taobao バックエンドと同様です。

Aug 08, 2016 am 09:21 AM
gt lt order

Zencart が支払いに Paypal を使用すると、注文の欠落が発生します。つまり、Paypal は顧客の支払いを受け取りましたが、ウェブサイトのバックエンドには顧客からの注文がありません。 Paypal で注文が届かない主な理由は、顧客が Paypal の Web サイトにジャンプして支払いを完了したときに、ウィンドウを直接閉じたり、ネットワークが不安定で Web サイトに正常にジャンプしないことです。

Paypal での注文漏れの問題を解決するには、いくつかの解決策があります:

1. カートの詳細項目オプションをオンにします。

原則: zencart バックエンド モジュールで [カートの詳細項目] オプションを開きます --> PayPal ウェブサイト支払い標準 - IPN。このオプションでは、すべての注文商品情報が PayPal に転送され、顧客が正常に支払ったものの、バックエンドが注文を正常に生成できなかった場合、PayPal アカウントの取引情報を通じて顧客がどの商品を購入したかを確認することもできます。

2. Paypal セッション ビューアー プラグインを使用して、Paypal が見逃した注文を取得します。

原則: zencart ショッピング カート内の商品が Paypal を通じて支払われた場合、支払いが成功し、注文が PayPal Web サイトからショッピング Web サイトにジャンプすると、支払いのすべての記録が paypal_session テーブルに保存されます。注文が生成されると、zencart システムはこの paypal_session レコードを自動的に削除します。ショッピング Web サイトに正常にジャンプせず、注文も正常に生成されなかった場合、Paypal を使用するときにこの支払い記録データは常にデータベースに保存されます。 Session Viewer プラグインを使用すると、顧客情報、買い物時間、製品情報などのすべてのデータを表示でき、この paypal_session 情報を注文に転送して生成できます。注文。

プラグインのダウンロードアドレス: http://www.zen-cart.cn/english-version-modules/admin-tools/paypal-sessions-viewer

3. 支払いプロセスを変更します。注文してから支払います。

原則: zen-cartを利用したことがある人なら、zen-cartでの注文手順は次のとおりであることを知っています([]内の表現は不要です):

1.ショッピングカート

2. [配送方法]

3. 支払い方法

4. 注文の確認(確認)

5. [第三者ウェブサイトでの支払い]

6. 注文処理(チェックアウトプロセス)—— このステップは、ショッピングカート内の情報が反映されるため、重要です。ここに注文に書き込まれます

7. 注文が成功しました(チェックアウト成功)

通常の状況では、このプロセスに問題はありません。ただし、ステップ 5 からステップ 6 までのプロセスでは、ユーザーが支払いが成功したと考えて Web ページを直接閉じたり、ネットワーク上の理由によりユーザーが正常に checkout_process ページにジャンプできない可能性があります。注文を正常に作成できないため、これは非常に深刻です。上記の分析に基づいて、私たちはプロセスを少し変更することを望んでいます。つまり、支払いの前に注文が作成されるようにして、支払いがサードパーティの支払い Web サイトからジャンプバックできない場合でも、ユーザーに支払いを行わせないようにしたいと考えています。正常に完了しましたが、バックグラウンドでの注文ステータスにエラーは発生しません。

注文漏れを防ぐために Zen-cart の注文と支払いプロセスを変更するという Dongguo 氏のチュートリアルに従いました。このチュートリアルは比較的古く、あまり包括的ではないため、実際のニーズに基づいて修正しました。 。

変更されたブループリントは基本的に次のとおりです:

1. checkour_confirmation ページで注文を確認した後、直接処理して account_history_info ページに入り、そこで支払いページに入ることができます。下の図に示すように:

2. 顧客がその時点で支払いを怠った場合は、独自のバックエンドにアクセスして過去の注文の支払いを行うこともできます。下の図に示すように:

3. 未払いの注文の場合は、淘宝網と同じように、商品の写真を撮った後、支払い前にストアのオーナーが価格を変更できます。 。以下の図に示すように:

まず、変更するすべてのファイルをリストします:

1. include/modules/payment/ paypal.php

3. include/classes/order.php

4. include/modules/pages/header_php.php

6. templates/ テンプレート ディレクトリ/templates/tpl_account_history_default.php

7. include/templates/テンプレート ディレクトリ/tpl_account_history_default.php

8. ipn_main_handler.php

9.

最初に注文を作成してから支払いを行うため、支払いプロセスを簡素化するために、これをインストールする前に Fast And Easy Checkout For Zencart (高速支払い) プラグインをインストールしました。このプラグインをインストールするには、高速支払いプラグインの依存プラグインである別のプラグイン Css Js Loader For Zencart をインストールする必要があります。クイック決済と注文後の支払いには因果関係がありませんので、インストールしたくない場合は無視して大丈夫です。

上記のファイルを変更するには、次の手順を実行します。

1. まず、既存の支払いモジュールを変換する必要があります。支払い用のページ URL を表すフィールド paynow_action_url を支払いメソッド クラスに追加する必要があります。さらに、支払いフォームのパラメータ隠しフィールド コードを取得するために関数 paynow_button($order_id) を追加する必要があります。

paynow_action_url 変数を追加するには、支払いクラスのコンストラクターの最後に次のコードを追加してください:

<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>
ログイン後にコピー

paynow_button ($order_id) 関数を追加するには、最後の関数の後に次のコードを追加してください。支払いクラス :

<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. PayPal 支払い方法を例として、その実装方法を説明します。ここで paypal.php ファイルを直接変更します。必ずこのファイルをバックアップしてください。コードは以下のとおりです。ここでは、form_action_url の指定が削除され、paynow_action_url が指定されていることがわかります。これは、ユーザーが「注文の確認」をクリックした後に直接 checkout_process に入ってほしいためです。そのため、form_action_url が指定されていない場合は、注文を確認するためのフォームは checkout_process ページに直接送信され、paynow_action_url は前の form_action_url の値です。 paynow_button 関数の実装も非常に簡単です。ここでは、元の process_button() 関数の内容を切り取っているだけですが、グローバル $order 変数を使用せず、$order = new order($order_id) を使用して再実行します。過去の注文で今すぐ支払うボタンを表示する準備として構築されたオブジェクト。 paypal.phpの変更後のファイルは以下の通りです:

<span> 1</span> <?<span>php
</span><span> 2</span><span>/*</span><span>*
</span><span> 3</span><span> * PayPal Website Payments Standard (IPN) メソッドの paypal.php 支払いモジュール クラス
</span><span> 4</span><span> *
</span><span> 5</span><span> * @packagepaymentMethod
</span><span> 6</span><span> * @copyright Copyright 2003-2010 Zen Cart 開発チーム
</span><span> 7</span><span> * @copyright 部分著作権 2003 osCommerce
</span><span> 8</span><span> * @license http://www.zen-cart.com/license/2_0.txt GNU パブリック ライセンス 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> * 依存関係がロードされていることを確認してください
</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) . 'payment/paypal/paypal_functions.php'<span>);
</span><span> 18</span><span> 19</span><span>/*</span><span>*
</span><span> 20</span><span> * PayPal Website Payments Standard (IPN) メソッドの paypal.php 支払いモジュール クラス
</span><span> 21</span><span> *
</span><span> 22</span><span>*/</span><span> 23</span><span>クラス</span>ペイパル<span>拡張</span><span>ベース{
</span><span> 24</span><span>/*</span><span>*
</span><span> 25</span><span> * 支払い方法を表す文字列
</span><span> 26</span><span> *
</span><span> 27</span><span> * @var 文字列
</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 はこの支払い方法の表示名です
</span><span> 32</span><span> *
</span><span> 33</span><span> * @var 文字列
</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 はこの支払い方法のソフト名です
</span><span> 38</span><span> *
</span><span> 39</span><span> * @var 文字列
</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 は、このモジュールがカタログに表示されるかどうかを決定します。
</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>$有効</span><span>;
</span><span> 48</span><span>/*</span><span>*
</span><span> 49</span><span> * コンストラクター
</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>関数</span> paypal(<span>$paypal_ipn_id</span> = ''<span>) {
</span><span> 55</span><span>グローバル</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> Admin の支払いモジュールのタイトル</span><span> 60</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span> && <span>define</span>('MODULE_PAYMENT_PAYPAL_IPN_DEBUG') && G != 'オフ') <span>$this</span>->タイトル.= ' (デバッグ モードがアクティブ)</span>'<span>;
</span><span> 61</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span> && MODULE_PAYMENT_PAYPAL_TESTING == 'テスト') <span>$this</span>->title .= '<span> (開発/テスト モードがアクティブ)</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> カタログ内の支払いモジュールのタイトル</span><span> 64</span><span> }</span><span> 65</span><span>$this</span>->説明 =<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>->有効 = ((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>->有効 = <span>false </span><span>;
</span><span> 75</span><span> 76</span><span>//</span><span>テーブル構造を検証</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> * ゾーンの一致とフラグ設定を計算して、このモジュールを顧客に表示するかどうかを決定します
</span><span> 81</span><span> *
</span><span> 82</span><span>*/</span><span> 83</span><span>関数</span><span> update_status() {
</span><span> 84</span><span>グローバル</span><span>$order</span>、<span>$db</span><span>;
</span><span> 85</span><span> 86</span><span>if</span> ( (<span>$this</span>->有効 == <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("selectzone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_ZONE . "' およびzone_country_id = '" . <span>$注文</span>-> billing['country']['id'] . "' ゾーン ID で注文します<span>);
</span><span> 89</span><span>ながら</span> (!<span>$check_query</span>-><span>EOF) {
</span><span> 90</span><span>if</span> (<span>$check_query</span>->フィールド['zone_id'] ) {
<span> 91</span><span>$check_flag</span> = <span>true</span><span>;
</span><span> 92</span><span>休憩</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>休憩</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>->有効 = <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 検証
</span><span>107</span><span> * (番号、所有者、および CVV の長さ)
</span><span>108</span><span> *
</span><span>109</span><span> * @return string
</span><span>110</span><span>*/</span><span>111</span><span>function</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> * チェックアウト支払いページにクレジット カード情報送信フィールド (存在する場合) とともに支払い方法名が表示されます
</span><span>116</span><span> *
</span><span>117</span><span> * @return 配列
</span><span>118</span><span>*/</span><span>119</span><span>関数</span><span>セレクション() {
</span><span>120</span><span>return</span><span>array</span>('id' => <span>$this</span>->コード,
<span>121</span> 'モジュール' => MODULE_PAYMENT_PAYPAL_TEXT_CATALOG_LOGO、
<span>122</span> 'アイコン' =><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> * 通常、クレジット カードの種類が受け入れられるかどうか、およびクレジット カード番号と有効期限が有効かどうかを評価します。
</span><span>127</span><span> * paypalモジュールは情報を収集していないため、このステップをスキップします。
</span><span>128</span><span> *
</span><span>129</span><span> * @return boolean
</span><span>130</span><span>*/</span><span>131</span><span>function</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> * チェックアウト確認ページにクレジットカード情報を表示します
</span><span>136</span><span> * PayPal サイトに転送する前に PayPal 用に何も収集されないため、これはスキップされます
</span><span>137</span><span> *
</span><span>138</span><span> * @return boolean
</span><span>139</span><span>*/</span><span>140</span><span>関数</span><span>確認() {
</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> * 注文確認画面で「送信」ボタンが押されたときに処理するデータとアクションを構築します。
</span><span>145</span><span> * これにより、処理のためにデータが支払いゲートウェイに送信されます。
</span><span>146</span><span> * (これらはチェックアウト確認ページの非表示フィールドです)
</span><span>147</span><span> *
</span><span>148</span><span> * @return string
</span><span>149</span><span>*/</span><span>150</span><span>function</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> * PayPal サイトにアクセスするときに使用する言語を決定します
</span><span>155</span><span>*/</span><span>156</span><span>function</span><span> getLanguageCode() {
</span><span>157</span><span>グローバル</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>['言語コード']), <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>['言語コード'<span>];
</span><span>167</span><span>if</span> (<span>strtoupper</span>(<span>$lang_code</span>) == 'EN') <span>$lang_code</span> = 'US'<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> * トランザクション情報を注文に保存し、支払いゲートウェイから返された結果を処理します
</span><span>174</span><span>*/</span><span>175</span><span>関数</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> * リファラーをチェックします
</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>関数</span> check_referrer(<span>$zf_domain</span><span>) {
</span><span>185</span><span>return</span><span>tru​​e</span><span>;
</span><span>186</span><span> }</span><span>187</span><span>/*</span><span>*
</span><span>188</span><span> * 管理ページコンポーネントを構築する
</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>グローバル</span><span>$db</span><span>;
</span><span>195</span><span>$output</span> = ''<span>;
</span><span>196</span><span>$sql</span> = "select * from " . TABLE_PAYPAL 。 " ここで order_id = '" 。 (int)<span>$zf_order_id</span> 。 "' 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 . 'payment/paypal/paypal_admin_notification.php')) <span>require</span>(DI) R_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> * 後処理アクティビティ
</span><span>203</span><span> * 注文がプロセッサーから返されるとき、PDT が成功した場合、結果が order-status-history に保存され、後続の参照のためにデータが記録されます。
</span><span>204</span><span> *
</span><span>205</span><span> * @return boolean
</span><span>206</span><span>*/</span><span>207</span><span>関数</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> * エラーメッセージの詳細を表示するために使用されます
</span><span>212</span><span> *
</span><span>213</span><span> * @return boolean
</span><span>214</span><span>*/</span><span>215</span><span>function</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> * モジュールがインストールされているかどうかを確認してください
</span><span>220</span><span> *
</span><span>221</span><span> * @return boolean
</span><span>222</span><span>*/</span><span>223</span><span>関数</span><span> check() {
</span><span>224</span><span>グローバル</span><span>$db</span><span>;
</span><span>225</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span><span>) {
</span><span>226</span><span>グローバル</span><span>$スニッファー</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) そうではないNULL デフォルト '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("selectconfiguration_value from " . TABLE_CONFIGURATION . " whereconfiguration_key = 'MODULE_PAYMENT_PAYPAL_STATUS'"<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>戻る</span><span>$this</span>-><span>_check;
</span><span>234</span><span> }
</span><span>235</span><span>/*</span><span>*
</span><span>236</span><span> * 支払いモジュールとその構成設定をインストールします
</span><span>237</span><span> *
</span><span>238</span><span>*/</span><span>239</span><span>関数</span><span> install() {
</span><span>240</span><span>グローバル</span><span>$db</span>、<span>$messageStack</span><span>;
</span><span>241</span><span>if</span> (<span>定義</span>('MODULE_PAYMENT_PAYPAL_STATUS'<span>)) {
</span><span>242</span><span>$messageStack</span>->add_session('PayPal ウェブサイト決済標準モジュールはすでにインストールされています。', 'エラー'<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>「失敗しました」<span>;
</span><span>245</span><span> }
</span><span>246</span><span>if</span> (<span>定義</span>('MODULE_PAYMENT_PAYPALWPP_STATUS'<span>)) {
</span><span>247</span><span>$messageStack</span>->add_session('注: PayPal Express Checkout モジュールはすでにインストールされています。Express がインストールされている場合は、Standard は必要ありません。', 'error'<span>);
</span><span>248</span> zen_redirect(zen_href_link(FILENAME_MODULES, 'set=payment&module=paypalwpp', 'NONSSL'<span>));
</span><span>249</span><span>return</span>「失敗しました」<span>;
</span><span>250</span><span> }</span><span>251</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title、configuration_key、c​​onfiguration_value、configuration_description、configuration_group_id、sort_order、set_function、date_added) 値 ('PayPal モジュールを有効にする', 'MODULE_PAYMENT_PAYPAL_STATUS) '、 'True', 'PayPal 支払いを受け入れますか?', '6', '0', 'zen_cfg_select_option(array('True', 'False'), ', now())"<span>);
</span><span>252</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title、configuration_key、c​​onfiguration_value、configuration_description、configuration_group_id、sort_order、date_added) 値 ('ビジネス ID'、'MODULE_PAYMENT_PAYPAL_BUSINESS_ID','"。 STORE_OWNER_EMAIL_ADDRESS."', 'PayPal アカウントのメインのメール アドレス。<br />注: これは、PayPal アカウント設定のメインのメール アドレスと <strong> 正確に </strong> 一致する必要があります。 <strong>大文字と小文字が区別されるため、paypal.com で PayPal プロフィール設定を確認し、ここに正確に同じメインのメール アドレスを入力してください。', '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)values('トランザクション通貨', 'MODULE_PAYMENT_PAYPAL_CURRENCY' 、」選択した通貨', '注文を PayPal に送信する通貨はどれですか? <br />注: サポートされていない通貨を PayPal に送信すると、自動的に USD に変換されます。', '6', '3 ', 'zen_cfg_select_option(array('選択された通貨', 'USDのみ', 'AUDのみ', 'CADのみ', 'EURのみ', 'GBPのみ', 'CHFのみ', 'CZKのみ', 'DKKのみ'、'HKD のみ'、'HUF のみ'、'JPY のみ'、'NOK のみ'、'NZD のみ'、'PLN のみ'、'SEK のみ'、'SGD のみ'、'THB のみ'、'MXN のみ', 'ILSのみ', 'PHPのみ', 'TWDのみ', 'BRLのみ', 'MYRのみ'), ', now())"<span>);
</span><span>254</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title,configuration_key,configuration_value,configuration_description,configuration_group_id,sort_order,use_function,set_function,date_added)values('Payment Zone', 'MODULE_PAYMENT_PAYPAL_ZONE) ' , '0', 'ゾーンが選択されている場合は、そのゾーンに対してのみこの支払い方法を有効にします。', '6', '4', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())"<span>);
</span><span>255</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title,configuration_key,configuration_value,configuration_description,configuration_group_id,sort_order,set_function,use_function,date_added)values('保留中の通知ステータスの設定', ' MODULE_PAYMENT_PAYPAL_PROCESSING_STATUS_ID', '" . DEFAULT_ORDERS_STATUS_ID . "', 'この支払いモジュールで行われた、まだ完了していない注文のステータスをこの値に設定します<br />(「保留中」を推奨)', '6', '5' , 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())"<span>);
</span><span>256</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title,configuration_key,configuration_value,configuration_description,configuration_group_id,sort_order,set_function,use_function,date_added)values('注文ステータスの設定', 'MODULE_PAYMENT_PAYPAL_ORDER_ STATUS_ID ', '2', '支払いが完了したこの支払いモジュールでの注文のステータスをこの値に設定します<br />(「処理中」を推奨)', '6', '6', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name'、now())"<span>);
</span><span>257</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title,configuration_key,configuration_value,configuration_description,configuration_group_id,sort_order,set_function,use_function,date_added)values('返金注文ステータスの設定',' MODULE_PAYMENT_PAYPAL_REFUND_ORDER_STATUS_ID', '1', 'この支払いモジュールで返金された注文のステータスをこの値に設定します<br />(「保留中」を推奨)', '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('表示のソート順。', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER', '0', '表示のソート順序は低いものが最初に表示されます。', '6', '8', now())"<span>);
</span><span>259</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)values('Address Override', 'MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE', '1', '1 に設定した場合) 、Zen Cart で選択された顧客の配送先住所は、PayPal に保存されている顧客のアドレス帳を上書きします。顧客には Zen Cart から住所が表示されますが、PayPal で編集することはできません。<br />(無効な住所です。) PayPal では提供されていないものとして扱われます。または、override=0)<br />0=上書きなし<br />1=ZC アドレスは PayPal アドレスの選択を上書きします', '6', '18', 'zen_cfg_select_option (array('0','1'), ', now())"<span>);
</span><span>260</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title、configuration_key、c​​onfiguration_value、configuration_description、configuration_group_id、sort_order、set_function、date_added) 値 ('配送先住所の要件?'、'MODULE_PAYMENT_PAYPAL_ADDRESS_必須です」 , '2', '購入者の配送先住所。0 に設定すると、顧客は配送先住所を入力するよう求められます。2 に設定すると、顧客は配送先住所を入力する必要があります。 <br />0=確認する<br />1=質問されません<br />2=必須<br /><br /><strong>注:顧客が独自の配送先住所を入力できるようにしてから、注文を処理するときに PayPal 確認の詳細を手動で確認して、適切な住所を確認してください。 Web ペイメント スタンダード (IPN) を使用する場合、Zen Cart は顧客が別の住所を選択したかどうかを認識しません。 PayPal での配送先住所と注文時に入力した配送先住所の比較。</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、c​​onfiguration_value、configuration_description、configuration_group_id、sort_order、set_function、date_added) 値 ('カート内の詳細な項目', 'MODULE_PAYMENT_PAYPAL_DETA) ILED_CART '、'いいえ'、'PayPal に品目の詳細を提供しますか? True に設定すると、割引が適用されず、税金と送料が単純な場合、品目の詳細が PayPal と共有されます。それ以外の場合は、カートの集計が行われます。 ', '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', ' , '支払いページのカスタム支払いページ スタイルを設定します。page_style の値は、ページ スタイルを追加または編集するときに選択したページ スタイル名と同じです。[マイ] の [プロファイル] サブタブからカスタム支払いページ スタイルを追加および編集できます。 PayPal サイトの [アカウント] タブ。常にプライマリ スタイルを参照したい場合は、これを「プライマリ」に設定します。デフォルトの PayPal ページ スタイルを参照したい場合は、これを「paypal」に設定します。', '6', '25'、今())"<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)values('PayPal Web サービスのモード<br /&gt ;<br />デフォルト:<br /><code>www.paypal.com/cgi-bin/webscr</code><br />または<br /><code> www.paypal.com/us/cgi-bin/webscr</code><br />または英国の場合、<br /><code>www.paypal.com/uk/cgi-bin/ webscr</code>', 'MODULE_PAYMENT_PAYPAL_HANDLER', 'www.paypal.com/cgi-bin/webscr', 'PayPal ライブ処理用の URL を選択してください', '6', '73', '', now()) "<span>);
</span><span>264</span><span>//</span><span>サンドボックス: 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 トークン (支払いデータ転送)', 'MODULE_PAYMENT_PAYPAL_PDTTOKEN', '', '処理後すぐにトランザクションをアクティブ化するために、ここに PDT トークン値を入力してください (トランザクションが通過した場合)検証).'、'6'、'25'、now()、'zen_cfg_password_display')"<span>);
</span><span>266</span><span>//</span><span> Paypalのテストオプションはこちら</span><span>267</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)values('Debug Mode', 'MODULE_PAYMENT_PAYPAL_IPN_DEBUG', 'Off', 'デバッグログを有効にしますか? <br />注: これにより、メールの受信トレイが非常に乱雑になる可能性があります!<br />ログは /includes/modules/payment/paypal/logs フォルダに保存されます<br />メールはストア所有者のアドレスに送信されます.<br />電子メール オプションは推奨されません。<br /><strong>通常の操作ではオフのままにしておきます。</strong>', '6', '71', 'zen_cfg_select_option(array('Off ','ログ ファイル','ログとメール'), ',now())"<span>);
</span><span>268</span><span>$db</span>->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title、configuration_key、c​​onfiguration_value、configuration_description、configuration_group_id、sort_order、date_added) 値 ('デバッグ電子メール アドレス'、'MODULE_PAYMENT_PAYPAL_DEBUG_EMAIL_A)アドレス「、」 .STORE_OWNER_EMAIL_ADDRESS."', 'PayPal のデバッグに使用するメール アドレス', '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> * モジュールとそのすべての設定を削除します
</span><span>274</span><span> *
</span><span>275</span><span>*/</span><span>276</span><span>function</span><span>remove() {
</span><span>277</span><span>グローバル</span><span>$db</span><span>;
</span><span>278</span><span>$db</span>->Execute("「 . TABLE_CONFIGURATION . " から削除します。ここで、configuration_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> * モジュールの構成に使用される構成キーの内部リスト
</span><span>283</span><span> *
</span><span>284</span><span> * @return 配列
</span><span>285</span><span>*/</span><span>286</span><span>関数</span><span>キー() {
</span><span>287</span><span>$keys_list</span> = <span>配列</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のテスト/デバッグオプションはここにあります:</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> デフォルトはストア所有者のメールアドレス </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>function</span> _getPDTresults(<span>$orderAmount</span>, <span>$my_currency</span>, <span>$pdtTX</span><span>) {
</span><span>315</span><span>グローバル</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>データを解析します</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>for</span> (<span>$i</span>=1; <span>$i</span>count(<span>$lines</span>);<span>$i</span>++<span>){
</span><span>323</span><span>if</span> (!<span>strstr</span>(<span>$lines</span>[<span>$i</span>], "=")) <span>続ける</span><span>;
</span><span>324</span><span>リスト</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['payment_status'] == ''<span>) {
</span><span>329</span> ipn_debug_email('PDT が無効なデータを返しました。代わりに IPN が処理するまで待つ必要があります。' . "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>else</span><span> {
</span><span>332</span> ipn_debug_email('PDT 返されたデータ ' . <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>['ビジネス'] = <span>$this</span>->pdtData['ビジネス'<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_payment(<span>$orderAmount</span>, <span>$my_currency) </span>、「PDT」) && <span>$this</span>->pdtData['payment_status'] == '完了'<span>);
</span><span>341</span><span>if</span> (<span>$this</span>->pdtData['payment_status'] != '' && <span>$this</span>->pdtData['payment_status'] != 'Completed'<span>) {
</span><span>342</span> ipn_debug_email('PDT 警告 :: 注文は「完了」としてマークされていません。保留中の理由を確認するか、IPN が完了するまでお待ちください。' . "n" . '[payment_status] => ' . <span>$this</span>- >pdtData['payment_status'] . '[pending_reason] => <span>$this</span>->pdtData['pending_reason'<span>]);
</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>「 . TABLE_PAYPAL . 」から
<span>347</span><span> WHERE txn_id = :transactionID またはparent_txn_id = :transactionID
</span><span>348</span> 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 警告 :: トランザクションはすでに存在します。おそらく IPN がすでに追加しています。PDT 処理は終了しました。'<span>);
</span><span>353</span><span>$pdtTXN_is_unique</span> = <span>false</span><span>;
</span><span>354</span> } <span>else</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>関数</span><span> tableCheckup() {
</span><span>365</span><span>グローバル</span><span>$db</span>、<span>$スニファー</span><span>;
</span><span>366</span><span>$fieldHealthy1</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>$fieldHealthy2</span> = (<span>$sniffer</span>->field_exists(TABLE_PAYPAL, 'module_name')) ? <span>本当</span> : -1<span>;
</span><span>368</span><span>$field大丈夫3</span> = (<span>$sniffer</span>->field_exists(TABLE_PAYPAL, 'order_id')) ? <span>本当</span> : -1<span>;
</span><span>369</span><span>370</span><span>if</span> (<span>$field大丈夫1</span> == -1<span>) {
</span><span>371</span><span>$sql</span> = "「 .<span> TABLE_PAYPAL 」のフィールドを表示します。
</span><span>372</span><span>$result</span> = <span>$db</span>->Execute(<span>$sql</span><span>);
</span><span>373</span><span>ながら</span> (!<span>$結果</span>-><span>EOF) {
</span><span>374</span><span>if</span> (<span>$result</span>->fields['フィールド'] == 'txn_id'<span>) {
</span><span>375</span><span>if</span> (<span>$result</span>->fields['Type'] == 'varchar(20)'<span>) {
</span><span>376</span><span>$field大丈夫1</span> = <span>true</span>; <span>//</span><span> が存在し、必要なタイプと一致するため、他の検査にスキップします</span><span>377</span> } <span>else</span><span> {
</span><span>378</span><span>$fieldHealthy1</span> = <span>$result</span>->fields['Type']; <span>//</span><span>は一致しないので、「そのまま」を返します</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>$field大丈夫1</span> !== <span>true</span><span>) {
</span><span>387</span><span>//</span><span> v1.3.7.x のテーブル構造の一時的な修正 -- 後のリリースでは削除される可能性があります</span><span>388</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGEpayment_type payment_type varchar(40) NOT NULL デフォルト ''"<span>);
</span><span>389</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE txn_type txn_type varchar(40) NOT NULL デフォルト ''"<span>);
</span><span>390</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGEpayment_statuspayment_status varchar(32) NOT NULL デフォルト ''"<span>);
</span><span>391</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGEreason_codereason_code varchar(40)defaultNULL"<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 . " CHANGE 請求書請求書 varchar(128) デフォルト 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 address_name address_name varchar(64) default 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) デフォルト NULL"<span>);
</span><span>399</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE payer_email payer_email varchar(128) NOT NULL デフォルト ''"<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 . " CHANGEReceiver_emailreceiver_email varchar(128) NOT NULL デフォルト ''"<span>);
</span><span>402</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE txn_id txn_id varchar(20) NOT NULL デフォルト ''"<span>);
</span><span>403</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGEparent_txn_idparent_txn_id varchar(20)defaultNULL"<span>);
</span><span>404</span><span> }</span><span>405</span><span>if</span> (<span>$field大丈夫2</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>$field大丈夫3</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 デフォルト '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>グローバル</span><span>$db</span>、<span>$order</span>、<span>$通貨</span>、<span>$通貨</span><span>;
</span><span>416</span><span>require_once</span>(DIR_WS_CLASSES . 'order.php'<span>);
</span><span>417</span><span>$order</span> = <span>新しい</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> PayPal がセッションを失った場合に備えて、セッション内容を永久に保存します</span><span>430</span><span>$_SESSION</span>['pipn_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>['pipn_key_to_remove']) . "'"<span>);
</span><span>432</span><span>433</span><span>$sql</span> = "に挿入" 。 TABLE_PAYPAL_SESSION 。 "<span> (session_id、saved_session、expiry) 値 (
</span><span>434</span> '" .zen_db_input(<span>$_SESSION</span>['pipn_key_to_remove']) . "<span>',
</span><span>435</span> '" . <span>base64_encode</span>(<span>serialize</span>(<span>$_SESSION</span>)) . "<span>',
</span><span>436</span> '" . (<span>時間</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>空</span>(<span>$order</span>->情報['通貨'<span>])){
</span><span>442</span><span>$my_currency</span>=<span>$order</span>->info['通貨'<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>$currency</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>$電話</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>->顧客['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>他</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' =>私たち、
<span>466</span><span>//</span><span>'lc' => $order->customer['country']['iso_code_2'],</span><span>467</span> 'charset' =>文字コード、
<span>468</span> 'page_style' => MODULE_PAYMENT_PAYPAL_PAGE_STYLE、
<span>469</span> 'カスタム' => zen_session_name() 。 '=' 。 zen_session_id()、
<span>470</span> '請求書' => <span>$order</span>->情報['num']、
<span>471</span> 'ビジネス' => MODULE_PAYMENT_PAYPAL_BUSINESS_ID、
<span>472</span> '戻る' => zen_href_link(FILENAME_CHECKOUT_PROCESS, 'referer=paypal', 'SSL'),
<span>473</span> 'cancel_return' => zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'),
<span>474</span> 'ショッピング 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>配列</span><span>(
</span><span>479</span> '名' => replace_accents(<span>$order</span>->顧客['名']),
<span>480</span> '姓' => replace_accents(<span>$order</span>->顧客['姓']),
<span>481</span> 'アドレス1' => replace_accents(<span>$order</span>->顧客['番地']),
<span>482</span> '都市' => replace_accents(<span>$order</span>->customer['city']),
<span>483</span> '状態' => zen_get_zone_code(<span>$order</span>->顧客['country']['id'], <span>$order</span>->顧客['zone_id'], <span>$order</span>->顧客['state']),
<span>484</span> 'zip' => <span>$order</span>->顧客['郵便番号']、
<span>485</span> '国' => <span>$order</span>->顧客['国']['iso_code_2'],
<span>486</span> 'メール' => <span>$order</span>->顧客['email_address'],
<span>487</span><span> );
</span><span>488</span><span>//</span><span>住所2行目はオプションです</span><span>489</span><span>if</span> (<span>$order</span>->customer['suburb'] != '') <span>$optionsCust</span>['address2'] = <span>$order</span>->顧客['郊外'<span>];
</span><span>490</span><span>//</span><span>日本語の住所レイアウトの異なる形式:</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>->顧客['郵便番号'], 3<span>);
</span><span>492</span><span>if</span> (MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED == 2<span>) {
</span><span>493</span><span>$optionsCust</span> = <span>配列</span><span>(
</span><span>494</span> '名' => replace_accents(<span>$order</span>->delivery['firstname'] != '' ? <span>$order</span>->delivery['firstname'] : <span>$order</span>->billing['firstname']),
<span>495</span> '姓' => replace_accents(<span>$order</span>->delivery['lastname'] != '' ? <span>$order</span>->delivery['lastname'] : <span>$order</span>->billing['lastname']),
<span>496</span> 'アドレス1' => replace_accents(<span>$order</span>->delivery['street_address'] != '' ? <span>$order</span>->delivery['street_address'] : <span>$order</span>->billing['street_address']),
<span>497</span> '都市' => replace_accents(<span>$order</span>->delivery['city'] != '' ? <span>$order</span>->delivery['city'] : <span>$order</span>->billing['city']),
<span>498</span> '状態' => (<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['郵便番号'] != '' ? <span>$order</span>->delivery['郵便番号'] : <span>$order</span>->billing['postcode']),
<span>500</span> '国' => (<span>$order</span>->delivery['country']['title'] != '' ? <span>$order</span>->配送['国']['タイトル'] : <span>$order</span>->請求['国']['タイトル'])、
<span>501</span> '国コード' => (<span>$order</span>->delivery['country']['iso_code_2'] != '' ? <span>$order</span>->delivery['country']['iso_code_2'] : <span>$order</span>->請求['国']['iso_code_2'])、
<span>502</span> 'メール' => <span>$order</span>->顧客['email_address'],
<span>503</span><span> );
</span><span>504</span><span>if</span> (<span>$order</span>->delivery['郊外'] != '') <span>$optionsCust</span>['address2'] = <span>$order</span>->delivery['郊外'<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>) ->配達['郵便番号']、0、3) 。 「-」。 <span>substr</span>(<span>$order</span>->delivery['郵便番号'], 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>可能な場合はカートの内容の詳細を準備します</span><span>510</span><span>if</span> (MODULE_PAYMENT_PAYPAL_DETAILED_CART == 'Yes') <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>設定解除</span>(<span>$optionsLineItems</span>['shipping'<span>]);
</span><span>517</span><span> }
</span><span>518</span><span>unset</span>(<span>$optionsLineItems</span>['小計'<span>]);
</span><span>519</span><span>//</span><span> 計算の不一致や割引などにより品目の詳細を保持できなかった場合、デフォルトで集約モードになります</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> // デバッグ:
</span><span>523</span><span> //ipn_debug_email('品目の詳細 (空白の場合、データの不一致またはクレジットが適用されたためバイパスされたことを意味します): ' . "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>$options集計</span> = <span>配列</span><span>(
</span><span>527</span> 'cmd' => '_ext-enter',
<span>528</span> 'アイテム名' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_TITLE、
<span>529</span> 'アイテム番号' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_ITEMNUM、
<span>530</span><span>//</span><span>'num_cart_items' => sizeof($order->products),</span><span>531</span> '金額' => <span>number_format</span>(<span>$this</span>->transaction_amount, <span>$currency</span>->get_Decimal_places(<span>$my_currency</span>)),
<span>532</span> '配送' => 「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>配列</span><span>(
</span><span>537</span> 'アップロード' => (int)(<span>sizeof</span>(<span>$order</span>->商品) > 0),
<span>538</span> '通貨コード' => <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> //'請求書' => ''、</span><span>542</span><span> );
</span><span>543</span><span>544</span><span>//</span><span> ラインアイテム情報が無効な場合は、aggregate:</span><span>545</span><span>if</span> (<span>sizeof</span>(<span>$optionsLineItems</span>) > <span>$optionsAggre)ゲート</span> = <span> $optionsLineItems</span><span>;
</span><span>546</span><span>547</span><span>//</span><span>送信を準備します</span><span>548</span><span>$options</span> = <span>array_merge</span>(<span>$optionsCore</span>, <span>$optionsCust</span>, tionsPhone<span>、</span>$optionsShip<span>、</span>$optionsTrans <span>、</span>$optionsAggregate<span></span>);
<span></span>549<span></span>//<span></span>ipn_debug_email('送信用のキー: ' .print_r($options, true));
<span></span>550<span></span>551<span></span> // ボタンフィールドを構築します<span></span>552<span></span>foreach<span> (</span>$options<span></span>as<span></span>$name<span> => </span>$value<span></span>) {
<span></span>553<span></span>//<span></span>引用符を削除します<span></span>554<span></span>$value<span> = </span>str_replace<span>('"', '', </span>$value<span></span>);
<span></span>555<span></span>//<span></span>無効な文字をチェック<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 で無効な送信キーが見つかりました: ' . </span>$name<span> . ' (' . </span>$value<span> . ')'</span>);
<span></span>558<span></span>休憩<span></span>;
<span></span>559<span></span> }
<span></span>560<span></span>//<span></span> & および = 記号には特別な処理が必要ですか?
<span></span>561<span></span> //if (strpos($value, '&') !== false || strpos($value, '=') !== false) $value = urlencode($value);<span></span>562 <span></span>563<span></span>$bu</strong></strong>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

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

watch4proとGTのどちらが優れていますか? watch4proとGTのどちらが優れていますか? Sep 26, 2023 pm 02:45 PM

Watch4proとgtはそれぞれ特徴や適用シーンが異なりますが、総合的な機能、高性能、スタイリッシュな外観を重視し、価格は高くてもいいという方にはWatch 4 Proの方が適しているかもしれません。高度な機能要件はなく、バッテリー寿命と手頃な価格を重視する場合は、GT シリーズの方が適しているかもしれません。最終的な選択は、個人のニーズ、予算、好みに基づいて決定する必要がありますが、購入する前に自分のニーズを慎重に検討し、さまざまな製品のレビューや比較を参照して、より情報に基づいた選択を行うことをお勧めします。

请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 Jun 13, 2016 am 10:24 AM

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

iPadOS 17.4 で iPad のバッテリー寿命を最適化する方法 iPadOS 17.4 で iPad のバッテリー寿命を最適化する方法 Mar 21, 2024 pm 10:31 PM

iPadOS 17.4 で iPad のバッテリー寿命を最適化する方法 バッテリー寿命の延長はモバイル デバイス エクスペリエンスの鍵であり、iPad がその良い例です。 iPad のバッテリーの消耗が早すぎると感じても、心配しないでください。iPadOS 17.4 には、デバイスの実行時間を大幅に延長できるトリックや微調整が多数あります。この詳細なガイドの目的は、情報を提供するだけではなく、iPad の使用方法を変え、全体的なバッテリー管理を強化し、充電せずにデバイスをより長く使用できるようにすることです。ここで概説したプラクティスを採用することで、個人のニーズや使用パターンに合わせてテクノロジーをより効率的かつ意識的に使用するための一歩を踏み出すことができます。主要なエネルギー消費者を特定する

Microsoft は、Copilot を使用して Windows 11 23H2 ビルドをリリース プレビュー チャネルに展開しています Microsoft は、Copilot を使用して Windows 11 23H2 ビルドをリリース プレビュー チャネルに展開しています Sep 28, 2023 pm 07:17 PM

誰もが今日の Windows 1123H2 リリースを楽しみにしています。実際、Microsoft は、正式リリース段階に最も近いチャネルであるリリース プレビューのアップデートを開始したところです。ビルド 22631 として知られる Microsoft によると、ブランドを変更した新しいチャット アプリ、Phone Links、および Play Together ウィジェットを展開しており、これらは過去数か月間他の社内チャネルでテストされてきました。 「この新しい更新プログラムは、Windows 11 バージョン 22H2 と同じサービス ブランチとコード ベースを持ち、Windows の Copilot (プレビュー) を含む、新しく発表されたすべての機能と累積的になります」と Microsoft は約束しています。レドモンド関係者はさらに

See all articles