전자 상거래 웹 애플리케이션을 구축하고 있으며 고객이 쉽게 주문할 수 있도록 여러 지불 방법 (Visa, MasterCard 등)을 지원해야합니다. 이것을 직접 구현하기보다는 신뢰할 수있는 타사 제공 업체에 의존하여 이러한 서비스를 제공하기로 결정합니다.
결제 서비스를 제공하는 벨기에 출신의 잘 알려진 회사는 Ogone입니다. 그들은 40 개가 넘는 국제 및 현지 지불 방법을 제공합니다. 고객, 온라인 상점 및 지불 방법 제공 업체 (예 : 비자) 간의 지불 거래를 처리합니다.
물론 Ogone이 처리하는 각 거래에 대해 작은 금액을 지불해야하지만, 이는 사기 방지, 보안, 지불 관리 도구 등을 구매합니다. 이 모든 것을 직접 구현하는 데 드는 비용은 훨씬 큽니다.
따라서 Ogone 계정에 가입하고 시스템을 웹 응용 프로그램에 통합하기로 결정합니다.
우리는 이것을 어떻게 알 수 있습니까? 알아 보자 ...
먼저 Ogone 웹 사이트로 이동하여 무료 테스트 계정을 방문하십시오. 사이트의 오른쪽 상단 코너에서 "무료 테스트 계정 만들기"라는 버튼을 찾을 수 있습니다.
그림 1- 테스트 계정

클릭하고 결과 양식을 작성하십시오. 이 양식에 입력 한 데이터가 올바른지 확인하십시오. 새로운 시험 계좌에 대한 요청을 제출 한 후 Ogone 직원은 귀하의 세부 정보를 확인하고 결과에 따라 요청을 승인하거나 거부합니다. 이 과정에는 몇 시간이 걸릴 수 있습니다. 꽤 짜증나지만 주변에는 방법이 없습니다.
계정이 승인되면 비밀번호가 포함 된 이메일을 받게됩니다. 이제 Ogone 상인 관리에 로그온 할 준비가되었습니다.
테스트 계정을 사용하기 전에 다음 설정을 구성해야합니다.
구독 옵션을 구성하려면 화면 왼쪽 메뉴에 표시된 옵션 계정을 클릭하십시오.
그림 2- 가맹점 관리 메뉴

계정 페이지에는 몇 가지 옵션이 표시되며 "구독"옵션을 선택하십시오. 이제 구독 유형을 선택해야합니다. "Adventure"를 선택하고 "옵션 확인 및 이동"이라는 버튼을 클릭하십시오.
여기에서 사기 탐지, 이미지 호스팅, 송장 룩 등과 같은 구독에 여러 가지 옵션을 추가 할 수 있습니다. 이 데모의 경우 추가 옵션이 필요하지 않으므로 확인을 클릭하여 설정을 저장하십시오.
구독 유형을 구성한 후에는 고객에게 제공하려는 결제 방법을 추가하여 진행할 수 있습니다. 가맹점 관리 메뉴에서 옵션 결제 방법을 클릭하십시오 (그림 2). "선택한 지불 방법"목록에 비자를 추가 한 후에는이 결제 방법을 편집하고 활성화로 설정해야합니다.
그림 3- 비자 지불 방법 활성화

그림 3에 표시된 편집 옵션을 클릭하고 결제 방법을 활성화 (활성화 : 예)로 표시하고 제출을 클릭하십시오. 카드 번호 4111 1111111111111을 사용하여 비자 지불을 테스트 할 수 있습니다. 만료 날짜와 3 자리 보안 코드를 위해 무엇이든 입력하십시오.
마지막으로 온라인 결제 방법을 결정하는 일부 기술 설정을 구성해야합니다. 메뉴에 표시된 옵션 기술 정보를 클릭하여 진행하십시오 (그림 2).
결과 페이지는 다음 탭으로 나뉩니다.
이 링크를 클릭하면 스크린 샷을 통해 Ogone 테스트 계정을 구성한 방법을 확인하십시오. SHA-1-in 및 SHA-1-Out Signature를 "Microsoftaspnet4"로 설정했습니다. 나중에 이것으로 돌아갈 것입니다.
이제 Ogone 테스트 계정을 만들고 구성했습니다. 첫 온라인 결제를 할 준비가되었습니다.
나는 자신의 ASP.NET 활성화 웹 사이트 내에서 Ogone 결제를 통합하는 방법을 보여주는 간단한 ASP.NET 웹 응용 프로그램 프로젝트를 만들었습니다.
그림 4- 솔루션

이 웹 응용 프로그램에는 소수의 페이지 만 포함됩니다.
비고 : 보시다시피 프로젝트에는 몇 개의 코드 파일도 포함되어 있습니다. 다음 섹션에서 논의하겠습니다. 이 파일에는 Ogone으로 결제 프로세스를 처리하는 데 필요한 코드가 포함되어 있습니다. 디자인을 자유롭게 개선하십시오. 방금 일을 작동시키기 위해 최소한의 코드를 포함 시켰습니다.
아래에 표시된 시작 지불 버튼을 클릭하지 마십시오. 스크린 샷 일뿐입니다. 이것이 Default.aspx 페이지의 모습입니다.
그림 5- 기본 .aspx 페이지

지불중인 명령을 고유하게 식별하기 위해 참조 (또는 주문 ID)가 생성됩니다. Ogone은 이러한 참조를 추적합니다. 동일한 참조를 두 번 처리 할 수 없습니다. 그래서 저는이 예제에 무작위로 생성 된 안내서를 사용하기로 결정했습니다. Ogone 은이 한계보다 더 많은 것을 허용하지 않기 때문에 Guid를 30 자로 단축해야했습니다.
분명히,이 참조 외에도 지불해야 할 금액도 지정해야합니다. 예제 코드는 문제의 고객의 이메일 주소를 따라 보냅니다. 이런 식으로 Ogone은 고객에게 자신의 지불이 성공적으로 처리되었음을 이메일로 보낼 수 있습니다.
버튼의 클릭 이벤트 뒤에 숨겨진 코드를 보자.
리스팅 1- 요청 Ogone 지불
// Persist order to database
// ...
OgoneRequest ogoneRequest = new OgoneRequest ( ) ;
ogoneRequest . RequestPayment ( this . _reference , amount , customerEmail ) ;
// Clear shopping cart
// ...OgoneRequest 클래스의 새 인스턴스를 만들고 요청 납부 메소드를 호출하여 결제를 시작할 수 있습니다. 이 방법에는 3 개의 매개 변수, 즉 주문 참조, 지불해야 할 금액 및 고객의 이메일 주소가 필요합니다.
Listing 2- OgoneRequest 생성자
public OgoneRequest ( )
{
OgoneUrl = ConfigurationManager . AppSettings [ "Ogone_Url" ] ;
Psid = ConfigurationManager . AppSettings [ "Ogone_PSID" ] ;
ShaKey = ConfigurationManager . AppSettings [ "Ogone_SHA1_IN" ] ;
Currency = ConfigurationManager . AppSettings [ "Ogone_Currency" ] ;
Language = ConfigurationManager . AppSettings [ "Ogone_Language" ] ;
AcceptUrl = ConfigurationManager . AppSettings [ "Ogone_AcceptUrl" ] ;
ExceptionUrl = ConfigurationManager . AppSettings [ "Ogone_ExceptionUrl" ] ;
CancellationUrl = ConfigurationManager . AppSettings [ "Ogone_CancellationUrl" ] ;
}OgoneRequest 클래스의 생성자는 응용 프로그램의 구성 파일 (web.config)에서 일부 값을 읽음으로써 일부 속성을 초기화합니다. 지불 프로세스, Ogone PSID (Username), 판매자 관리에 지정된 SHA1-in 키, 리디렉션 URL 등을 시작하려면 URL을 지정해야합니다.
Listing 3- requestPayment (...) 메소드
public void RequestPayment ( string reference , double amount , string email )
{
// Multiply by one hundred and round to zero decimals
amount = Math . Round ( amount * 100 , 0 ) ;
RemotePost post = new RemotePost { Url = this . OgoneUrl } ;
post . Add ( "pspid" , this . Psid ) ;
post . Add ( "orderid" , reference ) ;
post . Add ( "amount" , amount . ToString ( ) ) ;
post . Add ( "currency" , this . Currency ) ;
post . Add ( "language" , this . Language ) ;
post . Add ( "email" , email ) ;
// Hash
post . Add ( "SHASign" , Ogone . GenerateHash (
reference + amount + this . Currency +
this . Psid + this . ShaKey ) ) ;
// Redirection URLs
post . Add ( "accepturl" , this . AcceptUrl ) ;
post . Add ( "exceptionurl" , this . ExceptionUrl ) ;
post . Add ( "cancelurl" , this . CancellationUrl ) ;
post . Post ( ) ;
}RequestPayment (...) 메소드는 Remotepost 클래스를 사용하여 HTTP 게시물을 만들어 새로운 결제 프로세스를 시작합니다. 필요한 모든 정보는 PSID, 지불해야 할 금액, 언어, SHA1 사인 등과 같은 게시물에 포함됩니다.
가맹점 관리에서 구성한 SHA1-in 서명을 사용하여 SHA1 해시를 계산해야합니다. Ogone 은이 해시에 참조, 금액, 통화 및 PSID도 포함해야한다고 말합니다. 나중에 SHA1 해시 계산으로 돌아갈 것입니다.
비고 : HTTP Post는 결제 할 때 사용하는 일부 리디렉션 URL을 따라 전송됩니다. 이를 제공하지 않으면 판매자 관리에 구성된 기본 URL이 사용됩니다 (기술 정보의 트랜잭션 피드백 탭).
그림 6- 지불 확인

결제 프로세스를 시작한 후 위 그림과 같이 새 페이지로 리디렉션됩니다. HTTP 게시물에서 추가 매개 변수를 지정 하여이 페이지의 레이아웃을 변경할 수 있습니다. 해당 주제에 대한 자세한 내용은이 기사와 공식 Ogone 문서와 함께 제공되는 소스 코드를 살펴보십시오.
사용자가 취소 버튼을 클릭하면 결제 프로세스가 종료되고 PaymentCancelled.aspx 페이지로 리디렉션됩니다. 이 페이지는 사용자가 결제 프로세스를 취소했다는 메시지 만 보여줍니다.
그러나 결제 프로세스에 관한 모든 관련 정보가 쿼리 문자열에 포함되도록 Ogone 계정을 구성했습니다. 예를 들어:
http : // localhost : 3767/paymentcancelled.aspx? orderid = 246cf6f0-8bad-4edb-806c-eed3fb & currency = eur & pm = 19.99 & pm = 신용 카드 및 수락 = & status = 1 & cardno = & ed = & cn = & trxdate = 04%2f08%2f10 & payid = 6806803 & ncerror = & brand = ... 등.
원래 주문 참조, 금액, 지불 방법 (예 : 비자), 지불 성공 상태 등과 같은 정보를 추출 할 수 있습니다. 원하는 경우이 정보를 기록하거나 버릴 수 있습니다. 그것은 당신에게 달려 있습니다. Ogone에는 또한 가맹점 관리에서 구성된 SHA1-Out 서명의 도움으로 구성된 SHA1 해시가 포함됩니다. 이 해시를 사용하면 요청을 한 사람의 신원과 쿼리 문자열에있는 데이터의 유효성을 확인할 수 있습니다.
결제 프로세스가 성공적으로 완료되면 Ogone은 사용자를 PaymentAcceped.aspx 페이지로 리디렉션합니다. 쿼리 문자열에는 동일한 데이터도 포함됩니다. 페이지의 부하 이벤트 중에 지불 상태와 Sha Hash의 유효성이 확인됩니다. 둘 다 정확하다면 결제가 수락됩니다.
Listing 4- PaymentAccepted.aspx 페이지로드 이벤트 핸들러
OgonePaymentStatus status = OgoneResponse . Status ;
// Invalid Sha key returned from Ogone?
bool paymentSucceeded = OgoneResponse . IsShaSignValid && Ogone . IsPaymentStatusValid ( status ) ;비고 : Ogone에는 쿼리 문자열에 Parameter (Integer)가 포함되어 있습니다. 이 상태는 지불 상태를 알려줍니다. 이 기사의 샘플 코드는 이러한 값 중 일부를 OgonePaymentStatus라는 열거로 래빙했습니다. 가능한 모든 값 목록은 공식 Ogone 문서를 확인하십시오. ISPAYMENTSTATUSVALID (...) 메소드는 들어오는 상태 매개 변수가 결제를 알려주는 값 중 하나인지 확인합니다.
OgonerESponse 클래스 유형은 사용자를 사이트로 다시 리디렉션 할 때 포함하는 쿼리 문자열 매개 변수를 처리하는 작은 래퍼 일뿐입니다.
Listing 5는이 수업에서 작은 발췌를 보여줍니다. ISSHASIGNVALID 속성은 응용 프로그램의 구성 파일 (web.config)에서 SHA1-Out 서명을 읽고 SHA 부호를 다시 계산합니다. 이를 위해서는 금액, 주문 참조, 통화 등과 같은 다른 데이터를 포함해야합니다. (자세한 내용은 공식 Ogone 문서를 참조하십시오).
계산 된 SHA 부호가 쿼리 문자열에 포함 된 것과 일치하면 Ogone에서 발생하는 요청을 처리하고 쿼리 문자열 매개 변수의 데이터가 유효합니다.
Listing 5 -Ogoneresponse 클래스
public static class OgoneResponse
{
public static string OrderId { get { return HttpContext . Current . Request [ "orderid" ] ; } }
public static string Amount { get { return HttpContext . Current . Request [ "amount" ] ; } }
public static string ShaSign { get { return HttpContext . Current . Request [ "shasign" ] ; } }
public static bool IsShaSignValid
{
get
{
string key = OrderId + Currency + Amount + PaymentMethod + AcceptanceCode +
( int ) Status + CardNumber + PaymentId + NcError + Brand +
ConfigurationManager . AppSettings [ "Ogone_SHA1_OUT" ] ;
return ShaSign == Ogone . GenerateHash ( key ) ;
}
}
} 목록 6은 문자열의 SHA1 해시를 계산할 수있는 방법 중 하나를 보여줍니다. 문자열은 바이트 어레이로 변환 된 다음 SHA1CryptoserviceProvider를 사용하여 인코딩됩니다. 결과 해시는 16 진 형식으로 변환됩니다.
Listing 6- SHA1 해시 계산
public static string GenerateHash ( string input )
{
byte [ ] bytes = new ASCIIEncoding ( ) . GetBytes ( input ) ;
SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider ( ) ;
byte [ ] hash = sha . ComputeHash ( bytes ) ;
StringBuilder result = new StringBuilder ( ) ;
for ( int i = 0 ; i < 20 ; i ++ )
{
string temp = hash [ i ] . ToString ( "X2" ) ;
if ( temp . Length == 1 )
{
temp = "0" + temp ;
}
result . Append ( temp ) ;
}
return result . ToString ( ) ;
}그리고 이것으로 기사는 끝납니다 ...
Ogone Payment Services를 전자 상거래 웹 응용 프로그램과 통합하는 방법에 대한이 튜토리얼을 즐겼기를 바랍니다. 개발자의 관점에서 우리가 다룬 내용을 요약하기 위해 :