UserRegistrationAdd 指令
這個指令會建立使用者的登錄記錄。
請搭配 SSL(安全 Sockets 層次)使用此指令,以確保客戶的登入密碼與個人資訊皆經過加密。其做法是鍵入指令與 HTTPS 安全通信協定。
這個指令所收集的登錄資料可分屬下列種類:
- 授權資料
- 大眾消費型商務 (B2C) 設定檔
- 企業消費型商務 (B2B) 設定檔
- 個人背景資訊
B2B 是 B2C 的延伸。本身是 B2C 客戶的登錄者通常會有 B2C 設定檔。本身是 B2B 客戶的登錄者通常會有 B2B 和 B2C 設定檔。
參數值
- http://host_name/path/
-
(必要)WebSphere Commerce Server 和架構路徑的完整名稱。
- langId
- 設定或重設在階段作業期間的屬意語言;
有關商店的支援語言可在 STORELANG 表格中找到。
- forUser
- 將代替其執行指令之使用者的登入 ID;只有具備處理訂單權限的人才可指定這個參數。
- forUserId
- 與 forUser 相同,但卻是 USERS 表格中之內部使用者 ID 所指的使用者。
- URL
- (必要)當指令順利完成時所要呼叫的 URL。
- storeId
- 這個指令之相關商店的參考號碼。
- logonId
- (必要)登錄者的登錄 ID。
- logonPassword
- (必要)登錄者的密碼。UserRegistrationAdd 指令會在這個密碼儲存到資料庫之前,予以加密。
- logonPasswordVerify
- (必要)第二次輸入的登錄者密碼。
- parentMember
- 如果 parentMember 是 null,則將其設為「預設組織」。
如果 parentMember 不是
null,它可以採用兩種不
同類型的值:
Encrypted
orgEntityId(使用
"nc_crypt -e
<orgentityId>")
DN of orgEntity
(例如,"o=Default
Organization, o=Root
Organization")
- userStatus
- 有沒有啟用登錄者的帳號:
1=啟用(預設值)
0=停用
- passwordExpired
- 登錄者的密碼有沒有過期:
0=沒有過期(這是預設值)
1=已過期
- challengeQuestion
- 以文字確認登錄者身份的檢核問題。
- challengeAnswer
- 對檢核問題的回答。
- registerType
- 使用者的類型可為:
G=訪客使用者;也就是未提供任何設定檔資訊的使用者。
R=登錄使用者;也就是提供了設定檔資訊的使用者。
A=管理者;本身是管理者,也是登錄使用者。
S=網站管理者,本身是已登錄的使用者也是網站管理者。
- profileType
- 指示登錄類型:
<Null>=沒有設定檔資料,只有鑑別資料;只有 USERREG 表格的資料。
C=大眾消費型商務登錄設定檔資料;鑑別資料及 USERPROF 表格的資料(這是預設值)。
B=企業消費型商務登錄設定檔資料;鑑別資料及 BUSPROF 表格的資料。
- preferredCurrency
- 登錄者在交易時偏好使用的貨幣;它是參照 SETCURR 表格之 SETCURR 直欄的外來鍵。
- preferredLanguage
- 登錄者偏好的語言;它是參照 LANGUAGE 表格中之 LANGUAGE_ID 直欄的外來鍵。
- userField1 到 userField3
- 可自訂的欄位。
- displayName
- 在摘要清單中顯示登錄者名稱時所用的名稱。
- photo
- 登錄者照片的 URL 或路徑。
- preferredCommunication
- 登錄者偏好的電話(儲存在 ADDRESS 表格中),比方說:
P1=電話 1
P2=電話 2
- preferredDelivery
- 登錄者偏好的遞送模式。
- preferredMeasure
- 登錄者偏好的度量單位。
- 說明
- 登錄者的說明。
- userProfileField1 和 userProfileField2
- 可自訂的欄位。
- organizationId
- 登錄者公司的識別碼;它是參照 ORGENTITY 表格的外來鍵。
- organizationUnitId
- 登錄者組織單位的識別碼;它是參照 ORGENTITY 表格的外來鍵。
- employeeId
- 內含雇主的登錄者員工 ID。
- alternateId
- 登錄者的商業組織或組織單位指派給這個特定登錄者的特殊 ID。
- employeeType
- 登錄者的員工狀態(如正式員工、永久員工、約聘人員,或兼職人員)。
- departmentNumber
- 登錄者的部門識別碼。
- manager
- 登錄者的經理姓名。
- secretary
- 登錄者的秘書姓名。
- gender
- 登錄者的性別。
- age
- 登錄者的年齡。
- income
- 登錄者的年收入。
- incomeCurrency
- 登錄者的收入貨幣。
- maritalStatus
- 登錄者的婚姻狀態。
- children
- 登錄者所擁有的小孩人數。
- household
- 登錄者的家庭成員人數;預設值為 1。
- companyName
- 登錄者所代表之組織的公司名稱,在填入個人背景資訊時取得。
- hobbies
- 登錄者的嗜好。
- orderBefore
- 登錄者以往是否曾下過單。這個值是登錄者所提供的。
- timeZone
- 登錄者營業所在時區(以 GMT +/- 小時顯示)。
- demographicField1 至 demographicField4
- 個人背景資訊的可自訂欄位;這些是單字元欄位。
- demographicField5
- 個人背景資訊的可自訂欄位;這是 254 字元的欄位。
- demographicField6
- 個人背景資訊的可自訂欄位;這是整數欄位。
- demographicField7
- 個人背景資訊的可自訂欄位;這是類型為 varchar、長度為 64 的欄位。
- personTitle
- 登錄者的職稱(如博士、先生或小姐)。
- lastName
- (如果鑑別模式是 LDAP,就是必要的)登錄者的姓氏。
如果鑑別模式是 LDAP,這就是必要的參數。
- firstName
- 登錄者的名字。
- middleName
- 登錄者的別名或姓名的起始字母。
- address1
- 登錄者地址的第一行。
- address2
- 登錄者地址的第二行。
- address3
- 登錄者地址的第三行。
- city
- 登錄者所在的城市名稱。
- state
- 登錄者所在的州/省(縣/市)或同等名稱
- zipCode
- 登錄者地址的郵遞區號。
- country
- 登錄者所在的國家(或地區)名稱。
- phone1
- 登錄者的主要電話號碼。
- phone2
- 登錄者的次要電話號碼。
- phone1Type
-
登錄者主要電話號碼所用的電話類型,比方說,供聽障人士使用的 TTY、用於脈衝碼調變的 PCM,或行動電話的 CEL。這個欄位可有 3 個字元。
- phone2Type
-
登錄者次要電話號碼所用的電話類型,比方說,供聽障人士使用的 TTY、用於脈衝碼調變的 PCM,或行動電話的 CEL。這個欄位可有 3 個字元。
- publishPhone1
- 1=表示列出登錄者主要電話號碼的指示碼
- 0=表示不列出登錄者主要電話號碼的指示碼
這些 publishPhone 欄位沒有預設值。如果欄位維持沒有使用,資料庫中會保留空值。
- publishPhone2
- 1=表示列出登錄者次要電話號碼的指示碼
- 0=表示不列出登錄者次要電話號碼的指示碼
- bestCallingTime
- D - 表示白天是登錄者最佳電話聯絡時間的指示碼。
- E - 表示晚上是登錄者最佳電話聯絡時間的指示碼。
- fax1
- 登錄者的主要傳真號碼。
- fax2
- 登錄者的次要傳真號碼。
- email1
- 登錄者的主要電子郵件位址或網址。
- email2
- 登錄者的次要電子郵件位址或網址。
- businessTitle
- 登錄者的公司職稱。
- organizationName
- 登錄者所代表的組織名稱。
- organizationUnitName
- 登錄者所代表的組織內的單位名稱。
- officeAddress
- 內部地址(如收發中心)。
- billingCode
- 登錄者組織的代碼,用以識別出貨或帳單地址以及成本中心。
- billingCodeType
- 指定帳單代碼所用代碼結構方法的代碼。預設值為 D,由買方指派。值
02 代表由 Ariba 指定。
- packageSuppression
- 1=此指示碼表示在出貨時要在包裝中夾帶廣告傳單
- 0=此指示碼表示在出貨時不要在包裝中夾帶廣告傳單
這個欄位沒有預設值。如果欄位維持沒有使用,資料庫中會保留空值。
- addressfield1 到 addressfield3
- 可自訂的欄位。
- taxPayerId
- 用來識別課稅使用者的字串,在搭配稅金軟體時尤其有用。
- shippingGeoCode
- 視地理區域而定的出貨代碼,對稅金軟體特別有用。
- taxGeoCode
- 視地理區域而定的稅金代碼,對於稅金軟體特別有用。
範例 1
下列範例會建立客戶的登錄記錄,其中包括預設作業指令所需要的所有參數,之後,再呼叫 InterestItemDisplay 指令:
https://myhostname/webapp/wcs/stores/servlet/UserRegistrationAdd?
&URL=/webapp/wcs/stores/servlet/InterestItemDisplay&logonId=jennyk
&logonPassword=butter&logonPasswordVerify=butter
&lastName=Kohl&Address1=255+Consumers+Road&City=Toronto
&State=Ontario&Country=Canada
範例 2
下列範例會將「消費者-類型」客戶的完整資料集移入記錄中:
https://myhostname/webapp/wcs/stores/servlet/UserRegistrationAdd?storeId=31
&langId=-1&URL=basemall.jsp&logonId=msur1&logonPassword=msur1
&logonPasswordVerify=msur1&userStatus=1&passwordExpired=0
&challengeQuestion=question&challengeAnswer=answer
&profileType=C&preferredCurrency=CAD&preferredLanguage=1
&userField1=field1&userField2=field2&userField3=field3
&displayName=displayname&photo=photo&preferredMeasure=metric
&preferredCommunication=P1&preferredDelivery=preferreddelivery
&description=description&userProfileField1=field1
&userProfileField2=field2&taxPayerId=taxpayerid&gender=M&age=3
&income=3&incomeCurrency=1&maritalStatus=S&children=3
&household=3&companyName=IBM&hobbies=hobbies&orderBefore=Y
&timeZone=EST&demographicField1=1&demographicField2=2
&demographicField3=3&demographicField4=4&demographicField5=5
&demographicField6=6&demographicField7=7&personTitle=Dr
&lastName=last&firstName=first&middleName=middle&address1=address1
&address2=address2&address3=address3&city=Toronto&state=Ontario
&country=Canada&zipCode=A1A1A1&phone1=111-111-1111
&phone2=222-222-2222&phone1Type=PHN&phone2Type=TTY&publishPhone1=1
&publishPhone2=0&bestCallingTime=E&fax1=333-333-3333
&fax2=444-444-4444&email1=msur1@email1.com&email2=msur1@email2.com
&businessTitle=bustitle&organizationName=organization
&organizationUnitName=oraganizationunit&officeAddress=officeaddress
&billingCode=BillingCode&billingCodeType=BT&packageSuppression=1
&addressField1=field1&addressField2=field2&addressField3=field3
&shippingGeoCode=shippinggeocode&taxGeoCode=taxgeocode
規則
- 更新 USERS 表格,以及將登錄類型 'G'(訪客)改成 'R'(已登錄)。
- 在下列各表格中建立一項記錄:USERREG、USERPROF、USERDEMO 及 ADDRESS。
如果這位使用者是商業使用者 (profileType = 'B'),這時也會在 BUSPROF 表格中建立一項記錄。
如果這位使用者沒有通訊錄,這時也會在 ADDRBOOK 表格中建立一項記錄。
- 建立一個稱為登錄地址的地址,其暱稱和指定的 logonId 相同。這個地址的 selfAddress 欄位將設為 '1'。
- 如果沒有指定 profileType 參數的話,在預設的情況下,會設定 'C'(客戶)。
- 如果沒有指定 passwordExpired 參數的話,在預設的情況下,會設為 0(不會過期)。
- 如果沒有指定 userStatus 參數的話,在預設的情況下,會設為 1(啟用)。
- 如果沒有設定 preferredLanguage 的話,會從指令環境定義中取得它。
- 檢查必要的登錄資訊參數。
- 呼叫 AuditUserRegistrationCmd 作業來檢查其它參數。
如果商店程式開發人員想自訂檢查作業,就必須在 AuditAddressCmd 作業指令中新增新程式碼。
- 如果 preferredCurrency 參數不是空值,請呼叫 SetCurrencyPrefCmd 作業。
- 如果鑑別模式是 LDAP,就在 LDAP 伺服器中建立一個使用者。建立數位簽章的 Cookie 並傳回給瀏覽器以用來識別使用者階段作業,藉此讓客戶登入。
這時購物者是處於鑑別過的階段作業。cookie 包含下列資訊:
- SESSION_ID
- 指出購物者有沒有登錄的旗號 m
- 購物者登錄的日期與時間(時間戳記)m
- 一個數位化簽章
- 呼叫 UserRegistrationRoleAssignCmd 作業指令,在自行登錄期間指定職務。
目前這個作業指令沒有作用,因此客戶如果希望能在自行登錄期間指定職務,
客戶需要改寫這個指令。
- 若登入失敗,則會呼叫 UserRegistrationErrorView。
- 當順利完成時,則會呼叫指定的重新導向 URL。
異常狀況
- URL 參數不得為空值,且其長度必須大於 0。
- logonId 參數不得為空值,且其長度必須大於 0。
- logonId 參數不能已存在於 WebSphere Commerce 資料庫中。如果鑑別模式是 LDAP,logonId 也不應存在於 LDAP 中。
- logonPassword 參數不能是空值,它的長度必須大於 0,小於或等於 70。
- logonPassword 參數等於 logonPasswordVerify。
- profileType 參數必須是空值,或必須等於 'B' 或 'C'。
- userStatus 和 passwordExpired 參數必須為空值,或者必須等於 0 或 1。
- preferredCurrency 參數必須是空值,或必須設為 SETCCURR 表格的外來鍵。
- preferredLanguage 參數必須是空值,或必須設為 LANGUAGE 表格的外來鍵。
- age、income、children、household、demographicField6、
publishPhone1、publishPhone2 與 packageSupression 參數必須是空值或者整數。
- 如果 profileType 參數是 'B',則必須符合下列狀況:
- 如果 organizationId 參數不是空值,它必須是一個外來鍵,指向 ORGENTITY 表格中類型為 O 的列。
- 如果 organizationUnitId 參數不是空值,則 organizationUnitId 必須是一個外來鍵,指向 ORGENTITY 表格中類型為 OU 的列。