[[字元編碼]]\n[[傳遞方式]]\n[[參數格式 - XML 版]]\n/%comment_text[[參數格式 - serialize 版]]%/
[[關於本站]]\n[[歡迎]]
[[歡迎]]\n[[如何開始]]\n[[API參數格式相關]]\n[[商品相關]]\n[[類別相關]]\n[[自訂分類相關]]\n[[問答相關]]\n[[悄悄話相關]]\n[[交易相關]]\n[[評價相關]]\n[[前端相關]]\n[[錯誤代碼列表]]\n----\n[[關於本站]]\n----\n本站使用版本:@@<<version>>@@
這些設定將暫存於瀏覽器中,\n請簽名<<option txtUserName>>\n (範例:WikiWord)\n\n <<option chkSaveBackups>> [[儲存備份]]\n<<option chkAutoSave>> [[自動儲存]]\n<<option chkGenerateAnRssFeed>> [[產生 RssFeed]]\n<<option chkRegExpSearch>> [[正規式搜尋]]\n<<option chkCaseSensitiveSearch>> [[區分大小寫搜尋]]\n<<option chkAnimate>> [[使用動畫顯示]]\n\n <<slider sliderSiteSetupOptions 網站設定 網站設定 '網站設定'>>\n <<slider sliderAdvancedOptions AdvancedOptions 進階選項 '進階選項'>>
''Ruten API Documentation''
[img[露天市集API 說明文件|http://www.ruten.com.tw/imgs/2008/logo.gif]]
/***\n|''Name:''|WikiBarPlugin|\n|''Version:''|1.1.0|\n|''Source:''|[[AiddlyWiki|http://aiddlywiki.sourceforge.net]]|\n|''Author:''|[[Arphen Lin|mailto:arphenlin@gmail.com]]|\n|''Type:''|Plugin extension|\n|''Required:''|TiddlyWiki 1.2.36+|\n!Description\nThe WikiBarPlugin provides user a TiddlyWiki syntax-bar under the tiddler edit mode. It's a handy tool for people who are not familiar with the TiddlyWiki syntax.\n!Support browser\n*Firefox 1.0.7\n!Revision history\n*v1.0.0 (2005/10/30)\n**Initial release\n*v1.1.0 (2005/11/01)\n**Bugs fixed:\n***WikiBar overruns (reported by by "GeoffS" <gslocock@yahoo.co.uk>)\n**New features:\n***Insert a color code at the cursor. (Thanks to "RunningUtes" <RunningUtes@gmail.com>)\n***Enable gradient macro. (Thanks to "RunningUtes" <RunningUtes@gmail.com>)\n***Insert tiddler comment tags {{{/% ... %/}}}. (new feature supported by TiddlyWiki 1.2.37)\n***Insert DateFormatString for {{{<<today>>}}} macro. (new feature supported by TiddlyWiki 1.2.37)\n**Enhanced:\n***Allow optional parameters in syntax.\n!Code\n***/\n//{{{\n\nversion.extensions.WikiBar = {major: 1, minor: 1, revision: 0, date: new Date(2005,11,1)};\n\n//------------------------------------------------------------------------------------------------\n// the syntax will be applied on the current word\n// params: editor, [[param1],[param2],...]\n//------------------------------------------------------------------------------------------------\napl_wikibar_formatByWord = function(editor, params){\n\n clearMessage();\n \n try{\n \n if(!editor) return;\n \n repText = processSyntaxParams(this.syntax, params);\n if(!repText) return;\n \n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n \n// displayMessage(ss + ',' + se);\n \n var frontText= '';\n var selText = '';\n var endText = '';\n var fullText = editor.value;\n \n if(se>ss && ss>=0){ // has selection\n frontText = fullText.substring(0, ss); // text before selection\n selText = fullText.substring(ss,se);\n endText = fullText.substring(se, fullText.length); // text behind selection\n }\n else if(ss==0 && (se==0 || se == fullText.length) ){ // no selection, cursor in begin\n endText = fullText; // text behind selection\n }\n else if(se==ss && ss>0){ // no selection, cursor in text\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n\n //select a word\n if( fullText.charAt(ss-1).match(/\sW/gi) || fullText.charAt(ss).match(/\sW/gi) ){ \n ;\n }\n else{ // cursor in text\n\n // find the lastest non-word position of frontText\n var m = frontText.match(/\sW/gi);\n if(m){\n ss = frontText.lastIndexOf(m[m.length-1])+1;\n }\n else{ // not found\n ss = 0; \n }\n \n \n // find the first non-word position of endText\n m = endText.match(/\sW/gi);\n if(m){\n se += endText.indexOf(m[0]);\n }\n else{ // not found\n se = fullText.length;\n }\n\n // re-positioning\n// displayMessage(ss + ',' + se);\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n selText = fullText.substring(ss,se);\n \n }\n }\n \n if(selText.length>0)\n repText = repText.replace('user_text', selText);\n \n if(repText.indexOf('user_text')>=0 && this.hint)\n repText = repText.replace('user_text', this.hint); \n \n editor.value = frontText + repText + endText;\n \n // re-positioning\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n \n editor.focus();\n \n }catch(ex){\n if(ex.description)\n alert('apl_wikibar_formatByWord(): '+ex.description);\n else\n displayMessage('apl_wikibar_formatByWord(): '+ex);\n }\n \n}\n\n// params may be null, string or array\nfunction processSyntaxParams(syntaxStr, params)\n{\n try{\n \n var rx=null;\n var totalParams=null;\n // replace parameter: %1,%2,...\n if(params!=null){\n if(typeof(params)=="object"){ // array\n for(i=0; i<params.length; i++){\n if(params[i]){\n rx = "(\s\s[%"+(i+1)+"\s\s])" + "|" + "(%"+(i+1)+")";\n syntaxStr = syntaxStr.replace(new RegExp(rx,"g"), params[i]);\n }\n }\n totalParams = params.join(' ').trim();\n }\n else{ // string\n totalParams = params.trim();\n rx = /(\s[%1{1}\s])|(%1{1})/g;\n syntaxStr = syntaxStr.replace(rx, totalParams);\n } \n }\n \n \n // replace parameter: %N\n if(totalParams)\n syntaxStr = syntaxStr.replace(new RegExp('%N{1}',"g"), totalParams);\n \n // remove optional parameters\n rx=/\s[%(([1-9]{1,}[0-9]{0,})|(N{1}))\s]/g;\n syntaxStr = syntaxStr.replace(rx, '');\n \n // check if replaced ok\n rx=/%(([1-9]{1,}[0-9]{0,})|(N{1}))/g;\n if( syntaxStr.match(rx) ){\n throw "Not enough parameters! " + syntaxStr;\n }\n \n return syntaxStr;\n \n } catch(ex){\n if(ex.description)\n displayMessage('processSyntaxParams(): '+ex.description);\n else\n displayMessage('processSyntaxParams(): '+ex);\n \n return null;\n }\n}\n\n//------------------------------------------------------------------------------------------------\n// common format function\n//------------------------------------------------------------------------------------------------\napl_wikibar_format = function(editor, params){\n\n clearMessage();\n \n try{\n \n if(!editor) return;\n \n repText = processSyntaxParams(this.syntax, params);\n if(!repText) return;\n \n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n \n// displayMessage(ss + ',' + se);\n \n var frontText= '';\n var endText = '';\n var fullText = editor.value;\n \n if(se>ss && ss>=0){ // has selection\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n }\n else if(ss==0 && (se==0 || se == fullText.length) ){ // no selection, cursor in begin\n endText = fullText; // text behind selection\n }\n else if(se==ss && ss>0){ // no selection, cursor in text\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n }\n \n if(repText.indexOf('user_text')>=0 && this.hint)\n repText = repText.replace('user_text', this.hint); \n \n editor.value = frontText + repText + endText;\n \n // re-positioning\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n \n editor.focus();\n \n }catch(ex){\n if(ex.description)\n alert('apl_wikibar_formatByCursor(): '+ex.description);\n else\n displayMessage('apl_wikibar_formatByCursor(): '+ex);\n }\n \n}\n\n\n//------------------------------------------------------------------------------------------------\n// if selected text, replace it\n// else insert it\n//------------------------------------------------------------------------------------------------\napl_wikibar_formatByCursor = function(editor, params){\n\n clearMessage();\n \n try{\n \n if(!editor) return;\n \n repText = processSyntaxParams(this.syntax, params);\n if(!repText) return;\n \n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n \n// displayMessage(ss + ',' + se);\n \n var frontText= '';\n var endText = '';\n var fullText = editor.value;\n \n if(se>ss && ss>=0){ // has selection\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n }\n else if(ss==0 && (se==0 || se == fullText.length) ){ // no selection, cursor in begin\n endText = fullText; // text behind selection\n }\n else if(se==ss && ss>0){ // no selection, cursor in text\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n }\n \n if(repText.indexOf('user_text')>=0 && this.hint)\n repText = repText.replace('user_text', this.hint); \n \n editor.value = frontText + repText + endText;\n \n // re-positioning\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n \n editor.focus();\n \n }catch(ex){\n if(ex.description)\n alert('apl_wikibar_formatByCursor(): '+ex.description);\n else\n displayMessage('apl_wikibar_formatByCursor(): '+ex);\n }\n \n}\n\n//------------------------------------------------------------------------------------------------\n// the syntax will be applied on the current line\n//------------------------------------------------------------------------------------------------\napl_wikibar_formatByLine = function(editor, params)\n{\n\n clearMessage();\n \n try{\n \n if(!editor) return;\n \n repText = processSyntaxParams(this.syntax, params);\n if(!repText) return; \n \n \n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n \n// displayMessage(ss + ',' + se);\n \n var frontText= '';\n var selText = '';\n var endText = '';\n var fullText = editor.value;\n \n if(se>ss && ss>=0){ // has selection\n if(this.byBlock){\n frontText = fullText.substring(0, ss); // text before selection\n selText = fullText.substring(ss,se); // selection text\n endText = fullText.substring(se, fullText.length); // text behind selection\n }\n else{\n se = ss;\n }\n// displayMessage('has selection ' + ss + ',' + se);\n }\n \n if(ss==0 && (se==0 || se == fullText.length) ){ // no selection, cursor in begin\n var m=fullText.match(/(\sn|\sr)/g); // position of line-break\n if(m)\n se = fullText.indexOf(m[0]);\n else\n se = fullText.length;\n\n// displayMessage('no selection, cursor in begin: ' + ss + ',' + se); \n selText = fullText.substring(0, se); \n endText = fullText.substring(se, fullText.length); // text behind selection \n }\n else if(se==ss && ss>0){ // no selection text, cursor in text\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n \n // find the last position of line-break in frontText\n var m = frontText.match(/(\sn|\sr)/g); // position of line-break\n if(m){\n ss = frontText.lastIndexOf(m[m.length-1])+1;\n }\n else{ // not found\n ss = 0; \n }\n \n // find the first position of line-break in endText\n m = endText.match(/(\sn|\sr)/g); // position of line-break\n if(m){\n se += endText.indexOf(m[0]);\n }\n else{ // not found\n se = fullText.length;\n }\n\n // re-positioning\n// displayMessage('no selection text, cursor in text: ' + ss + ',' + se);\n frontText = fullText.substring(0, ss); // text before selection\n selText = fullText.substring(ss,se);\n endText = fullText.substring(se, fullText.length); // text behind selection\n }\n \n if(selText.length>0)\n repText = repText.replace('user_text', selText);\n \n if(repText.indexOf('user_text')>=0 && this.hint)\n repText = repText.replace('user_text', this.hint); \n \n if(this.byBlock){ \n // add extra line-breaks\n if( (frontText.charAt(frontText.length-1)!='\sn') && ss!=0 )\n repText = '\sn' + repText;\n if( (endText.charAt(0)!='\sn') || se==fullText.length)\n repText += '\sn';\n }\n \n editor.value = frontText + repText + endText;\n \n // re-positioning\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n \n editor.focus();\n \n }catch(ex){\n if(ex.description)\n alert('apl_wikibar_formatByLine(): '+ex.description);\n else\n displayMessage('apl_wikibar_formatByLine(): '+ex);\n }\n \n}\n\n//------------------------------------------------------------------------------------------------\n// the syntax will be applied on the table cell(if exist)\n//------------------------------------------------------------------------------------------------\napl_wikibar_formatByTableCell = function(editor, params){\n\n clearMessage();\n \n try{\n \n if(!editor) return;\n \n repText = processSyntaxParams(this.syntax, params);\n if(!repText) return;\n \n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n \n// displayMessage(ss + ',' + se);\n \n var frontText= '';\n var selText = '';\n var endText = '';\n var fullText = editor.value;\n \n if(ss==0 || ss==fullText.length)\n throw "not valid cell!";\n \n se=ss; \n \n// displayMessage(ss);\n frontText = fullText.substring(0, ss); // text before selection\n endText = fullText.substring(se, fullText.length); // text behind selection\n \n // find the last '|' position in frontText\n i=frontText.lastIndexOf("\sn");\n j=frontText.lastIndexOf("|");\n if(i>j || j<0)\n //throw "frontText not valid cell! " + i + "," + j;\n throw "not valid cell!";\n \n ss = j+1;\n \n // find the first '|' position in endText\n i=endText.indexOf("\sn");\n j=endText.indexOf("|");\n if(i<j || j<0)\n //throw "endText not valid cell! " + i + "," + j;\n throw "not valid cell!";\n \n se += j;\n \n // re-positioning\n// displayMessage(ss + ',' + se);\n frontText = fullText.substring(0, ss-1); // text before selection\n selText = fullText.substring(ss,se);\n endText = fullText.substring(se+1, fullText.length); // text behind selection\n\n if(this.name.substring(0,5)=="align"){\n selText = selText.trim();\n if( selText==">" || selText=="~" || \n selText.substring(0,8)=="bgcolor(" \n ) // bypass special table code\n return;\n }\n \n if(selText.length>0)\n repText = repText.replace('user_text', selText);\n \n if(repText.indexOf('user_text')>=0 && this.hint)\n repText = repText.replace('user_text', this.hint); \n \n editor.value = frontText + repText + endText;\n \n // re-positioning\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length - 2;\n editor.scrollTop = st;\n \n editor.focus();\n \n }catch(ex){\n if(ex.description)\n alert('apl_wikibar_formatByTableCell(): '+ex.description);\n else\n displayMessage('apl_wikibar_formatByTableCell(): '+ex);\n }\n \n}\n\n\n//------------------------------------------------------------------------------------------------\n// param: editor, button_pressed\n//------------------------------------------------------------------------------------------------\napl_wikibar_getColorCode = function(editor, theTarget)\n{\n if(!apl_wikibar_colorPicker) return;\n \n apl_wikibar_colorPicker.targetSyntax = this;\n apl_wikibar_colorPicker.targetEditor = editor;\n apl_wikibar_colorPicker.moveColorMap(theTarget); \n}\n\napl_wikibar_getLinkUrl = function(editor)\n{\n var url= prompt('Please enter the link target', this.param);\n if (url && url.trim()!='')\n this.format(editor, url);\n}\n\napl_wikibar_getTableRowCol = function(editor)\n{\n var rc= prompt('Please enter rows x cols of the table', '2 x 3');\n if (!rc || rc.trim()=='') return;\n \n var arr = rc.toUpperCase().split('X');\n if(arr.length != 2) return;\n \n for(i=0; i<arr.length; i++)\n if(isNaN(arr[i].trim())) return;\n \n rows = parseInt(arr[0].trim());\n cols = parseInt(arr[1].trim());\n \n txtTable='';\n for(r=0; r<rows; r++){\n for(c=0; c<=cols; c++)\n if(c==0)\n txtTable += '|';\n else\n txtTable += ' |';\n \n txtTable += '\sn';\n }\n\n if(txtTable.trim()!='') \n this.format(editor, txtTable);\n \n}\n\napl_wikibar_getMacroParam = function(editor)\n{\n try{\n var p = prompt('Please enter the parameters of ' + this.name + ' macro:' + \n '\snSyntax: ' + this.syntax +\n '\sn\snNote: '+\n '\sn%1,%2,... - parameter needed'+ \n '\sn[%1] - optional parameter'+\n '\sn%N - more than one parameter(1~n)'+\n '\sn[%N] - any number of parameters(0~n)'+\n '\sn\snPS:'+\n '\sn Parameters should be seperated with space character'+\n '\sn Use "" to wrap the parameter that includes space character, ex: "hello world"'+\n '\sn Input the word(null) for the optional parameter ignored',\n (this.param?this.param:'') );\n \n if(p==null) return;\n\n p=p.readMacroParams();\n for(i=0;i<p.length;i++){\n var s=p[i].trim();\n if(s.indexOf(' ')>0)\n p[i]="'"+s+"'";\n if(s.toLowerCase()=="null")\n p[i]=null;\n }\n \n this.format(editor, p);\n \n }catch(ex){\n if(ex.description)\n alert('apl_wikibar_getMacroParam(): '+ex.description);\n else\n displayMessage('apl_wikibar_getMacroParam(): '+ex);\n } \n}\n\n\n\n//------------------------------------------------------------------------------------------------\n// hijack createTiddlerEditor() to create WikiBar\n//------------------------------------------------------------------------------------------------\nwindow.apl_wikibar_createTiddlerEditor = window.createTiddlerEditor;\nwindow.createTiddlerEditor = function (title)\n{\n // call original function\n apl_wikibar_createTiddlerEditor(title);\n \n // create wiki-bar\n apl_wikibar_createWikibar(title);\n}\n\nfunction apl_wikibar_createWikibar(title){\n\n try{\n \n // insert wikisyntax toolbar before editorBodyXXX\n var theEditor = document.getElementById("editorWrapper" + title);\n var theBodyBox = document.getElementById("editorBody" + title);\n \n // create Wikibar\n// var theWikibar = createTiddlyElement(theEditor,"div","editorWikibar" + title,"toolbar",null);\n var theWikibar = createTiddlyElement(theEditor,"div","editorWikibar" + title,null,null);\n\n theEditor.insertBefore(theWikibar,theBodyBox);\n \n // create tool buttons\n \n //---------------\n // single button\n //---------------\n \n // about\n var btn = apl_wikibar_createWikibarButton(theWikibar, "&copy;", "about WikiBarPlugin", apl_wikibar_onClickAbout, title);\n if(btn) btn.id = "apl_wikibar_btn_about";\n\n // preview\n btn = apl_wikibar_createWikibarButton(theWikibar, "&infin;", "preview the tiddler", apl_wikibar_onClickPreview, title);\n if(btn) btn.id = "apl_wikibar_btn_preview";\n \n // formattings\n for(i=0; i<apl_wikibar_syntaxes.formattings.length; i++){\n var syntaxObj = apl_wikibar_syntaxes.formattings[i];\n syntax_desc = "apl_wikibar_syntaxes.formattings["+i+"]";\n if(syntaxObj.symbol)\n apl_wikibar_createWikibarButton(theWikibar, syntaxObj.symbol, syntaxObj.tip, apl_wikibar_onClickWikibarButton, title, syntax_desc);\n else\n apl_wikibar_createWikibarButton(theWikibar, syntaxObj.name, syntaxObj.tip, apl_wikibar_onClickWikibarButton, title, syntax_desc);\n }\n \n //---------------\n // dropdown menu\n //---------------\n apl_wikibar_createWikibarButton(theWikibar, "color", "Color", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.colors");\n apl_wikibar_createWikibarButton(theWikibar, "link", "Link", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.links");\n apl_wikibar_createWikibarButton(theWikibar, "Hn", "Heading", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.headings");\n apl_wikibar_createWikibarButton(theWikibar, "list", "List", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.lists");\n apl_wikibar_createWikibarButton(theWikibar, "paragraph", "Paragraph format", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.paragraphs");\n apl_wikibar_createWikibarButton(theWikibar, "table", "Table", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.tables");\n apl_wikibar_createWikibarButton(theWikibar, "plugin", "Plugin design", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.plugins");\n apl_wikibar_createWikibarButton(theWikibar, "macro", "Macro", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.macros");\n apl_wikibar_createWikibarButton(theWikibar, "date", "Date format string", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.dates");\n apl_wikibar_createWikibarButton(theWikibar, "html", "HTML", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.htmls");\n \n }catch(ex){\n alert('apl_wikibar_createWikibar(): '+ex.description);\n }\n \n}\n\n//------------------------------------------------------------------------------------------------\n// create wikibar button\n// ps. \n// if single button: syntax_objs=null, syntax_obj needed\n// if group button: syntax_objs needed, syntax_obj=null\n//------------------------------------------------------------------------------------------------\nfunction apl_wikibar_createWikibarButton(theToolbar, theText, theTooltip, theAction, title, syntax_obj, syntax_objs)\n{\n try{\n \n if(!theToolbar) return null;\n \n // call system function to add a button\n //createTiddlyButton(theParent,theText,theTooltip,theAction,theClass,theId,theAccessKey)\n var theButton = createTiddlyButton(theToolbar, theText, theTooltip, theAction, "button");\n if(!theButton) return null;\n\n// insertSpacer(theToolbar);\n \n // fix the wikibar overrun bug\n theToolbar.appendChild( document.createTextNode("\sn") );\n \n theButton.innerHTML = theText; // html is allowed here, ex: "<b>B</b>"\n\n // add parameters to theButton, those parameters will be used on onclick event\n // setAttribute() only accepts string variable, object is not allowed!\n // we'll use eval() to convert string to object, refer to apl_wikibar_onClickWikibarButton()\n if(title)\n theButton.setAttribute("tiddler_title", title);\n \n if(syntax_objs)\n theButton.setAttribute("syntax_objs", syntax_objs);\n\n if(syntax_obj)\n theButton.setAttribute("syntax_obj", syntax_obj);\n \n return theButton;\n \n }catch(ex){\n alert('apl_wikibar_createWikibarButton(): '+ex.description);\n return null;\n }\n \n}\n\n//------------------------------------------------------------------------------------------------\n// button(<a>) may have other tags, ex: <a><b>B</b></a>\n// when we click the button, the apl_wikibar_onClickWikibarButton event may be received by the childNodes of <a>\n// so we try to look up to the button object(<a>), as <a> has the parameters we need\n//------------------------------------------------------------------------------------------------\nfunction apl_wikibar_resolveClickButton(obj)\n{\n if (obj.id=="tiddlerDisplay") // search until tiddlerDisplay is reached\n return null;\n \n if(obj.hasAttributes()){\n if(obj.getAttribute("tiddler_title"))\n return obj;\n else\n return apl_wikibar_resolveClickButton(obj.parentNode); // search the parent\n }\n else{\n return apl_wikibar_resolveClickButton(obj.parentNode); // search the parent\n }\n}\n\n\nfunction apl_wikibar_switchWikibar(wikibar, visible)\n{\n if(!wikibar) return;\n \n var pv=null;\n // hide other buttons\n for(i=0; i<wikibar.childNodes.length; i++){ \n try{\n var theButton = wikibar.childNodes[i];\n\n if(theButton.id == "apl_wikibar_btn_preview") \n pv=theButton;\n\n if(theButton.id != "apl_wikibar_btn_about" && theButton.id != "apl_wikibar_btn_preview")\n theButton.style.display = visible ? "": "none";\n \n }catch(ex){\n ;\n }\n }\n \n if(!pv) return;\n \n // update the caption of preview button\n if(visible){\n pv.innerHTML = "&infin;";\n pv.setAttribute("title", "show previewer");\n }\n else{\n pv.innerHTML = "&larr;";\n pv.setAttribute("title", "back to editor");\n }\n \n}\n\nfunction apl_wikibar_displayAboutBox(theAbout, theTarget)\n{\n try{\n\n if(!theAbout || !theTarget) return;\n \n var rootLeft = findPosX(theTarget);\n var rootTop = findPosY(theTarget);\n var rootHeight = theTarget.offsetHeight;\n \n var popupLeft = rootLeft;\n var popupTop = rootTop + rootHeight;\n \n var popupWidth = theAbout.offsetWidth;\n \n var winWidth = findWindowWidth();\n if(popupLeft + popupWidth > winWidth)\n popupLeft = winWidth - popupWidth;\n \n theAbout.style.left = popupLeft + "px";\n theAbout.style.top = popupTop + "px";\n theAbout.style.display = "block";\n \n// window.scrollTo(0,y); // some bugs here\n \n }catch(ex){\n alert('apl_wikibar_displayAboutBox(): '+ex.description);\n }\n}\n\nfunction apl_wikibar_onClickAbout(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n if(!theTarget) return(false);\n \n try{\n \n // check if already exist\n var theAbout = document.getElementById("aboutWikibar");\n \n if(theAbout){ // switch theAbout\n relateTo = theAbout.getAttribute("relateTo");\n if(relateTo == theTarget.parentNode.id){\n theAbout.style.display = (theAbout.style.display=="block")? "none" : "block";\n }\n else{\n theAbout.setAttribute("relateTo", theTarget.parentNode.id);\n apl_wikibar_displayAboutBox(theAbout, theTarget);\n }\n }\n else{ // create theAbout box\n theAbout = document.createElement("div");\n theAbout.setAttribute("id", "aboutWikibar");\n theAbout.setAttribute("style", "position:absolute; z-index:99; display:block; background-color:white; border:medium solid red;");\n theAbout.setAttribute("class", "viewer");\n ver = version.extensions.WikiBar.major + "." + version.extensions.WikiBar.minor + "." + version.extensions.WikiBar.revision;\n theAbout.innerHTML = '<center>WikiBarPlugin Version '+ver+'<br></center><hr><ul>'+\n '<li>Author: <a href="mailto:arphenlin@gmail.com">Arphen Lin</a></li>'+\n '<li>Web: <a href="http://aiddlywiki.sourceforge.net/" target="new">AiddlyWiki</a></li>'+\n '</ul>';\n theAbout.onclick = function(){\n document.getElementById("aboutWikibar").style.display="none";\n }; \n theAbout.setAttribute("relateTo", theTarget.parentNode.id);\n \n document.body.appendChild(theAbout);\n \n apl_wikibar_displayAboutBox(theAbout, theTarget);\n }\n \n }catch(ex){\n alert('apl_wikibar_onClickAbout(): '+ ex.description);\n } \n\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false); \n}\n\nfunction apl_wikibar_onClickPreview(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n if(!theTarget) return(false);\n \n// displayMessage(theTarget);\n \n try{\n\n var wikibar = theTarget.parentNode;\n if(!wikibar) return;\n \n title = wikibar.id.substring(13, wikibar.id.length); // "editorWikibar"+title\n var editorWrapper = document.getElementById( "editorWrapper"+title);\n \n var editor= document.getElementById("editorBody"+title);\n\n // check if already exist\n var previewer = document.getElementById("previewer"+title);\n if(previewer){ // switch previewer\n if(previewer.style.display=="block"){\n previewer.style.display = "none";\n editor.style.display = "block";\n }\n else{\n previewer.innerHTML = ''; // clear the contents\n wikify(editor.value, previewer, null, null); // refresh the contents\n previewer.style.display = "block";\n editor.style.display = "none";\n }\n }\n else{ // create previewer\n previewer = document.createElement("div");\n previewer.setAttribute("id", "previewer"+title);\n previewer.setAttribute("style", "overflow:auto; display:block; border:solid 1px;");\n previewer.style.height = (editor.offsetHeight) + "px";\n previewer.setAttribute("class", "viewer");\n editorWrapper.insertBefore(previewer, editor);\n \n wikify(editor.value, previewer, null, null);\n \n // hide editor\n editor.style.display = "none";\n }\n \n apl_wikibar_switchWikibar(wikibar, (editor.style.display=="block") );\n \n }catch(ex){\n alert('apl_wikibar_onClickPreview(): '+ ex.description);\n } \n\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n \n}\n\n\n//------------------------------------------------------------------------------------------------\n// onclick event handler\n//------------------------------------------------------------------------------------------------\nfunction apl_wikibar_onClickWikibarButton(e)\n{\n if (!e) var e = window.event;\n var theTarget = apl_wikibar_resolveClickButton(resolveTarget(e));\n if(!theTarget) return(false);\n \n try{\n \n title = theTarget.getAttribute("tiddler_title");\n \n var editor = document.getElementById("editorBody"+title);\n if(!editor) return;\n \n var syntax = null;\n cmd = "syntax = " + theTarget.getAttribute("syntax_obj");\n eval(cmd);\n if(!syntax) return;\n \n if(syntax.needParam)\n syntax.needParam(editor, theTarget);\n else\n syntax.format(editor);\n \n }catch(ex){\n alert('apl_wikibar_onClickWikibarButton(): '+ ex.description);\n } \n\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n\n}\n\n\n//------------------------------------------------------------------------------------------------\n// create drop-down menu\n//------------------------------------------------------------------------------------------------\nfunction apl_wikibar_onClickWikibarMenu(e)\n{\n if(!e) var e = window.event;\n var theTarget = resolveTarget(e); // = <span>, the object we click on\n \n try{ \n \n title = theTarget.getAttribute("tiddler_title");\n \n // retrieve the string and eval() it \n my_syntaxes = theTarget.getAttribute("syntax_objs");\n var items=null;\n cmd = "items = "+my_syntaxes;\n eval(cmd);\n if(!items) return;\n\n var popup = createTiddlerPopup(this);\n if(!popup) return;\n\n for (i=0; i<items.length; i++){\n var theItem = createTiddlyButton(\n createTiddlyElement(popup, "li"),\n items[i].name,\n items[i].tip,\n apl_wikibar_onClickWikibarButton\n );\n\n theItem.setAttribute("syntax_obj", my_syntaxes + "["+i+"]");\n theItem.setAttribute("tiddler_title", title);\n }\n\n scrollToTiddlerPopup(popup,false);\n \n }catch(ex){\n alert('apl_wikibar_onClickWikibarMenu(): '+ex.description);\n } \n \n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n \n}\n\n\n//------------------------------------------------------------------------------------------------\n// apl_wikibar_ColorPicker class\n//------------------------------------------------------------------------------------------------\nfunction apl_wikibar_ColorPicker(theAction){\n \n // 16x16 colors\n this.colorTable = [ \n "#FFFFFF","#DDDDDD","#CCCCCC","#BBBBBB","#AAAAAA","#999999","#666666","#333333","#111111","#000000","#FFCC00","#FF9900","#FF6600","#FF3300","#CC3300","#CC0033",\n "#99CC00","#99DD00","#99EE00","#EE9900","#DD9900","#CC9900","#FFCC33","#FFCC66","#FF9966","#FF6633","#660000","#990000","#CC0000","#FF0000","#FF3366","#FF0033",\n "#CCFF00","#CCFF33","#333300","#666600","#999900","#CCCC00","#FFFF00","#CC9933","#CC6633","#330000","#993333","#CC3333","#FF3333","#CC3366","#FF6699","#FF0066",\n "#99FF00","#CCFF66","#99CC33","#666633","#999933","#CCCC33","#FFFF33","#996600","#993300","#663333","#CC6666","#FF6666","#990033","#CC3399","#FF66CC","#FF0099",\n "#66FF00","#99FF66","#66CC33","#669900","#999966","#CCCC66","#FFFF66","#996633","#663300","#996666","#FF9999","#FF3399","#CC0066","#990066","#FF33CC","#FF00CC",\n "#33FF00","#66FF33","#339900","#66CC00","#99FF33","#CCCC99","#FFFF99","#CC9966","#CC6600","#CC9999","#FF99CC","#CC6699","#993366","#660033","#CC0099","#330033",\n "#00CC00","#33CC00","#336600","#669933","#99CC66","#CCFF99","#FFFFCC","#FFCC99","#FF9933","#FFCCCC","#CC99CC","#996699","#993399","#990099","#663366","#660066",\n "#006600","#33CC33","#66CC66","#00FF00","#33FF33","#66FF66","#99FF99","#CCFFCC","#99CCFF","#FFCCFF","#FF99FF","#FF66FF","#FF33FF","#FF00FF","#CC66CC","#CC33CC",\n "#003300","#336633","#009900","#339933","#669966","#99CC99","#CCFFFF","#3399FF","#6699CC","#CCCCFF","#CC99FF","#9966CC","#663399","#330066","#9900CC","#CC00CC",\n "#00FF33","#00CC33","#006633","#339966","#66CC99","#99FFCC","#99CCCC","#0066CC","#336699","#9999FF","#9999CC","#9933FF","#6600CC","#660099","#CC33FF","#CC00FF",\n "#00FF66","#33FF66","#009933","#00CC66","#33FF99","#99FFFF","#669999","#003366","#003399","#6666FF","#6666CC","#666699","#330099","#9933CC","#CC66FF","#9900FF",\n "#00FF99","#66FF99","#33CC66","#009966","#66FFFF","#66CCCC","#336666","#006699","#3366CC","#3333FF","#3333CC","#333399","#333366","#6633CC","#9966FF","#6600FF",\n "#00FFCC","#66FFCC","#33CC99","#33FFFF","#33CCCC","#339999","#003333","#3399CC","#6699FF","#0000FF","#0000CC","#000099","#000066","#000033","#6633FF","#3300FF",\n "#00CC99","#33FFCC","#00FFFF","#00CCCC","#009999","#006666","#33CCFF","#66CCFF","#0099CC","#3366FF","#00CCFF","#0099FF","#0066FF","#0033FF","#0033CC","#3300CC"\n ];\n\n this.colorMap = null; // div object\n\n this.targetSyntax = null; // the syntax object that called apl_wikibar_ColorPicker\n this.targetEditor = null; // the editor object that will be applied selected color\n this.theAction = theAction;\n \n this.createColorMap();\n\n}\n\napl_wikibar_ColorPicker.prototype.showColorMap = function() \n{\n if(this.colorMap){\n this.colorMap.style.display = "block";\n }\n}\n\napl_wikibar_ColorPicker.prototype.hideColorMap = function() \n{\n if(this.colorMap){\n this.colorMap.style.display = "none";\n }\n}\n\n\napl_wikibar_ColorPicker.prototype.moveColorMap = function(theTarget)\n{\n try{\n\n var cm = this.colorMap; \n if(!cm) return;\n \n var rootLeft = findPosX(theTarget);\n var rootTop = findPosY(theTarget);\n var rootHeight = theTarget.offsetHeight;\n \n var popupLeft = rootLeft;\n var popupTop = rootTop + rootHeight;\n \n var popupWidth = cm.offsetWidth;\n \n var winWidth = findWindowWidth();\n if(popupLeft + popupWidth > winWidth)\n popupLeft = winWidth - popupWidth;\n \n cm.style.left = popupLeft + "px";\n cm.style.top = popupTop + "px";\n cm.style.display = "block";\n \n// window.scrollTo(0,y); // some bugs here\n \n }catch(ex){\n alert('moveColorMap(): '+ex.description);\n }\n}\n\napl_wikibar_ColorPicker.prototype.createColorMap = function() \n{\n try{ \n\n if(!this.theAction) return;\n \n if(this.colorMap) return;\n \n // create div\n this.colorMap = document.createElement("div");\n this.colorMap.setAttribute("id","colorMap");\n this.colorMap.setAttribute("style","display:none; position:absolute; left:0px; top:0px; z-index:99; margin:0px; padding:0px; cursor:crosshair;");\n document.body.appendChild(this.colorMap);\n\n // create table\n var theTable = document.createElement("table");\n theTable.setAttribute("cellspacing", 0);\n theTable.setAttribute("cellpadding", 0);\n theTable.setAttribute("style", "border:solid 1px black;");\n this.colorMap.appendChild(theTable);\n \n // create tr/td\n cellsPerRow = 16;\n var theTR=null;\n for(i=0; i<this.colorTable.length; i++){\n // create new row\n if((i%cellsPerRow)==0){ // 16x16\n theTR = document.createElement("tr");\n theTable.appendChild(theTR);\n }\n\n var theTD = document.createElement("td");\n if(this.colorTable[i].trim() == '')\n theTD.setAttribute("bgcolor", "white");\n else\n theTD.setAttribute("bgcolor", this.colorTable[i]);\n theTD.setAttribute("style", "border:solid 1px black;");\n theTD.onclick = this.theAction;\n theTD.innerHTML = '<span style="font-size:8px">&nbsp;&nbsp;&nbsp;</span>';\n theTR.appendChild(theTD);\n }\n \n // bottom row\n theTR = document.createElement("tr");\n theTable.appendChild(theTR);\n var theTD = document.createElement("td");\n theTD.setAttribute("bgcolor", "white");\n theTD.setAttribute("style", "border:solid 1px black;");\n theTD.setAttribute("colspan",cellsPerRow);\n theTD.onclick = function(){ if(apl_wikibar_colorPicker) apl_wikibar_colorPicker.hideColorMap(); };\n theTD.innerHTML = '<center><span style="font-size:10px;">close</span></center>';\n theTR.appendChild(theTD);\n \n }catch(ex){\n alert('createColorMap: '+ex.description);\n }\n \n}\n\n//------------------------------------------------------------------------------------------------\n// do on select a color\n//------------------------------------------------------------------------------------------------\nfunction apl_wikibar_onSelectColor(e) \n{\n \n if (!e) var e = window.event;\n var theTarget = resolveTarget(e); //<span>\n if(!theTarget) return(false);\n\n try{\n\n if(!apl_wikibar_colorPicker) return;\n \n apl_wikibar_colorPicker.hideColorMap();\n\n // get the color \n theTD = theTarget.parentNode;\n color = theTD.getAttribute("bgcolor");\n if(!color) return;\n \n if(apl_wikibar_colorPicker.targetSyntax && apl_wikibar_colorPicker.targetEditor)\n apl_wikibar_colorPicker.targetSyntax.format(apl_wikibar_colorPicker.targetEditor, color);\n \n }catch(ex){\n alert('apl_wikibar_onSelectColor: '+ex.description);\n } \n \n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n \n}\n\n\n//------------------------------------------------------------------------------------------------\n// global variables: color picker\n//------------------------------------------------------------------------------------------------\nvar apl_wikibar_colorPicker = new apl_wikibar_ColorPicker(apl_wikibar_onSelectColor);\n\n//------------------------------------------------------------------------------------------------\n// global variables: syntax object\n// \n// parameter syntax: %1,%2,... - parameter needed, [%1] - optional parameter\n// %N - more than one parameter(1~n)\n// [%N] - any parameter(0~n)\n//------------------------------------------------------------------------------------------------\nvar apl_wikibar_syntaxes = {\n formattings: [\n {\n name: "ignore",\n tip: "ignore wiki word",\n symbol: "~",\n syntax: "~user_text",\n hint: "wiki_word",\n format: apl_wikibar_formatByWord\n },\n {\n name: "bold",\n tip: "bolder text",\n symbol: "<strong>B</strong>",\n syntax: "''user_text''",\n hint: "bold_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "italic",\n tip: "italic text",\n symbol: "<em>I</em>",\n syntax: "//user_text//",\n hint: "italic_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "underline",\n tip: "underline text",\n symbol: "<u>U</u>",\n syntax: "__user_text__",\n hint: "underline_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "strike",\n tip: "strikethrough text",\n symbol: "<strike>S</strike>",\n syntax: "==user_text==",\n hint: "strikethrough_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "sup",\n tip: "superscript text",\n symbol: "X<sup>2</sup>",\n syntax: "^^user_text^^",\n hint: "superscript_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "sub",\n tip: "subscript text",\n symbol: "X<sub>2</sub>",\n syntax: "~~user_text~~",\n hint: "subscript_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "comment",\n tip: "comment text",\n symbol: "/%",\n syntax: "/%user_text%/",\n hint: "comment_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "monospaced",\n tip: "monospaced text",\n symbol: "<code>mono</code>",\n syntax: "{{{user_text}}}",\n hint: "monospaced_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "line",\n tip: "horizontal line",\n symbol: "&mdash;",\n syntax: "\sn----\sn",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "crlf",\n tip: "line break",\n symbol: "&para;",\n syntax: "\sn",\n format: apl_wikibar_formatByCursor\n }\n ], // formattings\n colors: [\n {\n name: "highlight",\n tip: "highlight text",\n syntax: "@@user_text@@",\n hint: "highlight_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "color",\n tip: "text color",\n hint: "your_text",\n syntax: "@@color(%1):user_text@@",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getColorCode\n },\n {\n name: "bgcolor",\n tip: "background color",\n hint: "your_text",\n syntax: "@@bgcolor(%1):user_text@@",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getColorCode\n },\n {\n name: "colorcode",\n tip: "insert colorcode",\n syntax: "%1",\n format: apl_wikibar_formatByCursor,\n needParam: apl_wikibar_getColorCode\n } \n ], // colors\n lists:[\n {\n name: "bullet",\n tip: "bullet point",\n syntax: "*user_text",\n hint: "bullet_text",\n format: apl_wikibar_formatByLine\n },\n {\n name: "numbered",\n tip: "numbered list",\n syntax: "#user_text",\n hint: "numbered_text",\n format: apl_wikibar_formatByLine\n }\n ], // lists\n headings:[\n {\n name: "Heading 1",\n tip: "Heading 1",\n syntax: "!user_text",\n hint: "heading_1",\n format: apl_wikibar_formatByLine\n },\n {\n name: "Heading 2",\n tip: "Heading 2",\n syntax: "!!user_text",\n hint: "heading_2",\n format: apl_wikibar_formatByLine\n },\n {\n name: "Heading 3",\n tip: "Heading 3",\n syntax: "!!!user_text",\n hint: "heading_3",\n format: apl_wikibar_formatByLine\n },\n {\n name: "Heading 4",\n tip: "Heading 4",\n syntax: "!!!!user_text",\n hint: "heading_4",\n format: apl_wikibar_formatByLine\n },\n {\n name: "Heading 5",\n tip: "Heading 5",\n syntax: "!!!!!user_text",\n hint: "heading_5",\n format: apl_wikibar_formatByLine\n }\n ], // headings\n paragraphs:[\n {\n name: "comment by line",\n tip: "line comment",\n syntax: "/%user_text%/",\n hint: "comment_text",\n format: apl_wikibar_formatByLine\n },\n {\n name: "comment by block",\n tip: "block comment",\n syntax: "/%\snuser_text\sn%/",\n hint: "comment_text",\n byBlock: true, \n format: apl_wikibar_formatByLine\n },\n {\n name: "monospaced by line",\n tip: "line monospaced",\n syntax: "{{{\snuser_text\sn}}}",\n hint: "monospaced_text",\n format: apl_wikibar_formatByLine\n },\n {\n name: "monospaced by block",\n tip: "block monospaced",\n syntax: "{{{\snuser_text\sn}}}",\n hint: "monospaced_text",\n byBlock: true,\n format: apl_wikibar_formatByLine\n },\n {\n name: "quote by line",\n tip: "line quote",\n syntax: ">user_text",\n hint: "quote_text",\n format: apl_wikibar_formatByLine\n },\n {\n name: "quote by block",\n tip: "block quote",\n syntax: "<<<\snuser_text\sn<<<",\n hint: "quote_text",\n byBlock: true, \n format: apl_wikibar_formatByLine\n }\n ], // paragraphs\n links:[\n {\n name: "wiki",\n tip: "wiki link",\n syntax: "[[user_text]]",\n hint: "wiki_word",\n format: apl_wikibar_formatByWord\n },\n {\n name: "pretty",\n tip: "pretty link",\n syntax: "[[user_text|%1]]", \n hint: "pretty_word",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getLinkUrl,\n param: "PrettyLink Target"\n },\n {\n name: "url",\n tip: "url link",\n syntax: "[[user_text|%1]]", \n hint: "your_text",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getLinkUrl,\n param: "http://..."\n },\n {\n name: "image",\n tip: "image link",\n syntax: "[img[user_text|%1]]", \n hint: "alt_text",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getLinkUrl,\n param: "image/icon.jpg"\n }\n ], // links\n plugins:[\n {\n name: "codes area",\n tip: "block monospaced for plugin",\n syntax: "//{{{\snuser_text\sn//}}}",\n hint: "monospaced_plugin_text",\n byBlock: true,\n format: apl_wikibar_formatByLine\n }, \n {\n name: "comment by line",\n tip: "line comment",\n syntax: "//user_text",\n hint: "plugin_comment",\n format: apl_wikibar_formatByLine\n },\n {\n name: "comment by block",\n tip: "block comment",\n syntax: "/***\snuser_text\sn***/",\n hint: "plugin_comment",\n byBlock: true,\n format: apl_wikibar_formatByLine\n }\n ], // plugins\n tables:[\n {\n name: "table",\n tip: "create a new table",\n syntax: "\sn%1\sn",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getTableRowCol\n },\n {\n name: "table header",\n tip: "table header text",\n syntax: "|user_text|c",\n hint: "table_header",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "cell",\n tip: "create a tabel cell",\n syntax: "|user_text|",\n hint: "your_text",\n format: apl_wikibar_formatByWord\n },\n {\n name: "column header",\n tip: "create a column header cell",\n syntax: "|!user_text|",\n hint: "column_header",\n format: apl_wikibar_formatByWord\n },\n {\n name: "cell bgcolor",\n tip: "cell bgcolor",\n syntax: "|bgcolor(%1):user_text|",\n hint: "your_text",\n format: apl_wikibar_formatByTableCell,\n needParam: apl_wikibar_getColorCode\n },\n {\n name: "align left",\n tip: "add a tabel cell",\n syntax: "|user_text|",\n hint: "your_text",\n format: apl_wikibar_formatByTableCell\n },\n {\n name: "align center",\n tip: "add a tabel cell",\n syntax: "| user_text |",\n hint: "your_text",\n format: apl_wikibar_formatByTableCell\n },\n {\n name: "align right",\n tip: "add a tabel cell",\n syntax: "| user_text|",\n hint: "your_text",\n format: apl_wikibar_formatByTableCell\n }\n ], // tables\n macros:[\n {\n name: "allTags",\n tip: "allTags",\n syntax: "<<allTags>>",\n format: apl_wikibar_formatByWord\n },\n {\n name: "closeAll",\n tip: "closeAll",\n syntax: "<<closeAll>>",\n format: apl_wikibar_formatByWord\n },\n {\n name: "gradient",\n tip: "gradient",\n syntax: "<<gradient vert #ffffff %1>>user_text>>",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getColorCode\n },\n {\n name: "list",\n tip: "list",\n syntax: "<<list>>",\n format: apl_wikibar_formatByWord\n },\n {\n name: "list missing",\n tip: "list missing",\n syntax: "<<list missing>>",\n format: apl_wikibar_formatByWord\n },\n {\n name: "list orphans",\n tip: "list orphans",\n syntax: "<<list orphans>>",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "newJournal",\n tip: "newJournal",\n syntax: "<<newJournal>>",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "newTiddler",\n tip: "newTiddler",\n syntax: "<<newTiddler>>",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "option",\n tip: "option",\n syntax: "<<option %1>>[%2]\sn",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getMacroParam,\n param: 'chkOpenInNewWindow "Open link in new window"'\n }, \n {\n name: "permaview",\n tip: "permaview",\n syntax: "<<permaview>>",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "saveChanges",\n tip: "saveChanges",\n syntax: "<<saveChanges>>",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "search",\n tip: "search",\n syntax: "<<search>>",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "slider",\n tip: "slider",\n syntax: "<<slider %1 %2 %3>>",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getMacroParam,\n param: "sliderID sliderTiddler sliderLabel"\n }, \n {\n name: "sparkline",\n tip: "sparkline",\n syntax: "<<sparkline %N>>", \n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getMacroParam,\n param: "number_list(ex: 100 123 ...)"\n }, \n {\n name: "tabs",\n tip: "tabs",\n syntax: "<<tabs [%N]>>",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getMacroParam,\n param: "indentifier tabLabel tabName Tiddler"\n }, \n {\n name: "tag",\n tip: "tag",\n syntax: "<<tag %1>>",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getMacroParam,\n param: "tagName(ex: systemConfig)"\n }, \n {\n name: "tiddler",\n tip: "tiddler",\n syntax: "<<tiddler %1>>",\n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getMacroParam,\n param: "Tiddler"\n }, \n {\n name: "timeline",\n tip: "timeline",\n syntax: "<<timeline>>",\n format: apl_wikibar_formatByWord\n }, \n {\n name: "today",\n tip: "today",\n syntax: "<<today [%1]>>", \n format: apl_wikibar_formatByWord,\n needParam: apl_wikibar_getMacroParam,\n param: '"YYYY/MM/DD hh:mm:ss"'\n }, \n {\n name: "version",\n tip: "version",\n syntax: "<<version>>",\n format: apl_wikibar_formatByWord\n }\n ], // macros\n dates:[\n {\n name: "YYYY",\n tip: "full year",\n syntax: "YYYY",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "YY",\n tip: "2-digit year",\n syntax: "YY",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "MMM",\n tip: "month name",\n syntax: "MMM",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "MM",\n tip: "month",\n syntax: "MM",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "0MM",\n tip: "zero-leading month",\n syntax: "0MM",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "DDD",\n tip: "week day",\n syntax: "DDD",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "DD",\n tip: "day",\n syntax: "DD",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "0DD",\n tip: "zero-leading day",\n syntax: "0DD",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "hh",\n tip: "hour",\n syntax: "hh",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "mm",\n tip: "minute",\n syntax: "mm",\n format: apl_wikibar_formatByCursor\n },\n {\n name: "ss",\n tip: "second",\n syntax: "ss",\n format: apl_wikibar_formatByCursor\n } \n ], // dates\n htmls:[\n {\n name: "<html>",\n tip: "html tag",\n syntax: "<html>\snuser_text\sn</html>",\n hint: "html_content",\n byBlock: true,\n format: apl_wikibar_formatByLine\n }\n ] // htmls\n};\n\n\n//}}}
// // ''套件:'' zh_TW\n// // ''功能:'' TiddliWiki 介面中文化\n// // ''作者:'' Bram Chen\n// // ''版本:'' 1.2.37 (2005/10/28)\n// // ''說明:''\n// // Oct 28, 2005: 1 新增 config.messages.shadowedTiddlerToolTip\n// // 2.新增 config.macros.list.shadowed.prompt\n// // 3.修改 config.views.wikified.tag\n{{{\nversion.extensions.zh_TW = {major: 1, minor: 2, revision: 37, date: new Date("Oct 28, 2005")};\n// // ''Messages''\nconfig.messages= {\n customConfigError: "customConfig 錯誤 - '%1' - %0",\n savedSnapshotError: "此 TiddlyWiki 未正確存檔,詳見 http://www.tiddlywiki.com/#DownloadSoftware",\n subtitleUnknown: "(未知)",\n undefinedTiddlerToolTip: "'%0' 尚無內容",\n externalLinkTooltip: "外部連結至 %0",\n shadowedTiddlerToolTip: "'%0' 尚無內容, 但已定義隱藏的預設值",\n noTags: "未設定標籤的文章",\n notFileUrlError: "須先將此 TiddlyWiki 存至檔案,才可儲存變更",\n cantSaveError: "此瀏覽器無法儲存變更,建議使用FireFox",\n invalidFileError: " '%0' 非有效之 TiddlyWiki",\n backupSaved: "已儲存備份",\n backupFailed: "無法儲存備份",\n rssSaved: "RSS feed 已儲存",\n rssFailed: "無法儲存 RSS feed ",\n emptySaved: "已儲存範本",\n emptyFailed: "無法儲存範本",\n mainSaved: "主要的TiddlyWiki已儲存",\n mainFailed: "無法儲存主要 TiddlyWiki. 所作的改變未儲存",\n macroError: "macro執行錯誤 '%0'",\n overwriteWarning: "'%0' 已存在,[確定]覆寫之",\n unsavedChangesWarning: "注意! 尚未儲存變更\sn\sn[確定]存檔,或[取消]放棄存檔?",\n dates: {\n months: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"],\n days: ["日", "一","二", "三", "四", "五", "六"]\n }\n };\nconfig.views = {\n wikified: {\n tag: {labelNoTags: "未設標籤", labelTags: "標籤: ", tooltip: "顯示標籤為 '%0' 的文章", openAllText: "開啟以下所有文章", openAllTooltip: "開啟標籤為 '%0' 的文章", popupNone: "僅此文標籤為 '%0'"},\n toolbarClose: {text: "關閉", tooltip: "關閉本文"},\n toolbarEdit: {text: "編輯", tooltip: "編輯本文"},\n toolbarPermalink: {text: "引用連結", tooltip: "本文引用連結"},\n toolbarReferences: {text: "引用", tooltip: "引用本文的文章", popupNone: "本文未被引用"},\n defaultText: ""\n },\n editor: {\n tagPrompt: "設定標籤之間以空白區隔,[[標籤含空白時請使用雙中括弧]],或點選現有之標籤加入",\n tagChooser: {text: "標籤", tooltip: "點選現有之標籤加至本文章", popupNone: "未設定標籤", tagTooltip: "加入標籤 '%0'"},\n toolbarDone: {text: "完成", tooltip: "確定修改"},\n toolbarCancel: {text: "取消", tooltip: "取消修改"},\n toolbarDelete: {text: "刪除", tooltip: "刪除文章"},\n defaultText: ""\n }\n };\n// // ''SiderBar''\nconfig.shadowTiddlers.SideBarOptions = "<<gradient vert #ffffff #cc9900>><<search>><<closeAll>><<permaview>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 偏好設定 '變更 TiddlyWiki 選項'>>>>";\nconfig.shadowTiddlers.AdvancedOptions = "<<option chkOpenInNewWindow>> 連結開啟於新視窗\sn<<option chkSaveEmptyTemplate>> 儲存範本\sn<<option chkToggleLinks>> 點擊文章使已開啟者關閉\sn\sn<<option chkHttpReadOnly>> 隱藏編輯功能 ({{{http:}}})\sn<<option chkForceMinorUpdate>> 修改文章不變更日期時間\sn(確認修改同時按 Shift 鍵,或只按 Ctrl-Shift-Enter)";\nconfig.shadowTiddlers.OptionsPanel = "這些設定將暫存於瀏覽器中,\sn請簽名<<option txtUserName>>\sn (範例:WikiWord)\sn\sn <<option chkSaveBackups>> [[儲存備份]]\sn<<option chkAutoSave>> [[自動儲存]]\sn<<option chkGenerateAnRssFeed>> [[產生 RssFeed]]\sn<<option chkRegExpSearch>> [[正規式搜尋]]\sn<<option chkCaseSensitiveSearch>> [[區分大小寫搜尋]]\sn<<option \snchkAnimate>> [[使用動畫顯示]]\sn\sn <<slider sliderAdvancedOptions AdvancedOptions 進階選項 '進階選項'>>";\nconfig.shadowTiddlers.SideBarTabs = "<<tabs txtMainTab 最近更新 '依更新日期排序' TabTimeline 全部 '所有文章' TabAll 分類 '依標籤分類' TabTags 更多 '其他' TabMore>>";\nconfig.shadowTiddlers.TabMore = "<<tabs txtMoreTab 未完成 '內容空白的文章' TabMoreMissing 未引用 '未被引用的文章' TabMoreOrphans>>";\nconfig.shadowTiddlers.SliderTimeline = "<<slider sliderTimeline TabTimeline 最近更新 '最近更新的文章'>>";\nconfig.macros.search.label = " 尋找";\nconfig.macros.search.prompt = "搜尋本 Wiki";\nconfig.macros.search.sizeTextbox = 15;\nconfig.macros.search.accessKey = "F";\nconfig.macros.search.successMsg = " %0 篇符合條件";\nconfig.macros.search.failureMsg = " 無符合條件";\nconfig.macros.timeline.dateFormat = "YYYY0MM0DD";\nconfig.macros.allTags.tooltip = "顯示文章- 標籤為'%0'";\nconfig.macros.allTags.noTags = "沒有標籤的文章";\nconfig.macros.list.all.prompt = "依字母排序";\nconfig.macros.list.missing.prompt = "被引用且內容空白的文章";\nconfig.macros.list.orphans.prompt = "未被引用的文章";\nconfig.macros.list.shadowed.prompt = "這些隱藏的文章已定義預設內容";\n// // ''ToolsBar''\nconfig.macros.closeAll.label = "全部關閉";\nconfig.macros.closeAll.prompt = "關閉所有開啟中的 tiddler (編輯中除外)";\nconfig.macros.saveChanges.label = "儲存變更";\nconfig.macros.saveChanges.prompt = "儲存所有文章,產生新的版本";\nconfig.macros.permaview.label = "引用連結";\nconfig.macros.permaview.prompt = "可存取現有開啟之文章的連結位址";\nconfig.macros.newTiddler.label = "發表文章";\nconfig.macros.newTiddler.prompt = "新增 tiddler";\nconfig.macros.newJournal.label = "新增日誌";\nconfig.macros.newJournal.prompt = "新增 jounal";\n// // ''Date formatString''\nDate.prototype.formatString = function(template)\n{\n template = template.replace(/YYYY/g,this.getFullYear() + '年');\n template = template.replace(/YY/g,String.zeroPad(this.getFullYear()-1911,2) + '年');\n template = template.replace(/MMM/g,config.messages.dates.months[this.getMonth()] + '月');\n template = template.replace(/0MM/g,String.zeroPad(this.getMonth()+1,2) + '月');\n template = template.replace(/MM/g,this.getMonth()+1 + '月');\n template = template.replace(/DDD/g,'星期'+config.messages.dates.days[this.getDay()]);\n template = template.replace(/0DD/g,String.zeroPad(this.getDate(),2)+ '日');\n template = template.replace(/DD/g,this.getDate() + '日');\n template = template.replace(/hh/g,this.getHours());\n template = template.replace(/mm/g,this.getMinutes());\n template = template.replace(/ss/g,this.getSeconds());\n return template;\n};\n}}}
[[成交資料]]\n[[付款狀態]]\n[[出貨狀態]]\n/%[[查詢取消交易(未上線)]]\n[[同意取消交易(未上線)]]\n[[出貨狀態2(未上線)]]%/
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/order_xml/setPayStatus/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: order_xml\n\nmethod name 方法名稱.(必需的)\nex: setPayStatus\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| paystatus | 付款狀態 | Char(1) | | 1:已付款 |\n| payamount | 付款金額 | Int(10) | | |\n| paydate | 付款時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <paystatus>1</paystatus>\n <payamount>800</payamount>\n <paydate>20080324182000</paydate>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前寫入筆數一次最多 @@color(blue):''20''@@ 筆\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
許多方法需要使用者登入。目前僅有一種方式完成此作業。\n\n使用者應該向Ruten取得 API 認證。然後 token 和 api_key 參數應該與每個要求一起傳送。如需更多詳細資料,請閱讀認證 API 規格。\n\n有每個認證模式的逐步指南引導你完成安裝以及開發程序。\n\n* [[網站應用程式操作指南]]\n \n請注意,這些僅是我們的將在多數情況下有用的建議。
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/sclass_xml/updateSclass/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: sclass_xml\n\nmethod name 方法名稱.(必需的)\nex: updateSclass\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | |\n| classname | 商店自訂類別名稱 | Varchar(50) | | 英數字50字元 或 中文25字元 |\n| level | 商店自訂類別層級 | Int(11) | | 0:父分類, >0:子分類 (僅有子分類可設定商品,子分類此欄儲存父分類classid) |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classid>100</classid>\n <classname><![CDATA[mp3隨身聽特價區]]</classname>\n <level>0</level>\n </items>\n <items>\n <classid>101</classid>\n <classname><![CDATA[Creative]]</classname>\n <level>100</level>\n </items>\n</RUTEN>\n}}}\n\n@@color(#ff0033):''注意''@@\n#@@color(#ff0033):當父分類設定了所屬商品時,不可再建立子分類。@@\n#@@color(#ff0033):父分類不可降低為子分類。@@\n#@@color(#ff0033):子分類可變換至其他沒有所屬商品的父分類底下,但不可提升為父分類。@@\n\n@@color(orange):''限制''@@\n目前修改商店自訂類別筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classid>100</classid>\n <error>0</error>\n </items>\n <items>\n <classid>101</classid>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n\n@@color(orange):''傳遞方式''@@\n露天 API 使用遠端 HTTP POST 方式傳遞資料.\n\n@@color(orange):''限制''@@\n露天 API 伺服器限制僅有合作廠商伺服器IP傳入.
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/order_xml/setSellStatus/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: order_xml\n\nmethod name 方法名稱.(必需的)\nex: setSellStatus\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| shipstatus | 出貨狀態 | Char(1) | | 1:已出貨 |\n| shipdate | 出貨時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <shipstatus>1</shipstatus>\n <shipdate>20080324120000</shipdate>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前寫入筆數一次最多 @@color(blue):''20''@@ 筆\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/order_slz/setSellStatus/991234567890/}}}\n\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/order_xml/setSellStatus/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: order_slz or order_xml\n\nmethod name 方法名稱.(必需的)\nex: setSellStatus\n\nChecksum KEY.(必需的)\nex: \nAPI KEY + TOKEN \n991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| shipstatus | 出貨狀態 | Int(1) | | 0~5 @@color(#ff0033):(備註一)@@ |\n| shipdate | 處理時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n\n@@color(#ff0033):備註一@@ 出貨狀態: 0:未出貨, 1:已出貨, 2:換貨處理中, 3:YYYYMMDD換貨寄出, 4:退貨退款處理中, 5:YYYYMMDD已退款\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'orderno' => '99080210931185',\n 'shipstatus' => '1',\n 'shipdate' => '20080324120000'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <shipstatus>1</shipstatus>\n <shipdate>20080324120000</shipdate>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前寫入筆數一次最多 @@color(blue):''20''@@ 筆\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'orderno' => '99080210931185',\n 'error' => '0'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n
/%\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/goods_slz/delSpec/991234567890/}}}\n\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/goods_xml/delSpec/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_slz or goods_xml\n\nmethod name 方法名稱.(必需的)\nex: delSpec\n\nChecksum KEY.(必需的)\nex: \nAPI KEY + TOKEN \n991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| spec_no | 商品多規格編號 | Int(11) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'spec_no'=>'1000'\n ),\n array(\n 'spec_no'=>'1001'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <spec_no>1000</spec_no>\n </items>\n <items>\n <spec_no>1001</spec_no>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前刪除商品多規格一次最多 @@color(blue):''20''@@ 筆\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| spec_no | 商品多規格編號 | Int(11) | | 若有錯誤spec_no就為空值 |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'spec_no'=>'1000',\n 'error'=>'0'\n ),\n array(\n 'spec_no'=>'1001',\n 'error'=>'0'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <spec_no>1000</spec_no>\n <error>0</error>\n </items>\n <items>\n <spec_no>1001</spec_no>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n%/
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/sclass_xml/delSclass/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: sclass_xml\n\nmethod name 方法名稱.(必需的)\nex: delSclass\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classid>100</classid>\n </items>\n</RUTEN>\n}}}\n\n@@color(#ff0033):''注意'':@@\n#@@color(#ff0033):若此自訂類別為父分類( level = 0 ),且下層有子分類時,會直接刪除父分類及其所屬子分類,刪除後商品會自動歸類於未分類。@@\n#@@color(#ff0033):若此自訂類別為子分類( level > 0 )且設定了所屬商品,則分類刪除後商品會自動歸類於未分類。@@\n\n@@color(orange):''限制''@@\n目前刪除商店自訂類別筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classid>100</classid>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
[[購物車處理]]
/%\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/goods_slz/setAddItem/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_slz\n\nmethod name 方法名稱.(必需的)\nex: setAddItem\n\nChecksum KEY.(必需的)\nex: \nAPI KEY + TOKEN \n991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | 主商品 |\n| addgno | 加價購露天商品編號 | Char(14) | | 加價購商品 |\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'gno' => '99080210931185',\n 'addgno' => '99080210931186'\n )\n );\n}}}\n\n@@color(orange):''限制''@@\n目前加價購商品設定一次最多 @@color(blue):''20''@@ 筆。\n@@color(#ff0033):''注意'': 被設定為加價購商品, 於露天平台上無法直接下標, 僅能以加價購方式購買。@@\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | 主商品 |\n| addgno | 加價購露天商品編號 | Char(14) | | 加價購商品 |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'gno' => '99080210931185',\n 'addgno' => '99080210931186',\n 'error' => '0'\n )\n );\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n%/
\n@@color(orange):''文字編碼''@@\n使用 UTF-8 編碼.\n\n@@color(orange):''參數格式''@@\n*<RUTEN> : root element.\n*<msg> : 若有頁數或資料筆數相關內容, 會放在此 <msg> tag 內, 非固定出現的 tag.\n*<items> : 資料內容 tag , 若有多筆資料, 則 <items> tag 重複多筆.\n*<key>value</key> : 欄位內容以欄位名稱為 tag.\n*CDATA tag : 若遇到中文內容或URL欄位時, 需加上CDATA標籤.\n\n\n@@color(orange):''傳送範例''@@\n{{{\nXML EXAMPLE:\n\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <msg>\n <total>1</total>\n <error>0</error>\n </msg>\n <items>\n <key1>value1</key1>\n <key2>value2</key2>\n <key3>value3</key3>\n <key4><![CDATA[中文字]]></key4>\n </items>\n <items>\n <key1>value5</key1>\n <key2>value6</key2>\n <key3>value7</key3>\n <key4><![CDATA[中文字]]></key4>\n </items>\n</RUTEN>\n\n}}}
\n@@color(orange):''文字編碼''@@\n使用 BIG5 編碼.\n\n@@color(orange):''參數格式''@@\n''傳遞時'':\n#serialize - 使用 PHP serialize() \n#壓縮 - 使用 PHP gzcompress()\n#編碼 - 使用base64編碼\n\n@@color(orange):''傳送範例''@@\n{{{\nPHP EXAMPLE:\n\n//處理函數( return a string )\nfunction apiCompress($var)\n{\n $var = base64_encode(gzcompress(serialize($var)));\n return $var;\n}\n\n//待傳遞參數\n$ary = array(\n 'api_key'=>'99',\n 'name' => 'pchome',\n 'passwd' => '1234567890'\n );\n\n//處理參數格式化\n$arg_to_be_posted = apiCompress($ary);\n}}}\n\n''接收時'':\n#解碼 - 使用base64解碼\n#解壓縮 - 使用 PHP gzuncompress()\n#解serialize - 使用 PHP unserialize()\n\n@@color(orange):''接收範例''@@\n{{{\nPHP EXAMPLE:\n\n//處理函數( return a string )\nfunction apiUncompress($var)\n{\n $var = unserialize(gzuncompress(base64_decode($var)));\n return $var ;\n }\n\n//接收到參數\n$arg_get = get_arg_from_ruten();\n\n//處理參數格式化\n$ary = apiUncompress($arg_get);\n}}}
\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/order_slz/setCancelOrder/991234567890/}}}\n\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/order_xml/setCancelOrder/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: order_slz or order_xml\n\nmethod name 方法名稱.(必需的)\nex: setCancelOrder\n\nChecksum KEY.(必需的)\nex: \nAPI KEY + TOKEN \n991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 訂單編號 | Char(14) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'orderno' => '61071012812560'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>61071012812560</orderno>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前給同意取消交易筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'orderno' => '61071012812560',\n 'error'=>'0'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>61071012812560</orderno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/goods_xml/addBid/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_xml\n\nmethod name 方法名稱.(必需的)\nex: addBid\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| no | 廠商商品編號 | Varchar(20) | | |\n| name | 商品名稱 | Varchar(300) | | 中:150字, 英:300字 |\n| mode | 商品販售方式 | Set(’A’,’B’) | | A:競標, B:定價販售@@color(#ff0033):(備註一)@@ |\n| classno | 商品分類代號 | Varchar(24) | | |\n| uclassid | 自訂類別代號 | Int(11) | V | @@color(#ff0033):備註十@@ |\n| num | 商品數量 | Int(3) | | 1~999 |\n| startprice | 商品起標價格 | Int(10) | | >=1 |\n| baseprice | 商品底價 | Int(10) | | >=0 |\n| directprice | 商品直購價 | Int(10) | | >=1 |\n| selldays | 刊登天數 | Int(2) | | 3~60 |\n| closetime | 結束時段 | Int(2) | | 1~24 @@color(#ff0033):(備註二)@@ |\n| resellset | 設定重新上架次數 | Int(2) | | 0~10,99 (99代表無限次) |\n| early | 設定提前結束 | Enum(0,1) | | 0:不提, 1:提前 |\n| condition | 物品狀況 | Set(‘A’,’B’,’C’,’E’,’F’,’K’,’H’,’I’,’J’,’L’) | | @@color(#ff0033):備註三@@ |\n| shiprule | 運費規定 | Set(‘A’,’D’) | | @@color(#ff0033):備註四@@ |\n| ship | 運費 | Int(4) | V | |\n| pay | 付款方式 | Set(‘A’,’B’,’C’,’D’,’E’) | | @@color(#ff0033):備註五@@, 可複選, 逗點分隔 |\n| deliver | 交貨方式 | Set(‘A’,’B’,’C’,’D’,’E’,’F’) | | @@color(#ff0033):備註六@@, 可複選, 逗點分隔 |\n| o_deliver | 其他交貨付款方式 | Varchar(20) | V | 中:10字 |\n| trade | 交易方式 | Set(‘A’,’B’,’C’) | | @@color(#ff0033):備註七@@, 可複選, 逗點分隔 |\n| location | 物品所在地 | Set(‘1’,’2’,’3’,…,’25’) | | 0~25 @@color(#ff0033):(備註八)@@ |\n| o_location | 其它地區 | Varchar(20) | V | location(物品所在地)為0時需填寫 |\n| buyer_limit | 買家總評價最低限制 | Int (6) | | >=0 |\n| bad_limit | 買家差勁評價最低限制 | Int(3) | | >=0 |\n| flag | 特別醒目標籤 | Set(‘1’,’2’,’3’,…,’15’) | V | 1~15 @@color(#ff0033):(備註九)@@, 可複選, 逗點分隔 |\n| pic | 廠商商品照片 | Varchar(255) | | URL |\n| content | 廠商物品說明 | Varchar(255) | V | URL |\n\n@@color(#ff0033):備註一@@ 商品販售方式: 若設定商品為B:定價販售, 則商品會持續在架上銷售直到賣完或手動下架為止\n@@color(#ff0033):備註二@@ 結束時段: 24:午夜 12 點 - 凌晨 1 點\n         1: 凌晨 1 點 - 凌晨 2 點\n         2: 凌晨 2 點 - 凌晨 3 點\n         3: 凌晨 3 點 - 凌晨 4 點 (以下類推)\n         . . .\n         23: 晚上 11 點 - 午夜 12 點\n@@color(#ff0033):備註三@@ 物品狀況: A:物品中描述, B:全新, C:使用不到一週, E:使用不滿一個月, F:使用一到三個月,\n         K:使用未滿半年, H:使用未滿一年, I:使用一到二年, J:使用二到三年, L:使用三年以上\n@@color(#ff0033):備註四@@ 運費規定: A:買家自付, D:免運費\n@@color(#ff0033):備註五@@ 付款方式: A:接受現金, B:ATM轉帳, C:郵局無摺存款, D:接受信用卡, E:其他 \n@@color(#ff0033):備註六@@ 交貨方式: A:郵寄, B:宅配, C:快遞, D:接受運送國外, E:其他, F:見面交貨\n@@color(#ff0033):備註七@@ 交易方式: A:確認入帳後寄出物品, B:收到物品再付款, C:見面交貨付款 \n@@color(#ff0033):備註八@@ 物品所在地: \n0.其它 1.台北市 2.基隆市 3.台北縣 4宜蘭縣 5.桃園縣 6.新竹市 7.新竹縣 8.苗栗縣 9.台中市 10.台中縣11.彰化縣 12.南投縣 13.嘉義市 14.嘉義縣 15.雲林縣 16.台南市 17.台南縣 18.高雄市 19.高雄縣 20.澎湖縣 21.屏東縣 22.台東縣 23.花蓮縣 24.金門縣 25.連江縣\n@@color(#ff0033):備註九@@ 特別醒目標籤: \n1:手工製品 2:附禮盒 / 提袋 3:原廠保固 4:賣家保固 5:到府安裝 6:DIY安裝 7:專櫃正品 8:公司貨 9:平行輸入 10:可開發票 11:可開收據 12:附保證書 13:附鑑定書 14:有多種尺寸 15:有多種顏色\n@@color(#ff0033):備註十@@ 自訂類別代號: null:沒有自訂類別\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <no>DCAE00-A22210317</no>\n <name><![CDATA[海馬蜂巢式雙層腳踏墊]]></name>\n <mode>B</mode>\n <classno>000100020003</classno>\n <uclassid>1234</uclassid>\n <num>10</num>\n <startprice>100</startprice>\n <baseprice>0</baseprice>\n <directprice>100</directprice>\n <selldays>7</selldays>\n <closetime>15</closetime>\n <resellset>99</resellset>\n <early>1</early>\n <condition>B</condition>\n <shiprule>C</shiprule>\n <ship>0</ship>\n <pay>B,E</pay>\n <deliver>B,C</deliver>\n <o_deliver> </o_deliver>\n <trade>A</trade>\n <location>1</location>\n <o_location> </o_location>\n <buyer_limit>0</buyer_limit>\n <bad_limit>1</bad_limit>\n <flag>7,10</flag>\n <pic><![CDATA[http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317000]]></pic>\n <content><![CDATA[http://shopping.pchome.com.tw/?mod=item&amp;func=ruten&amp;IT_NO=DCAD2L-A10426483]]></content>\n </items>\n</RUTEN>\n}}}\n\n@@color(#ff0033):''注意''@@\n#nullable 欄位若不輸入,XML標籤內也必須填入一格空白(space)。\n#''classno'': 若為空白會將商品放至 Ruten測試類別 00070009 。\n#''content'': 若 url 商品內容有圖片,應給絕對路徑。\n#設定 shiprule=A,ship=空白時,商品頁顯示 "買家自付";shiprule=A,ship=100時,商品頁顯示 "100元"。\n\n@@color(orange):''限制''@@\n目前上架筆數一次最多 @@color(blue):''20''@@ 筆,一天以不超過 @@color(blue):''10萬''@@ 筆為限\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| no | 廠商商品編號 | Varchar(20) | | |\n| gno | 露天商品編號 | Char(14) | | 若有錯誤gno就為空值 |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <no>DCAE00-A22210317</no>\n <gno>99080210931185</gno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/goods_xml/closeBid/991234567890/ }}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_xml\n\nmethod name 方法名稱.(必需的)\nex: closeBid\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080210931185</gno>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前下架筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080210931185</gno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/goods_xml/updatePBid/991234567890/ }}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_xml\n\nmethod name 方法名稱.(必需的)\nex: updatePBid\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| no | 廠商商品編號 | Varchar(20) | | |\n| gno | 露天商品編號 | Char(14) | | |\n| name | 商品名稱 | Varchar(300) | | 中:150字, 英:300字 |\n| mode | 商品販售方式 | Set(’A’,’B’) | | A:競標, B:定價販售 |\n| classno | 商品分類代號 | Varchar(24) | | |\n| uclassid | 自訂類別代號 | Int(11) | V | @@color(#ff0033):備註十@@ |\n| num | 商品數量 | Int(3) | | 1~999 |\n| startprice | 商品起標價格 | Int(10) | | >=1 |\n| baseprice | 商品底價 | Int(10) | | >=0 |\n| directprice | 商品直購價 | Int(10) | | >=1 |\n| selldays | 刊登天數 | Int(2) | | @@color(#ff0033):備註一@@ |\n| closetime | 結束時段 | Int(2) | | 1~24 @@color(#ff0033):(備註二)@@ |\n| resellset | 設定重新上架次數 | Int(2) | | 0~10,99 |\n| early | 設定提前結束 | Enum(0,1) | | 0:不提, 1:提前 |\n| condition | 物品狀況 | Set(‘A’,’B’,’C’,’E’,’F’,’K’,’H’,’I’,’J’,’L’) | | @@color(#ff0033):備註三@@ |\n| shiprule | 運費規定 | Set(‘A’,’D’) | | @@color(#ff0033):備註四@@ |\n| ship | 運費 | Int(4) | V | |\n| pay | 付款方式 | Set(‘A’,’B’,’C’,’D’,’E’) | | @@color(#ff0033):備註五@@, 可複選, 逗點分隔 |\n| deliver | 交貨方式 | Set(‘A’,’B’,’C’,’D’,’E’,’F’) | | @@color(#ff0033):備註六@@, 可複選, 逗點分隔 |\n| o_deliver | 其他交貨付款方式 | Varchar(20) | V | 中:10字 |\n| trade | 交易方式 | Set(‘A’,’B’,’C’) | | @@color(#ff0033):備註七@@, 可複選, 逗點分隔 |\n| location | 物品所在地 | Set(‘1’,’2’,’3’,…,’25’) | | 0~25 @@color(#ff0033):(備註八)@@ |\n| o_location | 其它地區 | Varchar(20) | V | location(物品所在地)為0時需填寫 |\n| buyer_limit | 買家總評價最低限制 | Int (6) | | >=0 |\n| bad_limit | 買家差勁評價最低限制 | Int(3) | | >=0 |\n| flag | 特別醒目標籤 | Set(‘1’,’2’,’3’,…,’15’) | V | 1~12 @@color(#ff0033):(備註九)@@, 可複選, 逗點分隔 |\n| pic | 廠商商品照片 | Varchar(255) | | URL |\n| content | 廠商物品說明 | Varchar(255) | V | URL |\n\n@@color(#ff0033):備註一@@ 刊登天數: 3,4,5,6,7,8,9,10,20,30,60\n@@color(#ff0033):備註二@@ 結束時段: 24:午夜 12 點 - 凌晨 1 點\n         1: 凌晨 1 點 - 凌晨 2 點\n         2: 凌晨 2 點 - 凌晨 3 點\n         3: 凌晨 3 點 - 凌晨 4 點 (以下類推)\n         . . .\n         23: 晚上 11 點 - 午夜 12 點\n@@color(#ff0033):備註三@@ 物品狀況: A:物品中描述, B:全新, C:使用不到一週, E:使用不滿一個月, F:使用一到三個月,\n         K:使用未滿半年, H:使用未滿一年, I:使用一到二年, J:使用二到三年, L:使用三年以上\n@@color(#ff0033):備註四@@ 運費規定: A:買家自付, D:免運費\n@@color(#ff0033):備註五@@ 付款方式: A:接受現金, B:ATM轉帳, C:郵局無摺存款, D:接受信用卡, E:其他 \n@@color(#ff0033):備註六@@ 交貨方式: A:郵寄, B:宅配, C:快遞, D:接受運送國外, E:其他, F:見面交貨\n@@color(#ff0033):備註七@@ 交易方式: A:確認入帳後寄出物品, B:收到物品再付款, C:見面交貨付款 \n@@color(#ff0033):備註八@@ 物品所在地: \n0.其它 1.台北市 2.基隆市 3.台北縣 4宜蘭縣 5.桃園縣 6.新竹市 7.新竹縣 8.苗栗縣 9.台中市 10.台中縣11.彰化縣 12.南投縣 13.嘉義市 14.嘉義縣 15.雲林縣 16.台南市 17.台南縣 18.高雄市 19.高雄縣 20.澎湖縣 21.屏東縣 22.台東縣 23.花蓮縣 24.金門縣 25.連江縣\n@@color(#ff0033):備註九@@ 特別醒目標籤: \n1:手工製品 2:附禮盒 / 提袋 3:原廠保固 4:賣家保固 5:到府安裝 6:DIY安裝 7:專櫃正品 8:公司貨 9:平行輸入 10:可開發票 11:可開收據 12:附保證書 13:附鑑定書 14:有多種尺寸 15:有多種顏色\n@@color(#ff0033):備註十@@ 自訂類別代號: null:沒有自訂類別\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <no>DCAE00-A22210317</no>\n <gno>997654321753</gno>\n <name><![CDATA[海馬蜂巢式雙層腳踏墊]]></name>\n <mode>B</mode>\n <classno>000100020003</classno>\n <uclassid>1234</uclassid>\n <num>10</num>\n <startprice>100</startprice>\n <baseprice>0</baseprice>\n <directprice>100</directprice>\n <selldays>7</selldays>\n <closetime>15</closetime>\n <resellset>99</resellset>\n <early>1</early>\n <condition>B</condition>\n <shiprule>C</shiprule>\n <ship>0</ship>\n <pay>B,E</pay>\n <deliver>B,C</deliver>\n <o_deliver> </o_deliver>\n <trade>A</trade>\n <location>1</location>\n <o_location> </o_location>\n <buyer_limit>0</buyer_limit>\n <bad_limit>1</bad_limit>\n <flag>7,10</flag>\n <pic><![CDATA[http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317000]]></pic>\n <content><![CDATA[http://shopping.pchome.com.tw/?mod=item&func=ruten&IT_NO=DCAD2L-A123456]]></content>\n </items>\n</RUTEN>\n}}}\n\n@@color(#ff0033):''注意''@@\n#nullable 欄位若不輸入,XML標籤內也必須填入一格空白(space)。\n#''classno'': 若為空白會將商品放至 Ruten測試類別 00070009 。\n#''content'': 若 url 商品內容有圖片,應給絕對路徑。\n#設定 shiprule=A,ship=空白時,商品頁顯示 "買家自付";shiprule=A,ship=100時,商品頁顯示 "100元"。\n#@@color(#ff0033):''注意: 此API會更換露天商品編號, 亦即舊商品下架, 另一新商品編號上架。''@@\n\n@@color(orange):''限制''@@\n目前更新筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| no | 廠商商品編號 | Varchar(20) | | |\n| gno | 露天商品編號 | Char(14) | | 新露天商品編號, 若有錯誤gno就為空值 |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <no>DCAE00-A22210317</no>\n <gno>99080210931185</gno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/class/}}}\n\n@@color(orange):''API - XML''@@\n\n直接由此URL取得平台最新類別資訊\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\narray(2) {\n [0]=>\n string(10) "2008-03-31"\n [1]=>\n array(7692) {\n [0]=>\n array(3) {\n [0]=>\n string(0) ""\n [1]=>\n string(4) "0001"\n [2]=>\n string(12) "嬰幼童、母親"\n }\n [1]=>\n array(3) {\n [0]=>\n string(4) "0001"\n [1]=>\n string(8) "00010001"\n [2]=>\n string(12) "嬰兒服、配件"\n }\n [2]=>\n array(3) {\n [0]=>\n string(8) "00010001"\n [1]=>\n string(12) "000100010001"\n [2]=>\n string(4) "褲裙"\n }\n}\n}}}\n\n''@@color(#ff0033):注意︰@@''\n露天分類代碼規則: ''0001'' 是第一層, ''00010001'' 是第二層, 每四碼為一層, 最多六層.\n\n陣列元素第一層元素0為更新時間\n陣列元素第二層元素0為父類別編號\n陣列元素第二層元素1為子類別編號\n陣列元素第二層元素2為子類別名稱\n\n''@@color(blue):測試資料請放 Ruten測試類別 00070009 @@''\n
[[商品上架]]\n[[商品下架]]\n[[商品資料更新]]\n[[商品價格更新]]\n\n/%comment_text\n[[設定商品多規格(未上線)]]\n[[更新商品多規格(未上線)]]\n[[刪除商品多規格(未上線)]]\n[[加價購商品設定(未上線)]]\n%/
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/goods_xml/updateBid/991234567890/ }}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_xml\n \nmethod name 方法名稱.(必需的)\nex: updateBid\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| name | 商品名稱 | Varchar(300) | | 中:150字, 英:300字 |\n| classno | 商品分類代號 | Varchar(24) | | |\n| uclassid | 自訂類別代號 | Int(11) | V | @@color(#ff0033):備註一@@ |\n| num | 商品數量 | Int(3) | | 1~999 @@color(#ff0033):(備註二)@@ |\n| condition | 物品狀況 | Set(‘A’,’B’,’C’,’E’,’F’,’K’,’H’,’I’,’J’,’L’) | | @@color(#ff0033):備註三@@ |\n| shiprule | 運費規定 | Set(‘A’,’D’) | | @@color(#ff0033):備註四@@ |\n| ship | 運費 | Int(4) | V | |\n| pay | 付款方式 | Set(‘A’,’B’,’C’,’D’,’E’) | | @@color(#ff0033):備註五@@, 可複選, 逗點分隔 |\n| deliver | 交貨方式 | Set(‘A’,’B’,’C’,’D’,’E’,’F’) | | @@color(#ff0033):備註六@@, 可複選, 逗點分隔 |\n| o_deliver | 其他交貨付款方式 | Varchar(20) | V | 中:10字 |\n| trade | 交易方式 | Set(‘A’,’B’,’C’) | | @@color(#ff0033):備註七@@, 可複選, 逗點分隔 |\n| location | 物品所在地 | Set(‘1’,’2’,’3’,…,’25’) | | 0~25 @@color(#ff0033):(備註八)@@ |\n| o_location | 其它地區 | Varchar(20) | V | location(物品所在地)為0時需填寫 |\n| buyer_limit | 買家總評價最低限制 | Int (6) | | >=0 |\n| bad_limit | 買家差勁評價最低限制 | Int(3) | | >=0 |\n| flag | 特別醒目標籤 | Set(‘1’,’2’,’3’,…,’15’) | | 1~12 @@color(#ff0033):(備註九)@@, 可複選, 逗點分隔 |\n| pic | 廠商商品照片 | Varchar(255) | | URL |\n| content | 廠商物品說明 | Varchar(255) | | URL |\n\n@@color(#ff0033):備註一@@ 自訂類別代號: null:沒有自訂類別\n@@color(#ff0033):備註二@@ 商品數量: 修改商品數量時, 不可少於已賣出數量(系統會自行判斷)\n@@color(#ff0033):備註三@@ 物品狀況: A:物品中描述, B:全新, C:使用不到一週, E:使用不滿一個月, F:使用一到三個月,\n         K:使用未滿半年, H:使用未滿一年, I:使用一到二年, J:使用二到三年, L:使用三年以上\n@@color(#ff0033):備註四@@ 運費規定: A:買家自付, D:免運費\n@@color(#ff0033):備註五@@ 付款方式: A:接受現金, B:ATM轉帳, C:郵局無摺存款, D:接受信用卡, E:其他 \n@@color(#ff0033):備註六@@ 交貨方式: A:郵寄, B:宅配, C:快遞, D:接受運送國外, E:其他, F:見面交貨\n@@color(#ff0033):備註七@@ 交易方式: A:確認入帳後寄出物品, B:收到物品再付款, C:見面交貨付款\n@@color(#ff0033):備註八@@ 物品所在地: \n0.其它 1.台北市 2.基隆市 3.台北縣 4宜蘭縣 5.桃園縣 6.新竹市 7.新竹縣 8.苗栗縣 9.台中市 10.台中縣11.彰化縣 12.南投縣 13.嘉義市 14.嘉義縣 15.雲林縣 16.台南市 17.台南縣 18.高雄市 19.高雄縣 20.澎湖縣 21.屏東縣 22.台東縣 23.花蓮縣 24.金門縣 25.連江縣\n@@color(#ff0033):備註九@@ 特別醒目標籤: \n1:手工製品 2:附禮盒 / 提袋 3:原廠保固 4:賣家保固 5:到府安裝 6:DIY安裝 7:專櫃正品 8:公司貨 9:平行輸入 10:可開發票 11:可開收據 12:附保證書 13:附鑑定書 14:有多種尺寸 15:有多種顏色 \n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080210931185</gno>\n <name><![CDATA[海馬蜂巢式雙層腳踏墊33]]></name>\n <classno>000100020003</classno>\n <uclassid>1234</uclassid>\n <num>10</num>\n <condition>B</condition>\n <shiprule>A</shiprule>\n <ship>50</ship>\n <pay>B,E</pay>\n <deliver>B,C</deliver>\n <o_deliver> </o_deliver>\n <trade>A</trade>\n <location>1</location>\n <o_location> </o_location>\n <buyer_limit>0</buyer_limit>\n <bad_limit>1</bad_limit>\n <flag>7,10</flag>\n <pic><![CDATA[http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597]]></pic>\n <content><![CDATA[http://shopping.pchome.com.tw/?mod=item&func=ruten&IT_NO=DCAD2L-A123456]]></content>\n </items>\n</RUTEN>\n}}}\n\n@@color(#ff0033):''注意''@@\n#nullable 欄位若不輸入,XML標籤內也必須填入一格空白(space)。\n#''classno'': 若為空白會將商品放至 Ruten測試類別 00070009 。\n#''content'': 若 url 商品內容有圖片,應給絕對路徑。\n#設定 shiprule=A,ship=空白時,商品頁顯示 "買家自付";shiprule=A,ship=100時,商品頁顯示 "100元"。\n\n@@color(orange):''限制''@@\n目前更新筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080210931185</gno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/sclass_xml/searchSclass/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: sclass_xml\n\nmethod name 方法名稱.(必需的)\nex: searchSclass\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classid>101,102</classid>\n </items>\n <items>\n <classid>103,104,105</classid>\n </items>\n <items>\n <classid>106</classid>\n </items>\n</RUTEN>\n}}}\n\n@@color(#ff0033):''注意''@@\n#@@color(#ff0033):商店自訂類別編號陣列的元素順序,即為商店自訂類別的顯示順序(同時包含父分類與子分類)。@@\n#@@color(#ff0033):以上方範例為例,101,103,106為父分類,101含有子分類102,103含有子分類104,105。@@\n#@@color(#ff0033):當父分類設定了所屬商品時,不可再建立子分類。@@\n#@@color(#ff0033):父分類不可降低為子分類。@@\n#@@color(#ff0033):子分類可變換至其他沒有所屬商品的父分類底下,但不可提升為父分類。@@\n\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | 排序第一位的商店自訂類別編號 |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classid>101</classid>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
[[問題列表]]\n[[問題回覆]]
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/qa_xml/getQa/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: qa_xml\n\nmethod name 方法名稱.(必需的)\nex: getQa\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「讀取」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| page | 查詢頁數 | Int(8) | | 第一次給0 |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080210931185</gno>\n <page>0</page>\n </items>\n</RUTEN>\n}}}\n\n注意︰''page'' = 0 是第一次不清楚頁數所設定的初始值,回覆會給第一頁結果,後續給值單位為頁數\n\n@@color(orange):''限制''@@\n目前一頁提供 @@color(blue):''30''@@ 筆。\n\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| total | 總筆數 | Int(8) | | |\n| error | 錯誤代碼 | Int(3) | | |\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| qid | 問題編號 | Int(11) | | |\n| quser | 提問人帳號 | Varchar(30) | | |\n| qtime | 提問時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n| question | 問題內容 | text | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <msg>\n <total>1</total>\n <error>0</error>\n </msg>\n <items>\n <gno>99080210931185</gno>\n <qid>6</qid>\n <quser>ac01</quser>\n <qtime>20080322153000</qtime>\n <question><![CDATA[商品有沒有附說明書]]></question>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/qa_xml/setQa/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: qa_xml\n\nmethod name 方法名稱.(必需的)\nex: setQa\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| gid | 問題編號 | Int(11) | | |\n| content | 回覆內容 | text | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080210931185</gno>\n <gid>6</gid>\n <content><![CDATA[有附說明書.]]></content>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前給回應內容筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| qid | 問題編號 | Int(11) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080210931185</gno>\n <gid>6</gid>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
[[申請露天 API 專用代號]]\n/%comment_text[[登入處理]]%/\n
\n@@color(orange):''字元編碼''@@\n\n露天 API XML 版目前使用 UTF-8 字元編碼.
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/secret_xml/getSecret/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: secret_xml\n\nmethod name 方法名稱.(必需的)\nex: getSecret\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「讀取」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| starttime | 開始時間| Char(14) | | 格式:YYYYMMDDHHMMSS |\n| endtime | 結束時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n| page | 查詢頁數 | Int(8) | | 第一次給0 |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <starttime>20071012000000</starttime>\n <endtime>20071112235959</endtime>\n <page>0</page>\n </items>\n</RUTEN>\n}}}\n\n注意︰''page'' = 0 是第一次不清楚頁數所設定的初始值,回覆會給第一頁結果,後續給值單位為頁數。\n\n@@color(orange):''限制''@@\n目前一頁提供 @@color(blue):''30''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| total | 總筆數 | Int(8) | | |\n| error | 錯誤代碼 | Int(3) | | |\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| secretno | 悄悄話編號 | Int(11) | | |\n| sender | 寄件人帳號 | Varchar(30) | | |\n| recvtime | 收到時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n| title | 悄悄話主旨 | Varchar(100) | | |\n| content | 悄悄話內容 | text | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <msg>\n <total>1</total>\n <error>0</error>\n </msg>\n <items>\n <secretno>12345</secretno>\n <sender>kougre</sender>\n <recvtime>20071012151051</recvtime>\n <title><![CDATA[向您詢問一件事情]]></title>\n <content><![CDATA[您好,請問可不可以打八折?]]></content>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/secret_xml/setSecret/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: secret_xml\n\nmethod name 方法名稱.(必需的)\nex: setSecret\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「讀取」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| secretno | 悄悄話編號 | Int(11) | | |\n| content | 回覆內容 | text | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <secretno>12345</secretno>\n <content><![CDATA[很抱歉不能打折]]></content>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前給回應內容筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| secretno | 悄悄話編號 | Int(11) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <secretno>12345</secretno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
[[悄悄話列表]]\n[[悄悄話回覆]]
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/order_xml/getOrder/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: order_xml\n\nmethod name 方法名稱.(必需的)\nex: getOrder\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「讀取」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| starttime | 開始時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n| endtime | 結束時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n| page | 查詢頁數 | Int(8) | | 第一次給0 |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <starttime>20071012000000</starttime>\n <endtime>20071112235959</endtime>\n <page>0</page>\n </items>\n</RUTEN>\n}}}\n\n注意︰''page'' = 0 是第一次不清楚頁數所設定的初始值,回覆會給第一頁結果,後續給值單位為頁數。\n\n@@color(orange):''限制''@@\n目前一頁提供 @@color(blue):''30''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| total | 總筆數 | Int(8) | | |\n| error | 錯誤代碼 | Int(3) | | |\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| orderno | 露天訂單編號 | Char(14) | | |\n| buyer | 買家露天帳號 | Varchar(30) | | |\n| num | 購買數量 | Int(3) | | |\n| amount | 購買金額 | Int(10) | | |\n| closetime | 訂單建立時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <msg>\n <total>1</total>\n <error>0</error>\n </msg>\n <items>\n <gno>99070928060522</gno>\n <orderno>61071012812560</orderno>\n <buyer>kougre</buyer\n <num>1</num>\n <amount>1</amount>\n <closetime>20071012151051</closetime>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/sclass_xml/addSclass/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: sclass_xml\n\nmethod name 方法名稱.(必需的)\nex: addSclass\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classname | 商店自訂類別名稱 | Varchar(50) | | 英數字50字元 或 中文25字元 |\n| level | 商店自訂類別層級 | Int(11) | | 0:父分類, >0:子分類 (僅有子分類可設定商品,子分類此欄儲存父分類classid) |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classname><![CDATA[mp3隨身聽]]</classname>\n <level>0</level>\n </items>\n <items>\n <classname><![CDATA[床頭音響]]</classname>\n <level>0</level>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前新增商店自訂類別筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(#ff0033):''注意''@@\n#@@color(#ff0033):當父分類設定了所屬商品時,不可再建立子分類。@@\n#@@color(#ff0033):不可建立子分類於不存在的父分類下。@@\n\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | |\n| classname | 商店自訂類別名稱 | Varchar(50) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <classid>100</classid>\n <classname><![CDATA[mp3隨身聽]]</classname>\n <error>0</error>\n </items>\n <items>\n <classid>101</classid>\n <classname><![CDATA[床頭音響]]</classname>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
/%\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/goods_slz/updateSpec/991234567890/}}}\n\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/goods_xml/updateSpec/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_slz or goods_xml\n\nmethod name 方法名稱.(必需的)\nex: updateSpec\n\nChecksum KEY.(必需的)\nex: \nAPI KEY + TOKEN \n991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| spec_no | 商品多規格編號 | Int(11) | | |\n| spec_name | 規格名稱 | Varchar(100) | | 多規格間以逗號分隔 |\n| spec_img | 規格圖片 | Varchar(255) | V | URL |\n| spec_price | 規格價格 | Int(8) | V | |\n| spec_status | 規格狀態 | Enum('0','1','2') | | 0~2 @@color(#ff0033):(備註一)@@ |\n\n@@color(#ff0033):備註一@@ 規格狀態: 0:出售中, 1:已售完, 2:補貨中\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'spec_no'=>'1000',\n 'spec_name' => 'S,紅色',\n 'spec_img' => 'http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597',\n 'spec_price' => '250',\n 'spec_status' => '0'\n ),\n array(\n 'spec_no'=>'1001',\n 'spec_name' => 'L,藍色',\n 'spec_img' => 'http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597',\n 'spec_price' => '250',\n 'spec_status' => '0'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <spec_no>1000</spec_no>\n <spec_name><![CDATA[S,紅色]]></spec_name>\n <spec_img><![CDATA[http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597]]></spec_img>\n <spec_price>250</spec_price>\n <spec_status>0</spec_status>\n </items>\n <items>\n <spec_no>1001</spec_no>\n <spec_name><![CDATA[L,藍色]]></spec_name>\n <spec_img><![CDATA[http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597]]></spec_img>\n <spec_price>250</spec_price>\n <spec_status>0</spec_status>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前更新商品多規格一次最多 @@color(blue):''20''@@ 筆\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| spec_no | 商品多規格編號 | Int(11) | | 若有錯誤spec_no就為空值 |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'spec_no'=>'1000',\n 'error'=>'0'\n ),\n array(\n 'spec_no'=>'1001',\n 'error'=>'0'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <spec_no>1000</spec_no>\n <error>0</error>\n </items>\n <items>\n <spec_no>1001</spec_no>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n%/
\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/order_slz/getCancelOrder/991234567890/}}}\n\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/order_xml/getCancelOrder/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: order_slz or order_xml\n\nmethod name 方法名稱.(必需的)\nex: getCancelOrder\n\nChecksum KEY.(必需的)\nex: \nAPI KEY + TOKEN \n991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「讀取」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| starttime | 訂單開始時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n| endtime | 訂單結束時間 | Char(14) | | 格式:YYYYMMDDHHMMSS |\n| page | 查詢頁數 | Int(8) | | 第一次給0 |\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n 'starttime' => '20071012000000',\n 'endtime' => '20071112235959',\n 'page' => '0'\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <starttime>20071012000000</starttime>\n <endtime>20071112235959</endtime>\n <page>0</page>\n </items>\n</RUTEN>\n}}}\n\n注意︰''page'' = 0 是第一次不清楚頁數所設定的初始值,回覆會給第一頁結果,後續給值單位為頁數。\n\n@@color(orange):''限制''@@\n目前一頁提供 @@color(blue):''30''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| total | 總筆數 | Int(8) | | |\n| error | 錯誤代碼 | Int(3) | | |\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| content | 取消原因 | Varchar(100) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'total'=>'1',\n 'error'=>'0'\n ),\n array(\n 'orderno' => '61071012812560',\n 'content' => '雙方協調確定取消交易'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <msg>\n <total>1</total>\n <error>0</error>\n </msg>\n <items>\n <orderno>61071012812560</orderno>\n <content><![CDATA[雙方協調確定取消交易]]></content>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/sclass_xml/searchSclass/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: sclass_xml\n\nmethod name 方法名稱.(必需的)\nex: searchSclass\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「讀取」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| username | 露天帳號 | Varchar(30) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <username>pchome</username>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n無\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| total | 總筆數 | Int(8) | | |\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| classid | 商店自訂類別編號 | Int(11) | | |\n| classname | 商店自訂類別名稱 | Varchar(50) | | 英數字50字元 或 中文25字元 |\n| level | 商店自訂類別層級 | Int(11) | | 0:父分類, >0:子分類 (僅有子分類可設定商品,子分類此欄儲存父分類classid) |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <msg>\n <total>5</total>\n </msg>\n <items>\n <classid>100</classid>\n <classname><![CDATA[mp3隨身聽]]</classname>\n <level>0</level>\n </items>\n <items>\n <classid>101</classid>\n <classname><![CDATA[iPod]]</classname>\n <level>100</level>\n </items>\n <items>\n <classid>102</classid>\n <classname><![CDATA[Sony]]</classname>\n <level>100</level>\n </items>\n <items>\n <classid>110</classid>\n <classname><![CDATA[床頭音響]]</classname>\n <level>0</level>\n </items>\n <items>\n <classid>111</classid>\n <classname><![CDATA[Pioneer]]</classname>\n <level>110</level>\n </items>\n</RUTEN>\n}}}\n\n\n@@color(red):''注意:''@@\n@@color(blue):陣列資料順序即為商店自訂類別顯示順序@@\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
Ruten API 由一組可呼叫方法和一些 API 端點構成。\n\n若要使用 Ruten API 執行動作,你需要選擇呼叫慣例,發送要求至其指定群組、方法和一些引數的端點,然後將收到一條格式化的回覆。\n\n列示在 API 索引頁面上的所有要求格式均包含一系列具名參數。\n\n必需的參數 group 用於指定呼叫群組。\n\n必需的參數 method 用於指定呼叫方法。\n\n必需的參數 api_key 用於指定你的 API key。\n\n每個群組上方法的引數、回覆和錯誤代碼均會列示在群組方法的特定頁面上。方法會列示在 API 索引頁面上。\n
Ruten API 由露天團隊開發用於商業用途。
\n經業務單位與合作廠商確認後, \n\n請合作廠商提供:\n#於露天註冊的拍賣帳號\n#系統介接的伺服器IP位址\n\n由露天提供:\n#露天API專用金鑰(token)\n\n合作廠商獲得以上資訊後才能開始使用露天API.\n
/%comment_text\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/member_slz/login/}}}\n\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/member_xml/login/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: member_slz or member_xml\n\nmethod name 方法名稱.(必需的)\nex: login\n\n@@color(orange):''認證''@@\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| api_key | 露天API專用代號 | Varchar(10) | | |\n| name | 露天API使用者帳號 | Varchar(20) | | |\n| passwd | 露天API使用者密碼 | Varchar(20) | | 需經過編碼 |\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n 'api_key'=>'99',\n 'name' => 'pchome',\n 'passwd' => '1234567890'\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <api_key>99</api_key>\n <name>pchome</name>\n <passwd>1234567890</passwd>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n取得的token值 @@color(#ff0033):expire time 為兩小時@@, 之後需要重新登入取得新的token值, 否則無法繼續進行任何作業.\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| token | 露天API認證token | Varchar(10) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n 'token'=>'963374123',\n 'error'=>'0'\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <token>963374123</token>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n%/
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/credit_xml/getCredit/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: credit_xml\n\nmethod name 方法名稱.(必需的)\nex: getCredit\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| fbscore | 評價分數 | Int(1) | | -1:差勁評價, 0:普通平價, 1:優良評價 |\n| fbcontent | 評價意見 | Varchar(500) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <fbscore>-1</fbscore>\n <fbcontent><![CDATA[差]]></fbcontent>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前給評價筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
{{{\n這是一個簡單的逐步指南,用於使用 Ruten Authentication API 建立基於網站的應用程式。API 的完整規格可以在這裡找到。\n}}}\n\n''1. 獲取一個 API key''\n每個 Ruten API 應用程式都需要獲得一個 API「key」。\nex: 99 \n\n''2. 配置你的 token''\n你一旦發表了 key,Ruten API 便會配置您的 token 來確認身分。\nex: a02506b31c1cd46c2e0b6380fb94eb3d\n\n''3. 建立登入連結''\nhttp://api.ruten.com.tw/auth/get/\n\n''4. 建立認證處理程式''\n''5. 建立認證呼叫''
[[網站標題|SiteTitle]]\n[[網站副標題|SiteSubtitle]]\n[[預設載入條目|DefaultTiddlers]]\n[[修改主選單|MainMenu]]\n[[修改網址|SiteUrl]](製作RSS Feed時會用到)\n[[WikiBarPlugin]]
@@bgcolor(orange):Ruten API 目前資料均使用 BIG5 編碼。@@
[[查詢商店自訂類別]]\n[[新增商店自訂類別]]\n[[修改商店自訂類別]]\n[[刪除商店自訂類別]]\n[[商店自訂類別排序]]\n
/%\n@@color(orange):''API - serialize''@@\n{{{http://api.ruten.com.tw/index.php/goods_slz/addSpec/991234567890/}}}\n\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/goods_xml/addSpec/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: goods_slz or goods_xml\n\nmethod name 方法名稱.(必需的)\nex: addSpec\n\nChecksum KEY.(必需的)\nex: \nAPI KEY + TOKEN \n991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| spec_name | 規格名稱 | Varchar(100) | | 多規格間以逗號分隔 |\n| spec_img | 規格圖片 | Varchar(255) | V | URL |\n| spec_price | 規格價格 | Int(8) | V | |\n| spec_status | 規格狀態 | Enum('0','1','2') | | 0~2 @@color(#ff0033):(備註一)@@ |\n\n@@color(#ff0033):備註一@@ 規格狀態: 0:出售中, 1:已售完, 2:補貨中\n\n@@color(orange):''請求範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'gno'=>'99080213948374',\n 'spec_name' => 'S,紅色',\n 'spec_img' => 'http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597',\n 'spec_price' => '250',\n 'spec_status' => '0'\n ),\n array(\n 'gno'=>'99080213948374',\n 'spec_name' => 'L,藍色',\n 'spec_img' => 'http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597',\n 'spec_price' => '250',\n 'spec_status' => '0'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080213948374</gno>\n <spec_name><![CDATA[S,紅色]]></spec_name>\n <spec_img><![CDATA[http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597]]></spec_img>\n <spec_price>250</spec_price>\n <spec_status>0</spec_status>\n </items>\n <items>\n <gno>99080213948374</gno>\n <spec_name><![CDATA[L,藍色]]></spec_name>\n <spec_img><![CDATA[http://ec1img.pchome.com.tw/pic/D/C/A/E/0/0/DCAE00-A22210317_47d48aae4c597]]></spec_img>\n <spec_price>250</spec_price>\n <spec_status>0</spec_status>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前設定商品多規格一次最多 @@color(blue):''20''@@ 個規格\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| gno | 露天商品編號 | Char(14) | | |\n| spec_no | 商品多規格編號 | Int(11) | | 若有錯誤spec_no就為空值 |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nPHP EXAMPLE:\n$ary = array(\n array(\n 'gno'=>'99080213948374',\n 'spec_no'=>'1000',\n 'error'=>'0'\n ),\n array(\n 'gno'=>'99080213948374',\n 'spec_no'=>'1001',\n 'error'=>'0'\n )\n );\n}}}\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <gno>99080213948374</gno>\n <spec_no>1000</spec_no>\n <error>0</error>\n </items>\n <items>\n <gno>99080213948374</gno>\n <spec_no>1001</spec_no>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n%/
[[給評價]]\n[[邀評價]]
\n使用者於露天下標購買商品後欲結帳付款時, 由露天傳送待結帳訂單資訊給合作廠商, \n\n傳送目的URL需合作廠商提供.\n\n@@color(orange):''傳送欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| User_No | 露天帳號 | Varchar(30) | | |\n| Order_List | 訂單資訊 | Array | | |\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| Order_No | 露天訂單編號 | Char(14) | | |\n| Item_No | 露天商品編號 | Char(14) | | |\n| Price | 單價 | Int(11) | | |\n| Count | 數量 | Int(8) | | |\n\n@@color(orange):''傳送範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <User_No>abcde</User_No>\n <Order_List>\n <items>\n <Order_No>96080421569483</Order_No>\n <Item_No>-99080421569483</Item_No>\n <Price>100</Price>\n <Count>1</Count>\n </items>\n <items>\n <Order_No>96080421569482</Order_No>\n <Item_No>-99080421569482</Item_No>\n <Price>360</Price>\n <Count>2</Count>\n </items>\n </Order_List>\n</RUTEN>\n}}}\n\n{{{\nHTTP POST :\nURL : http://somedomain/somedir/somefile (請合作廠商提供)\n參數名稱 : stream\n參數內容 : 上述XML格式之字串\n}}}
\n@@color(orange):''API - XML''@@\n{{{http://api.ruten.com.tw/index.php/credit_xml/inviteCredit/991234567890/}}}\n\n@@color(orange):''引數''@@\ngroup name 群組名稱.(必需的)\nex: credit_xml\n \nmethod name 方法名稱.(必需的)\nex: inviteCredit\n\nTOKEN 露天專用金鑰.(必需的)\nex: 991234567890\n\n@@color(orange):''認證''@@\n此方法需要具有「寫入」權限的認證。\n注意︰此方法需要 HTTP POST 要求。\n\n@@color(orange):''請求欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| fbcontent | 邀請評價內容 | Varchar(500) | | |\n\n@@color(orange):''請求範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <fbcontent><![CDATA[請給我評價,謝謝]]></fbcontent>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''限制''@@\n目前邀評價筆數一次最多 @@color(blue):''20''@@ 筆。\n\n@@color(orange):''回覆欄位''@@\n|bgcolor(#00ffff): ''欄位'' |bgcolor(#00ffff): ''中文名稱'' |bgcolor(#00ffff): ''Type'' |bgcolor(#00ffff): ''Nullable'' |bgcolor(#00ffff): ''說明'' |\n| orderno | 露天訂單編號 | Char(14) | | |\n| error | 錯誤代碼 | Int(3) | | |\n\n@@color(orange):''回覆範例''@@\n{{{\nXML EXAMPLE:\n<?xml version="1.0" encoding="UTF-8"?>\n<RUTEN>\n <items>\n <orderno>99080210931185</orderno>\n <error>0</error>\n </items>\n</RUTEN>\n}}}\n\n@@color(orange):''錯誤代碼''@@\n[[錯誤代碼列表]]\n\n
\n@@color(orange):''錯誤代碼''@@\n''0: No Error''\n沒有錯誤訊息。\n\n''1: DB Busy''\n資料庫忙線中。\n\n''96: Invalid Signature''\n無法取得此流水號。\n\n''97: Invalid IP''\n不允許的來源IP。\n\n''98: Login Fail / Invalid Auth Token''\n登入失敗,token 錯誤。\n\n''99: User Not Logged In / Insufficient Permissions''\n使用者沒有權限。\n\n''100: Invalid API Key''\n此 API key 不存在。\n\n''105: Service Currently Unavailable''\n目前 API 不提供服務。\n\n''111: Group Not Found''\n群組名稱不存在。\n\n''112: Method Not Found''\n方法名稱不存在。\n\n''114: Invalid php Serialize Envelope''\n無法 unserialize 。\n\n''201: Invalid Numeric''\n無法取得數字型態。\n\n''211: Invalid NULL''\n不可為NULL。\n\n''221: Invalid Data Scope''\n無法取得資料範圍。\n\n''251: Goods Already Closed''\n商品已下架。\n\n''252: Key Already In Set''\n對應鍵值已處理。\n\n''253: Goods Not Found''\n找不到商品。\n\n''254: Goods In Queue Already Done''\n商品已存在暫存區。\n\n''291: Input Data Error''\n輸入資料格式錯誤。\n\n''292: Array Keys Error''\n無法取得陣列資料。\n\n''293: Can't modify price or sale mode after been bidden''\n商品有下標紀錄後不可更改價錢及販售模式。\n\n''301: Goods Is Processing''\n商品處理中。\n\n''401: Product_NO In Set''\n商品編號已處理。\n\n''402: Product_NO Not Found''\n找不到商品編號。\n\n''500: Done! But Process In Queue''\n資料進入暫存區。\n\n''999: Data Error''\n資料錯誤。\n
露天市集國際資訊股份有限公司,簡稱露天市集,為PChome與eBay共同合資成立的拍賣網路服務公司,公司目前位於台北。
更新中...\n/%comment_text[[商品平台類別查詢]]%/
[[概要]]\n[[編碼]]\n[[使用者認證]]\n\n