UNiDAYS와 통합하기 위한 PHP 라이브러리입니다. 이는 코딩된 통합과 코드 없는 통합에 사용됩니다. 다음 문서에서는 구현 및 예제에 대한 설명을 제공합니다.
이 코드를 사용하는 방법은 무엇입니까?
직접 추적
코드리스 검증
기여
다음은 사용 가능한 모든 매개변수에 대한 설명입니다. 귀하가 당사에 제공하는 항목은 합의된 계약에 따라 다릅니다.
매개변수 | 설명 | 데이터 유형 | 예 |
---|---|---|---|
파트너 ID | UNiDAYS에서 제공한 PartnerId입니다. 여러 지역에서 사업을 운영하는 경우 각 지역마다 다른 PartnerId를 가질 수 있습니다. | Base64로 인코딩된 GUID | XaxptFh0sK8Co6pI== |
거래 ID | 시스템의 거래에 대한 고유 ID | 끈 | 주문123 |
통화 | ISO 4217 통화 코드 | 끈 | GBP |
Code 또는 MemberID를 매개변수로 사용하는 것도 필수입니다.
매개변수 | 설명 | 데이터 유형 | 예 |
---|---|---|---|
암호 | 사용된 UNiDAYS 할인 코드 | 끈 | ABC123 |
회원ID | 코드 없는 통합을 사용하는 경우에만 제공됩니다. | Base64로 인코딩된 GUID | 0LTio6iVNaKj861RM9azJQ== |
값을 알 수 없는 다음 속성은 호출에서 생략해야 합니다. 다음 중 귀하가 당사에 제공하는 가치는 귀하가 합의한 계약에 따라 달라집니다.
매개변수 | 설명 | 데이터 유형 | 예 |
---|---|---|---|
주문총액 | 지급된 총 금액(소수점 2자리) | 소수 | 209.00 |
품목UNiDAYS할인 | 총 품목 가격 ItemsGross 에 적용된 UNiDAYS 할인의 총 금액(소수점 2자리 형식) | 소수 | 13.00 |
품목세금 | 품목에 적용되는 총 세금 금액(소수점 2자리 형식) | 소수 | 34시 50분 |
배송총액 | 배송비 할인이나 세금이 적용되기 전의 총 배송비 금액으로 소수점 이하 2자리로 표시됩니다. | 소수 | 5.00 |
배송할인 | 주문에 적용된 배송 할인 총액(UNiDAYS 또는 기타)으로 소수점 이하 2자리 형식으로 표시됩니다. | 소수 | 3.00 |
품목총액 | 할인이 적용되기 전 세금을 포함한 품목의 총 금액으로 소수점 이하 2자리로 표시됩니다. | 소수 | 230.00 |
품목기타할인 | ItemsGross 에 적용되는 UNiDAYS가 아닌 모든 할인의 총 금액(소수점 2자리 형식) | 소수 | 10.00 |
UNIDAYS할인퍼센트 | UNiDAYS 할인이 소수점 이하 2자리까지 백분율로 적용됩니다. | 소수 | 10.00 |
신규고객 | 사용자가 신규(재방문) 고객입니까? | 부울 | 참 또는 거짓 |
다음은 UNiDAYS 추적 매개변수와 관련된 필드가 포함된 바구니 예시입니다.
목 | 역겨운 | UNiDAYS 할인 | 기타할인 | 세 | 순총액 | 라인 합계 |
---|---|---|---|---|---|---|
신발 | 100.00 | 0.00 | 0.00 | 16.67 | 83.33 | 100.00 |
셔츠 | 50.00 | 5.00 | 0.00 | 7시 50분 | 37시 50분 | 45.00 |
청바지 | 80.00 | 8.00 | 10.00 | 10.33 | 51.67 | 62.00 |
합계 | 230.00 | 13.00 | 10.00 | 34시 50분 | 172.50 | 207.00 |
해운 | 5.00 | |||||
배송비 할인 | 3.00 | |||||
주문 합계 | 209.00 |
다음은 통합 구현을 위한 세 가지 옵션입니다. 이러한 예는 코딩된 통합과 코드 없는 통합을 모두 다루고(자세한 내용은 실시간 분석 PDF 참조) 모든 선택적 매개변수를 포함합니다. 이는 구현을 위한 지침으로 사용됩니다.
이 메소드는 API를 호출하는 데 사용할 수 있는 URL을 반환합니다.
모든 서버 URL에 서명하는 것은 필수 요구 사항입니다. 이는 UNiDAYS가 제공하는 서명 키를 인수 중 하나로 전달해야 함을 의미합니다. 서명 키는 Base64로 인코딩된 GUID입니다. 이 끝점은 GET
및 POST
요청을 모두 허용합니다.
서버 간 요청을 위한 URL을 가져오는 방법은 create_server_url($key)
입니다. 이 방법을 구현하려면 먼저 DirectTrackingDetailsBuilder
를 사용하여 우리에게 보내려는 속성이 포함된 직접 추적 개체를 만들어야 합니다. 이 빌더에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
보내야 하는 세부 정보가 포함된 개체가 생성되면 추적 도우미를 만들고 해당 세부 정보를 인수로 제공하여 new TrackingHelper($directTrackingDetails)
호출하고 ->create_server_url($key)
호출합니다. 여기서 $key
는 다음에서 제공한 키입니다. UNiDAYS.
URL이 귀하에게 반환되며, 이를 사용하여 API를 호출할 수 있습니다. 성공하면 상태 코드 204 No Content의 응답이 반환됩니다. 이는 POST
및 GET
요청 모두에 적용됩니다.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ key = " someSigningKey " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
$ helper = new TrackingHelper ( $ directTrackingDetails );
$ url = $ helper -> create_server_url ( $ key );
이는 클라이언트-서버 통합이라고도 합니다. 이 메소드는 API를 호출하기 위해 결제 후/주문 성공 페이지의 스크립트 요소 내에 배치될 수 있는 URL을 반환합니다.
스크립트 요청에 대해 서명된 URL을 생성하는 옵션입니다. 이를 위해서는 서명된 메서드에 대한 인수 중 하나로 UNiDAYS가 제공한 서명 키를 우리에게 보내야 합니다.
$url = $helper->create_signed_script_url($key);
대신에
$url = $helper->create_script_url();
클라이언트-서버 요청을 위해 URL을 가져오는 방법은 create_script_url()
또는 서명된 URL이 반환되도록 선택한 경우 create_signed_script_url($key)
입니다. 이 방법을 구현하려면 먼저 DirectTrackingDetailsBuilder
를 사용하여 우리에게 보내려는 속성이 포함된 직접 추적 개체를 만들어야 합니다. 이 빌더에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
보내야 하는 세부 정보가 포함된 객체가 생성되면 추적 도우미를 생성하여 해당 세부 정보를 인수로 제공 new TrackingHelper($directTrackingDetails)
하고 서명되지 않은 URL에 대해 ->create_script_url()
호출하거나 ->create_signed_script_url($key)
, 여기서 $key
UNiDAYS에서 제공한 키입니다.
API를 호출하기 위해 결제 후/주문 성공 페이지의 스크립트 요소 내에 배치할 수 있는 URL이 귀하에게 반환됩니다. 성공하면 상태 코드 200 OK의 응답이 반환됩니다. 이는 GET
요청에만 작동합니다.
아래 예는 서명되지 않은 스크립트 URL에 대한 요청입니다.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
$ helper = new TrackingHelper ( $ directTrackingDetails );
$ url = $ helper -> create_script_url ();
추적 클라이언트에 대한 호출은 서버 URL 생성과 유사하지만 URL을 반환하는 대신 UNiDAYS가 요청을 보내고 응답을 반환합니다.
UNiDAYS가 보내는 요청이 서명되므로 모든 추적 클라이언트 호출에 키가 제공되는 것은 필수 요구 사항입니다.
이 방법을 구현하려면 먼저 DirectTrackingDetailsBuilder
를 사용하여 우리에게 보내려는 속성이 포함된 직접 추적 개체를 만들어야 합니다. 이 빌더에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
보내야 하는 세부 정보가 포함된 객체가 생성되면 추적 클라이언트의 인스턴스를 생성하고 해당 세부 정보를 매개변수로 제공하고 UNiDAYS가 제공한 서명 키와 함께 new TrackingClient($directTrackingDetails, $key)
호출하고 다음을 호출하세요 ->sendRequest()
.
HttpResponseMessage가 반환됩니다. 성공하면 응답에는 204 No Content 상태 코드가 있어야 합니다.
아래 예에서는 직접 추적 세부 정보를 설정하고 클라이언트에서 sendRequest를 호출하고 응답 코드를 콘솔에 표시합니다.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ key = " someSigningKey " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
$ client = new TrackingClient ( $ directTrackingDetails , $ key );
$ response = $ client -> sendRequest ();
echo $ response -> code ;
UNiDAYS는 TrackingHelper
개체의 테스트 엔드포인트 구성을 제공합니다.
테스트 모드에서 구성된 TrackingHelper 개체는 사용자에게 반환되거나 전송되는 URL에 추가 매개변수( &Test=True
)를 추가합니다.
<?php
use Unidays ;
// UNiDAYS will provide your partnerId and key
$ partnerId = " somePartnerId " ;
$ key = " someSigningKey " ;
$ details = new DirectTrackingDetailsBuilder ( $ partnerId , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
// Pass in an aditional argument of true to instantiate the TrackingHelper object in test mode
$ helper = new TrackingHelper ( $ directTrackingDetails , true );
// The url generated will now contain the appended $Test=True parameter, this url will call our test endpoint
$ url = $ helper -> create_server_url ( $ key );
빌더의 목적은 UNiDAYS에 대한 추적 요청을 구성할 때 간단하고 직관적으로 만드는 것입니다.
빌더의 인수는 필수 매개변수입니다.
$directTrackingDetails = new DirectTrackingDetailsBuilder($partnerId, $currency, $transactionId)
그런 다음 예시에 따라 연결될 수 있는 전송하려는 정보를 구축하는 데 사용할 수 있는 다양한 방법이 있습니다. 이는 이 문서 상단에 있는 매개변수와 일치합니다.
base64 encoded guid
)string
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)bool
)계약상 제공하기로 합의한 가치만 연결하세요. 모든 방법을 사용해야 하는 것은 아닙니다.
연결될 마지막 호출은 객체를 생성하는 ->build()
입니다.
<?php
use Unidays ;
$ details = new DirectTrackingDetailsBuilder ( ' somePartnerId ' , ' order123 ' , ' GBP ' );
$ details -> withOrderTotal ( 209.00 );
$ details -> withItemsUnidaysDiscount ( 13.00 );
$ details -> withCode ( ' UNI123 ' );
$ details -> withItemsTax ( 34.50 );
$ details -> withShippingGross ( 5.00 );
$ details -> withShippingDiscount ( 3.00 );
$ details -> withItemsGross ( 230.00 );
$ details -> withItemsOtherDiscount ( 10.00 );
$ details -> withUnidaysDiscountPercentage ( 10.00 );
$ details -> withNewCustomer ( true );
$ directTrackingDetails = $ details -> build ();
UNiDAYS 회원에게 직접 추적과 함께 코드 없는 경험을 제공하기로 동의한 경우, 귀하의 사이트로 전달되는 서명된 트래픽을 구문 분석하고 검증하는 데 도움이 되는 '코드 없는 API'도 구현해야 합니다.
먼저 UNiDAYS의 new CodelessUrlVerifier($key)
에서 제공한 키를 사용하여 CodelessUrlVerifier를 호출하세요. 그런 다음 ud_s, ud_t 및 ud_h 값을 인수로 사용하여 verify_url_params($ud_s, $ud_t, $ud_h)
메서드를 호출합니다.
매개변수 | 설명 | 데이터 유형 | 최대 길이 | 예 |
---|---|---|---|---|
ud_s | UNiDAYS 인증 학생증 | 끈 | 256자 | 할/faqh330SGgCnn4t3X4g== |
ud_t | 요청의 타임스탬프 | 끈 | 64비트 | 1395741712 |
ud_h | 다른 두 매개변수의 해시 서명 | Base64 문자열 | 256자 | o9Cg3q2eVElZxYlJsEAQ== |
메서드가 들어오는 요청의 해시 유효성을 성공적으로 검사하면 요청에 대한 DateTime이 반환됩니다. 그렇지 않으면 null이 반환됩니다.
<?php
use Unidays ;
// Your key as provided by UNiDAYS
$ key = " someSigningKey " ;
// Obtain parameters from the query string. Be sure to URL Decode them
$ ud_s = " Do/faqh330SGgCnn4t3X4g== " ;
$ ud_t = " 1395741712 " ;
$ ud_h = " i38dJdX+XLKuE4F5tv+Knpl5NPtu5zrdsjnqBQliJEJE4NkMmfurVnUaT46WluRYoD1/f5spAqU36YgeTMCNeg== " ;
$ verifier = new CodelessUrlVerifier ( $ key );
$ verifiedAt = $ verifier -> verify_url_params ( $ ud_s , $ ud_t , $ ud_h );
이 프로젝트는 오픈소스 프로젝트로 설정되어 있습니다. 따라서 기능이나 코드 자체 개선에 대한 제안 사항이 있거나 문제가 발생한 경우; 이를 제기하거나 구현 변경을 제안할 수 있습니다.
이 코드베이스에 기여하는 데 관심이 있다면 기여 지침을 따르세요. 여기에는 직접 기여하고 기능 요청 또는 버그 보고서를 제기하는 방법에 대한 가이드가 포함되어 있습니다. 위의 작업을 수행할 때는 당사의 행동 강령을 준수하십시오.