نمونه ای از ایجاد یک وب سرویس جهت درج دستورپرداخت های اتوماتیک به سیستم مالی رو که قبلا نوشتم براتون میگذارم:
ارسال دستورپرداخت به سیستم خزانه داری
نام سرویس :
PayOrder
مسیر سرویس :
http://192.168.7.207:8011/PayOrderWebService.asmx
نام متدها :
2. ShowCustomer
3. ShowPayOrderType
4. InsertPayOrder
1. متد ShowDepartment
1. جدول ورودی های وب متد ShowDepartment
ردیف |
توضیحات |
نوع |
نام Property |
نام کلاس |
1 |
کد کاربر سیستم pap |
int |
userId
|
ClsPayOrder
|
2 |
شناسه عبور در سیستم pap |
string |
pass
|
|
3 |
کد شرکت دریافت کننده دستور پرداخت |
short
|
CompanyID
|
2. جدول ورودی های وب متد ShowCustomer
ردیف |
توضیحات |
نوع |
نام Property |
نام کلاس |
1 |
کد کاربر سیستم pap |
int |
userId
|
ClsPayOrder
|
2 |
شناسه عبور در سیستم pap |
string |
pass
|
|
3 |
کد شرکت دریافت کننده دستور پرداخت |
short
|
CompanyID
|
3. جدول ورودی های وب متد ShowPayOrderType
ردیف |
توضیحات |
نوع |
نام Property |
نام کلاس |
1 |
کد کاربر سیستم pap |
int |
userId
|
ClsPayOrder
|
2 |
شناسه عبور در سیستم pap |
string |
pass
|
|
3 |
کد شرکت دریافت کننده دستور پرداخت |
short
|
CompanyID
|
کد PayOrderWebService.wsdl مربوط به متد ShowDepartment
<s:element name="ShowDepartment">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="userId" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="pass" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="companyId" type="s:short" />
</s:sequence>
</s:complexType>
</s:element>
با اجرای متد ShowDepartment از وب سرویس ، اطلاعات مربوط به واحدهای سازمانی که شامل کد و شرح می باشد ، نمایش داده می شود. کد اطلاعات نمایش داده شده ، به عنوان پارامتر ورودی در صدور دستور پرداخت استفاده می شود.
در صورتی که یکی از پارامترهای ورودی (کد شرکت ، کد کاربری ، کلمه عبور) خالی باشد ، نمایش اطلاعات با اشکال مواجه خواهد شد.
نمونه کد فراخوانی ShowDepartment
در ابتدا وب سرویس مورد نظر را از آدرس ارائه شده به Web Reference های پروژه اضافه نمایید . برای نمونه آن را با نام PayOrderWebService به Web Reference اضافه می نماییم.
WebReference.PayOrderWebService obj = new WebReference.PayOrderWebService();
public int userId;
public string pass;
public Int16 companyId;
DataTable dt = obj.ShowDepartment(userId, pass, companyId);
dgShowData.DataSource = dt;
در ادامه بایستی گفت روال مربوط به دو متد ShowCustomer و ShowPayOrderType ، نیز دقیقا مانند متد شرح داده شده (ShowDepartment ) می باشد.
4. متد InsertPayOrder
در این متد ، با پر کردن پارامترهای مورد نظر ذکر شده در جدول زیر ، دستور پرداخت در سیستم خزانه داری صادر می گردد.
جدول ورودی های وب متد InsertPayOrder
ردیف |
توضیحات |
نوع |
نام Property |
نام کلاس |
1 |
کد کاربر سیستم pap |
int |
userId
|
ClsPayOrder
|
2 |
شناسه عبور در سیستم pap |
string |
pass
|
|
3 |
کد شرکت دریافت کننده دستور پرداخت |
short
|
CompanyID
|
|
4 |
تاریخ دستور پرداخت |
string |
OrderDate |
|
5 |
نوع دستور پرداخت |
int |
TypeID |
|
6 |
عنوان |
string |
Subject |
|
7 |
مبلغ |
int |
Amount |
|
8 |
کد طرف حساب |
decimal |
CustomerID |
|
9 |
تاریخ نیاز |
string |
RequireDate |
|
10 |
درخواست کننده |
int |
RequesterID |
|
11 |
کد واحد سازمانی |
int |
DepartmentID |
|
12 |
شرح |
string |
Description |
|
13 |
کد زیر سیستم |
int |
SubSystemID |
جدول مقدار های ثابت به ازای هر شرکت
شرح مربوط به پارامتر ورودی |
نام فیلد |
کد کاربر سیستم PAP این کد باید به درج دستور پرداخت در سیستم خزانه داری، دسترسی داشته باشد. |
UserId |
پسورد کاربری پپنت |
pass |
کد شرکتی که دستور پرداخت در سیستم آن شرکت ثبت می گردد .مثلا گلرنگ سیستم کد 445 و برای شرکت گل پخش اول کد 290 و .. میباشد.*
|
CompanyId |
تاریخ دستور پرداخت می باشد که بایستی به فرمت "07/07/1395" باشد. |
OrderDate |
نوع دستور پرداخت، که ستون کدهای نمایش داده شده مربوط به خروجی متد ShowPayOrderType می باشد. |
TypeID |
کد طرف حساب، که ستون کدهای نمایش داده شده مربوط به خروجی متد ShowCustomer می باشد. |
CustomerID |
تاریخ نیاز می باشد که بایستی به فرمت "07/07/1395" باشد. |
RequireDate |
درخواست کننده می باشد که بایستی کد کاربری باشد که در سیستم PAP موجود می باشد. |
RequesterID |
کد واحد سازمانی ، که ستون کدهای نمایش داده شده مربوط به خروجی متد ShowDepartment می باشد. |
DepartmentID |
کد سیستم صادر کننده دستور پرداخت ** |
SubSystemID |
*: جهت دریافت کد شرکتها ، لطفا با واحد IT هماهنگ بفرمایید.
**:جهت دریافت و ثبت کد سیستم صادر کننده دستور پرداخت ، لطفا با واحد IT هماهنگ بفرمایید.
کد PayOrderWebService.wsdl مربوط به متد InsertPayOrder
<s:element name="InsertPayOrder">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="UserID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="pass" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrderDate" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="TypeID" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="CompanyID" type="s:short" />
<s:element minOccurs="0" maxOccurs="1" name="Subject" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="Amount" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="CustomerID" type="s:decimal" />
<s:element minOccurs="0" maxOccurs="1" name="RequireDate" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="RequesterID" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="DepartmentID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="SubSystemID" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
با اجرای متد InsertPayOrder از وب سرویس ، یک دستور پرداخت با مشخصات درج شده در سیستم خزانه داری ثبت می گردد .
در صورتی که درج با موفقیت صورت گیرد ، شماره دستور پرداخت ثبت شده به همراه کد "1" نمایش داده می شود.
در صورتی که یکی از پارامترهای ورودی خالی باشد و یا با فرمت صحیح پر نگردد، نمایش اطلاعات با اشکال مواجه خواهد شد. و پیغام با کد "0" نمایش داده می شود.
نمونه کد فراخوانی InsertPayOrder
WebReference.PayOrderWebService obj = new WebReference.PayOrderWebService();
DataTable strRet = obj.InsertPayOrder( userId
, pass
, txtOrderDate.Text
, int.Parse(txtTypeID.Text)
, Int16.Parse(txtCompanyID.Text)
, txtSubject.Text
, int.Parse(txtAmount.Text)
, decimal.Parse(txtCustomerID.Text)
, txtRequireDate.Text,userId
, int.Parse(txtDepartmentID.Text)
, txtDescription.Text
, int.Parse(txtSubSystemId.Text));
if (strRet != null)
dgShowData.DataSource = strRet;