Zencart는 Taobao 백엔드에서 주문 가격을 수정하는 것과 유사하게 주문 후 결제합니다.
Zencart가 결제를 위해 Paypal을 사용하는 경우 누락된 주문이 발생합니다. 즉, Paypal이 고객의 결제를 받았지만 웹사이트 백엔드에는 고객의 주문이 없습니다. 페이팔에서 주문이 누락되는 가장 큰 이유는 고객이 페이팔 웹사이트에 접속해 결제를 완료했는데 바로 창을 닫거나, 네트워크가 불안정해 웹사이트로 정상적으로 점프하지 못하는 경우다.
Paypal 주문 누락 문제에 대한 몇 가지 해결 방법이 있습니다.
1. 장바구니 옵션에서 세부 항목을 켭니다.
원칙: zencart 백엔드 모듈 --> PayPal 웹사이트 결제 표준 - IPN에서 장바구니에 있는 세부 품목을 엽니다. 이 옵션은 모든 주문 항목 정보를 PayPal로 전송합니다. 고객이 성공적으로 결제했지만 백엔드에서 주문을 생성하지 못한 경우 PayPal 계정 거래 정보를 통해 고객이 구매한 항목도 확인할 수 있습니다.
2. Paypal Sessions Viewer 플러그인을 사용하여 Paypal에서 놓친 주문을 검색하세요.
원칙: zencart 장바구니에 담긴 상품이 페이팔을 통해 결제된 경우 결제에 대한 모든 기록이 paypal_session 테이블에 저장됩니다. 결제가 성공하면 페이팔 웹사이트가 쇼핑 웹사이트로 이동하고 주문이 생성되면 zencart 시스템은 이 paypal_session 기록을 자동으로 삭제합니다. 쇼핑 웹사이트로 이동하지 못하고 주문이 성공적으로 생성되지 않으면 Paypal을 사용할 때 이 결제 기록 데이터가 항상 데이터베이스에 저장됩니다. 세션 뷰어 플러그인을 사용하면 고객 정보, 쇼핑 시간, 제품 정보 등 기록된 모든 데이터를 볼 수 있으며, 결제가 완료되었다고 확신하는 경우 이 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단계까지의 과정에서 사용자는 결제가 성공했다고 생각하고 바로 웹페이지를 닫거나, 네트워크상의 문제로 인해 checkout_process 페이지로 정상적으로 점프하지 못하는 경우가 발생할 수 있습니다. 이는 주문이 정상적으로 생성될 수 없기 때문에 매우 심각한 문제입니다. 위의 분석을 바탕으로 프로세스를 약간 변경하여 결제 전에 주문이 생성되도록 하여 제3자 결제 웹사이트에서 결제를 되돌릴 수 없더라도 사용자가 결제하지 않도록 하고자 합니다. 성공적이지만 주문 상태에는 오류가 없습니다. 주문 누락을 방지하기 위해 zen-cart 주문 및 결제 프로세스를 수정하는 방법에 대한 Dongguo 선생님의 튜토리얼을 따랐습니다. 이 튜토리얼은 상대적으로 오래되었고 그다지 포괄적이지 않기 때문에 실제 필요에 따라 직접 제작했습니다. 좀 더 완벽하고 자세하게 만들어야 해요. 수정된 도면은 기본적으로 다음과 같습니다. 1. checkour_confirmation 페이지에서 주문 확인 후, 바로 account_history_info 페이지로 접속하여 결제 페이지로 진입하게 됩니다. 아래 그림과 같습니다.
먼저 주문을 한 뒤 결제를 하기 때문에 결제 단계가 이전보다 한 단계 더 진행됩니다. 결제 과정을 단순화하기 위해 Fast And Easy Checkout For Zencart(빠른 결제) 플러그인을 설치했습니다. 이 플러그인을 설치하려면 빠른 결제 플러그인의 종속 플러그인인 Plug-in 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이 부여된 것을 볼 수 있습니다. 왜냐하면 사용자가 "Confirm Order"를 클릭한 후 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 웹사이트 결제 표준(IPN) 방식을 위한 paypal.php 결제 모듈 클래스 </span><span> 4</span><span> * </span><span> 5</span><span> * @package PaymentMethod </span><span> 6</span><span> * @copyright Copyright 2003-2010 Zen Cart 개발팀 </span><span> 7</span><span> * @copyright Portions 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>정의</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) .'결제/페이팔/paypal_functions.php'<span>); </span><span> 18</span><span> 19</span><span>/*</span><span>* </span><span> 20</span><span> * PayPal 웹사이트 결제 표준(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>$enabled</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 = '페이팔'<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> 관리자의 결제 모듈 제목</span><span> 60</span><span>if</span> (IS_ADMIN_FLAG === <span>true</span> && <span>정의됨 </span>('MODULE_PAYMENT_PAYPAL_IPN_DEBUG') && MODULE_PAYMENT_PAYPAL_IPN_DEBUG != '끄기') <span>$this</span>->title .= '<span> (디버그 모드 활성화)</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>'<span>; </span><span> 62</span> } <span>그밖에</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>->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> 테이블 구조 확인</span><span> 77</span><span>if</span> (IS_ADMIN_FLAG === <span>참</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>->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 . " ' 및 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>참</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>참</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 문자열 </span><span>110</span><span>*/</span><span>111</span><span>함수</span><span> javascript_validation() { </span><span>112</span><span>반품</span><span>거짓</span><span>; </span><span>113</span><span> } </span><span>114</span><span>/*</span><span>* </span><span>115</span><span> * Checkout 결제 페이지에 신용카드 정보 제출 필드(있는 경우)와 함께 결제 방법 이름이 표시됩니다. </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>반환</span><span>배열</span>('id' => <span>$this</span>->code, <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> * 페이팔 모듈은 정보를 수집하지 않으므로 이 단계는 생략합니다. </span><span>128</span><span> * </span><span>129</span><span> * @return 부울 </span><span>130</span><span>*/</span><span>131</span><span>함수</span><span> pre_confirmation_check() { </span><span>132</span><span>반품</span><span>거짓</span><span>; </span><span>133</span><span> } </span><span>134</span><span>/*</span><span>* </span><span>135</span><span> * 결제 확인 페이지에 신용카드 정보 표시 </span><span>136</span><span> * 페이팔 사이트로 전달하기 전 페이팔로 수집된 것이 없으므로 생략합니다. </span><span>137</span><span> * </span><span>138</span><span> * @return 부울 </span><span>139</span><span>*/</span><span>140</span><span>기능</span><span> 확인() { </span><span>141</span><span>반품</span><span>거짓</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 문자열 </span><span>149</span><span>*/</span><span>150</span><span>함수</span><span> process_button() { </span><span>151</span><span>반품</span><span>거짓</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>함수</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>배열</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>배열</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>배열</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> = '미국'<span>; </span><span>168</span><span> } </span><span>169</span><span>//</span><span>반품 $orderISO['countries_iso_code_2'];</span><span>170</span><span>반품</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>반품</span><span>거짓</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 부울 </span><span>183</span><span>*/</span><span>184</span><span>함수</span> check_referrer(<span>$zf_domain</span><span>) { </span><span>185</span><span>반품</span><span>참</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 문자열 </span><span>192</span><span>*/</span><span>193</span><span>기능</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 . '결제 /paypal/paypal_admin_notification.php')) <span>요구</span>(DIR_FS_CATALOG . DIR_WS_MODULES . '결제/페이팔/paypal_admin_notification.php'<span>); </span><span>199</span><span>반환</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가 성공한 경우 결과를 주문 상태 내역에 저장하고 이후 참조를 위해 데이터를 기록합니다. </span><span>204</span><span> * </span><span>205</span><span> * @return 부울 </span><span>206</span><span>*/</span><span>207</span><span>함수</span><span> after_process() { </span><span>208</span><span>반품</span><span>거짓</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 부울 </span><span>214</span><span>*/</span><span>215</span><span>함수</span><span> output_error() { </span><span>216</span><span>반품</span><span>거짓</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 부울 </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>$sniffer</span><span>; </span><span>227</span><span>if</span> (<span>$sniffer</span>->field_exists(TABLE_PAYPAL, 'zen_order_id')) <span>$db</span>->실행 ("ALTER TABLE " . TABLE_PAYPAL . " CHANGE COLUMN zen_order_id order_id int(11) NOT 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("" . TABLE_CONFIGURATION . "에서 구성_값 선택, 여기서 구성_키 = '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 웹사이트 결제 표준 모듈이 이미 설치되었습니다.', 'error'<span>); </span><span>243</span> zen_redirect(zen_href_link(FILENAME_MODULES, 'set=결제&모듈=페이팔', 'NONSSL'<span>)); </span><span>244</span><span>반환</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=결제&모듈=paypalwpp', 'NONSSL'<span>)); </span><span>249</span><span>반품</span> '실패'<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_add) 값( '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, 구성_키, 구성_값, 구성_설명, 구성_그룹_id, sort_order, 날짜_추가) 값('비즈니스 ID', 'MODULE_PAYMENT_PAYPAL_BUSINESS_ID','".STORE_OWNER_EMAIL_ADDRESS."', 'PayPal 계정의 기본 이메일 주소입니다.<br />참고: 이 주소는 PayPal 계정의 기본 이메일 주소와 <strong>정확히</strong>일치해야 합니다. PayPal 계정 설정은 <strong>대소문자를 구분합니다</strong> 따라서 paypal.com에서 PayPal 프로필 기본 설정을 확인하고 여기에 정확히 동일한 기본 이메일 주소를 입력하십시오.', '6', ' 2', 지금())"<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_add) 값( '거래 통화', '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_add) 값 ('결제 영역', 'MODULE_PAYMENT_PAYPAL_ZONE', '0', '영역을 선택한 경우 해당 영역에 대해서만 이 결제 방법을 활성화하세요.', '6', '4', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', 지금())"<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_add) 값 ('보류 알림 상태 설정', '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_add) 값 ('주문 상태 설정', '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_add) value ('환불 주문 상태 설정', '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_add) 값('Sort 표시 순서.', '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_add) 값('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 (배열('0','1'), ', now())"<span>); </span><span>260</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_add) 값( '배송 주소 요구사항?', 'MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED', '2', '구매자의 배송 주소입니다. 0으로 설정하면 고객에게 배송 주소를 포함하라는 메시지가 표시됩니다. . 2로 설정하면 고객은 배송 주소를 제공해야 합니다.<br />0=프롬프트<br />1=묻지 않음<br />2=필수<br /><br /><strong>참고: 고객이 자신의 배송 주소를 입력하도록 허용하는 경우 IPN(웹사이트 결제 표준)을 사용할 때 PayPal 확인 세부정보를 직접 수동으로 확인하여 올바른 주소를 확인하세요. Zen Cart는 PayPal에서 대체 배송 주소를 선택하는지 아니면 주문할 때 입력한 주소를 선택하는지 알 수 없습니다.', '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_add) 값( '장바구니의 세부 품목', 'MODULE_PAYMENT_PAYPAL_DETAILED_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, 구성_키, 구성_값, 구성_설명, 구성_그룹_id, sort_order, 날짜_추가) 값('페이지 Style', 'MODULE_PAYMENT_PAYPAL_PAGE_STYLE', 'Primary', '결제 페이지에 대한 맞춤 결제 페이지 스타일을 설정합니다. page_style 값은 페이지 스타일을 추가하거나 편집할 때 선택한 페이지 스타일 이름과 동일합니다. PayPal 사이트 내 계정 탭의 프로필 하위 탭에 있는 결제 페이지 스타일. 항상 기본 스타일을 참조하려면 이를 "기본"으로 설정하세요. 기본 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_add) 값( 'PayPal 웹 서비스 모드<br /><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_add,use_function) 값('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_add) 값('디버그 모드', 'MODULE_PAYMENT_PAYPAL_IPN_DEBUG', 'Off', '디버그 로깅을 활성화하시겠습니까? <br />참고: 이로 인해 이메일 받은 편지함이 복잡해질 수 있습니다!<br />로깅은 /includes/modules/결제/paypal/logs 폴더로 이동됩니다.<br />이메일은 상점 소유자 주소로 이동됩니다. .<br />이메일 옵션은 권장되지 않습니다.<br /><strong>정상적인 작동을 위해서는 OFF로 두세요.</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,configuration_value,configuration_description,configuration_group_id,sort_order,date_add) 값('Debug 이메일 주소', 'MODULE_PAYMENT_PAYPAL_DEBUG_EMAIL_ADDRESS','".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>함수</span><span> 제거() { </span><span>277</span><span>글로벌</span><span>$db</span><span>; </span><span>278</span><span>$db</span>->Execute("delete from " . TABLE_CONFIGURATION . " whereconfiguration_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>참</span><span>) { </span><span>307</span><span>if</span> (<span>isset</span>(<span>$_GET</span>['debug']) && <span>$_GET</span>[ '디버그']=='설정'<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>반환</span><span>$keys_list</span><span>; </span><span>312</span><span> }</span><span>313</span><span>314</span><span>함수</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>폭발</span>("n", <span>$respdata</span><span>); </span><span>321</span><span>$this</span>->pdtData = <span>배열</span><span>(); </span><span>322</span><span></span>(<span>$i</span>=1; <span>$i</span><<span>개</span>(<span> $라인</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>폭발</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['결제_상태'] == ''<span>) { </span><span>329</span> ipn_debug_email('PDT가 잘못된 데이터를 반환했습니다. 대신 IPN이 처리될 때까지 기다려야 합니다. ' . "n" . <span>print_r</span>(<span>$this</span>-> ;pdtData, <span>참</span><span>)); </span><span>330</span><span>반품</span><span>거짓</span><span>; </span><span>331</span> } <span>그밖에</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_지불(<span>$orderAmount</span>, <span>$my_currency</span>, 'PDT') && <span>$this</span>->pdtData['지불_상태'] == '완료'<span>); </span><span>341</span><span>if</span> (<span>$this</span>->pdtData['결제_상태'] != '' && <span>$this</span>-> ;pdtData['결제_상태'] != '완료'<span>) { </span><span>342</span> ipn_debug_email('PDT 경고 :: 주문이 "완료"로 표시되지 않았습니다. 보류 이유를 확인하거나 IPN이 완료될 때까지 기다리세요.' . "n" . '[지불_상태] => ' . <span>$this</span>->pdtData['결제_상태'] . '[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, 보류 중인_이유 <span></span>346<span> FROM " . TABLE_PAYPAL . " </span>347<span></span> txn_id = :transactionID 또는 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 경고:: 트랜잭션이 이미 존재합니다. 아마도 IPN이 이미 추가했을 수 있습니다. PDT 처리가 종료되었습니다.'</span>); <span></span>353<span></span>$pdtTXN_is_unique<span> = </span>거짓<span></span>; <span></span>354<span> } </span>그밖에<span></span> { <span></span>355<span></span>$pdtTXN_is_unique<span> = </span>참<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>반품<span></span>$PDTstatus<span></span>; <span></span>361<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>$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>사실</span> : -1<span>; </span><span>368</span><span>$fieldOkay3</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>$fieldOkay1</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>$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>참</span>; <span>//</span><span>이 존재하고 필수 유형과 일치하므로 다른 점검으로 건너뛰세요</span><span>377</span> } <span>else</span><span> { </span><span>378</span><span>$fieldOkay1</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>$fieldOkay1</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 . " CHANGE Payment_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 . " CHANGE Payment_status Payment_status varchar(32) NOT NULL 기본값 ''"<span>); </span><span>391</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE Reason_code Reason_code varchar(40) 기본값 NULL"<span>); </span><span>392</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE 보류 중_reason 보류 중_reason varchar(32) 기본값 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) 기본값 NULL"<span>); </span><span>395</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE address_name address_name varchar(64) 기본값 NULL"<span>); </span><span>396</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE address_street address_street varchar(254) 기본값 NULL"<span>); </span><span>397</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE address_city address_city varchar(120) 기본값 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 기본값 ''"<span>); </span><span>401</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " CHANGE receive_email receive_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 . " CHANGE parent_txn_id parent_txn_id varchar(20) 기본값 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 기본값 '' after txn_type"<span>) ; </span><span>407</span><span>$db</span>->Execute("ALTER TABLE " . TABLE_PAYPAL . " ADD COLUMN module_mode varchar(40) NOT NULL 기본값 '' 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 기본값 '0'"<span>); </span><span>411</span><span> } </span><span>412</span><span> } </span><span>413</span><span>414</span><span>기능</span> paynow_button(<span>$order_id</span><span>) { </span><span>415</span><span>글로벌</span><span>$db</span>, <span>$order</span>, <span>$currency</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>배열</span><span>(); </span><span>419</span><span>$optionsCore</span> = <span>배열</span><span>(); </span><span>420</span><span>$optionsPhone</span> = <span>배열</span><span>(); </span><span>421</span><span>$optionsShip</span> = <span>배열</span><span>(); </span><span>422</span><span>$optionsLineItems</span> = <span>배열</span><span>(); </span><span>423</span><span>$optionsAggregate</span> = <span>배열</span><span>(); </span><span>424</span><span>$optionsTrans</span> = <span>배열</span><span>(); </span><span>425</span><span>$buttonArray</span> = <span>배열</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> 페이팔이 세션을 잃을 경우에 대비해 세션 내용을 영구적으로 저장하세요</span><span>430</span><span>$_SESSION</span>['ppipn_key_to_remove'] = <span>세션_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> = "에 삽입 " . TABLE_PAYPAL_SESSION. "<span> (session_id, 저장된_세션, 만료) 값( </span><span>434</span> '" . zen_db_input(<span>$_SESSION</span>['ppipn_key_to_remove']) . "<span>', </span><span>435</span> '" . <span>base64_encode</span>(<span>직렬화</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>->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>$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>->고객['전화'<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>배열</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>배열</span><span>( </span><span>465</span> 'lc' => 우리를, <span>466</span><span>//</span><span>'lc' => $order->customer['country']['iso_code_2'],</span><span>467</span> '문자 집합' => 문자세트, <span>468</span> '페이지_스타일' => 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> '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','친구' => '9E82WJBKKGPLQ', <span>477</span><span> ); </span><span>478</span><span>$optionsCust</span> = <span>배열</span><span>( </span><span>479</span> '이름' => replacement_accents(<span>$order</span>->customer['firstname']), <span>480</span> '성' => replacement_accents(<span>$order</span>->customer['lastname']), <span>481</span> '주소1' => replacement_accents(<span>$order</span>->고객['street_address']), <span>482</span> '도시' => replacement_accents(<span>$order</span>->customer['city']), <span>483</span> '상태' => zen_get_zone_code(<span>$order</span>->customer['country']['id'], <span>$order</span>->customer['zone_id'], <span>$order</span>->고객['상태']), <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['교외'] != '') <span>$optionsCust</span>['address2'] = <span>$order</span>->customer['교외'<span>] ; </span><span>490</span><span>//</span><span> 일본어 주소 레이아웃의 다른 형식:</span><span>491</span><span>if</span> (<span>$ 주문</span>->customer['country']['iso_code_2'] == 'JP') <span>$optionsCust</span>['zip'] = <span>substr</span>(<span>$ 주문</span>->고객['우편번호'], 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> '이름' => replacement_accents(<span>$order</span>->delivery['firstname'] != '' ? <span>$order</span>->delivery['firstname'] : <span>$order</span> ->결제['이름']), <span>495</span> '성' => replacement_accents(<span>$order</span>->delivery['lastname'] != '' ? <span>$order</span>->delivery['lastname'] : <span>$order</span> ->결제['성']), <span>496</span> '주소1' => replacement_accents(<span>$order</span>->delivery['street_address'] != '' ? <span>$order</span>->delivery['street_address'] : <span>$order</span> ->결제['street_address']), <span>497</span> '도시' => replacement_accents(<span>$order</span>->delivery['city'] != '' ? <span>$order</span>->delivery['city'] : <span>$order</span> ->결제['도시']), <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['국가']['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>- >결제['우편번호']), <span>500</span> '국가' => (<span>$order</span>->delivery['국가']['title'] != '' ? <span>$order</span>->배송['국가']['제목'] : <span>$주문</span>->결제['국가']['제목']), <span>501</span> '국가 코드' => (<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> '이메일' => <span>$order</span>->고객['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>->배달['교외'<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>->배달['우편번호'], 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 == '예 ') <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>['배송'<span>]); </span><span>517</span><span> } </span><span>518</span><span>설정 해제</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>참</span>) <span>$optionsLineItems</span> = <span>배열</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>설정 해제</span>(<span>$optionsLineItems</span>['creditsExist'<span>]); </span><span>525</span><span> }</span><span>526</span><span>$optionsAggregate</span> = <span>배열</span><span>( </span><span>527</span> 'cmd' => '_ext-enter', <span>528</span> 'item_name' => 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>숫자_형식</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>->products) > 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> 항목 정보가 유효하지 않은 경우 집계 사용:</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> 제출 준비</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('제출용 키: ' . 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 ($값);</span><span>562</span><span>563</span><span>$bu</span>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

Windows 11에서 캡처 도구가 작동하지 않는 이유 문제의 근본 원인을 이해하면 올바른 솔루션을 찾는 데 도움이 될 수 있습니다. 캡처 도구가 제대로 작동하지 않는 주요 이유는 다음과 같습니다. 초점 도우미가 켜져 있습니다. 이렇게 하면 캡처 도구가 열리지 않습니다. 손상된 응용 프로그램: 캡처 도구가 실행 시 충돌하는 경우 응용 프로그램이 손상되었을 수 있습니다. 오래된 그래픽 드라이버: 호환되지 않는 드라이버가 캡처 도구를 방해할 수 있습니다. 다른 응용 프로그램의 간섭: 실행 중인 다른 응용 프로그램이 캡처 도구와 충돌할 수 있습니다. 인증서가 만료되었습니다. 업그레이드 프로세스 중 오류로 인해 이 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 적합하며 특별한 기술 지식이 필요하지 않습니다. 1. Windows 및 Microsoft Store 앱 업데이트

1부: 초기 문제 해결 단계 Apple 시스템 상태 확인: 복잡한 솔루션을 살펴보기 전에 기본 사항부터 시작해 보겠습니다. 문제는 귀하의 기기에 있는 것이 아닐 수도 있습니다. Apple 서버가 다운되었을 수도 있습니다. Apple의 시스템 상태 페이지를 방문하여 AppStore가 제대로 작동하는지 확인하세요. 문제가 있는 경우 Apple이 문제를 해결하기를 기다리는 것뿐입니다. 인터넷 연결 확인: "AppStore에 연결할 수 없음" 문제는 때때로 연결 불량으로 인해 발생할 수 있으므로 인터넷 연결이 안정적인지 확인하십시오. Wi-Fi와 모바일 데이터 간을 전환하거나 네트워크 설정을 재설정해 보세요(일반 > 재설정 > 네트워크 설정 재설정 > 설정). iOS 버전을 업데이트하세요.

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

Watch4pro와 gt는 각각 서로 다른 기능과 적용 가능한 시나리오를 가지고 있습니다. 포괄적인 기능, 고성능, 세련된 외관에 중점을 두고 더 높은 가격을 감수할 의향이 있다면 Watch 4 Pro가 더 적합할 수 있습니다. 높은 기능 요구 사항이 없고 배터리 수명과 합리적인 가격에 더 많은 관심을 기울이는 경우 GT 시리즈가 더 적합할 수 있습니다. 최종 선택은 개인의 필요와 예산, 선호도에 따라 결정되어야 합니다. 자신의 필요를 잘 고려한 후 구매하고, 다양한 제품에 대한 리뷰와 비교를 참고하여 보다 현명한 선택을 하는 것이 좋습니다.

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

iPadOS 17.4로 iPad 배터리 수명을 최적화하는 방법 배터리 수명 연장은 모바일 장치 경험의 핵심이며 iPad가 좋은 예입니다. iPad의 배터리가 너무 빨리 소모된다고 생각되더라도 걱정하지 마세요. iPadOS 17.4에는 기기의 실행 시간을 크게 연장할 수 있는 여러 가지 요령과 조정 사항이 있습니다. 이 심층 가이드의 목표는 단순히 정보를 제공하는 것이 아니라 iPad 사용 방식을 바꾸고 전반적인 배터리 관리를 향상하며 기기를 충전하지 않고도 기기를 더 오랫동안 사용할 수 있도록 하는 것입니다. 여기에 설명된 사례를 채택함으로써 귀하는 개인의 요구 사항과 사용 패턴에 맞는 기술을 보다 효율적이고 주의 깊게 사용하는 방향으로 나아갈 수 있습니다. 주요 에너지 소비자 식별

모두가 오늘의 Windows 1123H2 릴리스를 기대하고 있습니다. 실제로 마이크로소프트는 공식 출시 단계 전 가장 가까운 채널인 릴리즈 프리뷰에 대한 업데이트를 막 출시했다. 빌드 22631로 알려진 마이크로소프트는 지난 몇 달 동안 다른 내부 채널에서 테스트를 거친 새로운 브랜드의 채팅 앱, 전화 링크, 플레이 투게더 위젯을 출시할 예정이라고 밝혔습니다. "이 새로운 업데이트는 Windows 11 버전 22H2와 동일한 서비스 분기 및 코드 기반을 가지며 Windows의 Copilot(미리 보기)을 포함하여 새로 발표된 모든 기능과 함께 누적될 것입니다."라고 Microsoft는 약속합니다. 레드몬드 관계자 추가
