實戰專案 通過噹噹API將訂單抓取到SAP 一

2022-04-29 22:42:14 字數 4100 閱讀 5517

公司在噹噹上經營了一家店鋪,通過噹噹提供的api,用c#寫**,通過nco3.0呼叫sap rfc將訂單資訊抓取到sap。

如果你是新手,在當當網上有店鋪,且你公司使用sap系統,恭喜你,下面這些**直接複製過去,改下商家編碼和金鑰就可以直接抓單了。如果你只是當當網有店鋪,沒有sap系統,下面這些**也同樣對你有用,你或許要插入自己的資料庫,這更簡單了。

需要準備的環境:

1、  microsoft visual studio 2010 開發環境。

)(vs2010環境下必須這個版本:sapnco30dotnet40p_8-20007347.zip) 

4、  在sap裡建2張表,用sap專業術語,建乙個抬頭表,建乙個行專案表

5、  噹噹api手冊(在商家後台,公告欄處可以看見)

step1

登入當當網商家後台,設定商家介面密碼(這些內容噹噹api裡有)

注意:1、 商家修改介面密碼(key)時,需要提供原key值;如果商家是第一次使用該功能,那麼可以不輸入原key值;

2、 新key值區分大小寫,設定時請特別注意;

3、 新key值長度為8-20位,不能全部為數字,不能全部為小寫字母,不能全部為大寫字母;

step2

開啟vs2010新建乙個windows窗體應用程式,命名:dangdang

在解決方案資源管理器,引用裡引用nco3.0的sapnco.dll和sapnco_utils 及 log4net

右擊專案名稱dangdang,點選「屬性」,開啟屬性面板:將目標框架裡預設的.net framework 4 client profile 改為:.net framework 4。(很重要)

經過step2的設定,vs環境這邊算是搭建ok了。第3步,我們去sap建表去(建表詳細略)

因為我們這裡這是抓取噹噹訂單的資訊。所以建2張表,表的字段和含義請熟讀噹噹api手冊。

上面這張圖不是完全的,因為截圖截不了那麼多,下面還有很多字段,這些欄位都是根據api手冊來設定的,當然你可以靈活的從這些欄位中取認為你需要的資訊。

這兩張表,我都選了」訂單編號」做為主鍵,方便以後關聯查詢。

step4

寫rfc(寫rfc可以參照我之前寫的部落格)

source code裡的**很簡單。

1  if it_zdditem

is not initial.

2 modify zdditem from table it_zdditem

.3 if sy-subrc = 0.

4 r_subrc ='資料已成功寫入zdditem表裡'.

5endif.

6endif.

78 if it_zdditemmas

is not initial.

9 modify zdditemmas from table it_zdditemmas

.10 if sy-subrc = 0.

11 r_subrc ='資料已成功寫入zdditemmas表裡'.

12endif.

13 endif.

step5

到第5部了,開始在vs裡寫**了。首先要解決的是」驗證碼演算法」,api手冊了給了解釋:

validatestring引數是每個api請求中必須傳送的引數,由請求中的其它引數以及後台設定的key值兩部分,採用md5加密生成,具體演算法如下:

第一步,把請求中的引數(xml檔案以及validatestring本身除外),按照引數名稱進行正向排序

第二步,把各個引數的值按照gbk編碼後,按照排序順序串聯起來(不能有空格)

第三步,把後台設定的key值按照gbk編碼後,串接到「第二步」得到的字串尾部(不能有空格)

第四步,採用md5演算法對「第三步」得到的字串進行加密,生成validatestring的值

好了,我直接上c#**,將這4步翻譯成**:

1

public

static

string md5(string str, string

encode)210

return

sbuilder.tostring();11}

12public

static

string signtoprequest(idictionary parameters, string

key)

1322

}23 str += system.text.encoding.getencoding("

gbk"

).getstring(system.text.encoding.default.getbytes(key));

24return md5(str, "

utf-8");

25}26private

static idictionary spliturlquery(string

query)

27);

31if (pairs != null && pairs.length > 0)32

, 2);

36if (oneparam != null && oneparam.length == 2)37

40}41}

4243

return

result;44}

45 }

step 6

這個驗證碼有了,就好像有了進當當系統的通行證了,現在我們拿著通行證到當當里把訂單資訊取出來,**如下:

1

public

void

getorder()

215 }

step7

,把這些**放進去即可)

1

public

class

xmltodata217

catch

(exception e)

1821

finally

2229}30

}31else

3235

}36 }

step8

如果你按照上面講的,操作無誤的話,設斷點,點除錯,在ds裡就能看到20條訂單列表資訊了。噹噹不會那麼容易讓你一下取很多資料的,預設的就是20條,且1分鐘只能請求30次。拿到這個簡單的訂單列表資訊後,你還需要通過訂單編號和通行證,再去取一次該訂單的詳細資訊。這第7步,我來說怎麼把vs和sap打通。

首先你得這樣:using sap.middleware.connector;

然後這樣,直接上**:

1

#region 通過nco3.0將資料寫入sap(zddheader)

2public

void

sap_dangdang_rfc(dataset dsall)

332 myfun.invoke(saprfcdestination); //

執行函式33}

34catch

(exception e)

3538

finally

3943}44

45#endregion

step9

如果上面都無誤的話,點執行。然後到sap的表裡就可以看到20條資料了。

原文:

實戰專案 通過噹噹API將訂單抓取到SAP 二

接著我們配置相關的配置檔案 winform對應的是 exe.config,webform對應的是 config 本例項中是控制台應用程式,配置如上篇部落格的圖。1 using log4net 23 注意下面的語句一定要加上,指定log4net使用.config檔案來讀取配置資訊4 assembly ...

通過Xcode將專案同步到GitHub上

主要參考這篇文章 1.在xcode上新建乙個repository 2.獲取新建倉庫的ssh url 3.開啟xcode,選擇第二項connect to a repository 4.把repository轉殖到本地目錄下,比如桌面的ttimagepicker 5.新建乙個xcode工程,儲存到剛才新...

通過XAMPP將專案部署到Tomcat上

2 可以看到xampp的控制面板如下所示 3 在xampp控制面板中啟動apache伺服器,並在瀏覽器位址列輸入http localhost回車,當出現如下頁面時,表示xampp安裝並且配置成功。有需要的話,可以通過修改配置檔案為了避免埠衝突,配置檔案位於f xampp apache conf ht...