Esta es la biblioteca PHP para integrarse con UNiDAYS. Esto se utilizará para integraciones codificadas y sin código. La siguiente documentación proporciona descripciones de las implementaciones y ejemplos.
¿Cómo utilizar este código?
Seguimiento directo
Verificación sin código
Contribuyendo
Aquí hay una descripción de todos los parámetros disponibles. Cuáles de estos nos proporcione dependerán del contrato acordado.
Parámetro | Descripción | Tipo de datos | Ejemplo |
---|---|---|---|
ID de socio | Su PartnerId proporcionado por UNiDAYS. Si opera en varias regiones geográficas, PUEDE tener un PartnerId diferente para cada región. | Guía codificada en Base64 | XaxptFh0sK8Co6pI== |
ID de transacción | Una identificación única para la transacción en su sistema | Cadena | Orden123 |
Divisa | El código de moneda ISO 4217 | Cadena | GBP |
También es obligatorio tener Código o ID de miembro como parámetro:
Parámetro | Descripción | Tipo de datos | Ejemplo |
---|---|---|---|
Código | El código de descuento UNiDAYS utilizado | Cadena | ABC123 |
ID de miembro | Solo se proporcionará si utiliza una integración sin código | Guía codificada en Base64 | 0LTio6iVNaKj861RM9azJQ== |
Tenga en cuenta que cualquiera de las siguientes propiedades cuyo valor se desconoce debe omitirse de las llamadas. Cuál de los siguientes valores nos proporcione dependerá de su contrato acordado.
Parámetro | Descripción | Tipo de datos | Ejemplo |
---|---|---|---|
Total del pedido | Importe monetario total pagado, formateado con 2 decimales | Decimal | 209.00 |
ArtículosUNiDAYSDescuento | Importe monetario total del descuento de UNiDAYS aplicado al valor bruto del artículo ItemsGross , formateado con 2 decimales | Decimal | 13.00 |
ArtículosImpuestos | Importe monetario total del impuesto aplicado a los artículos, formateado con 2 decimales | Decimal | 34,50 |
EnvíoBruto | Monto monetario total del costo de envío, antes de aplicar cualquier descuento o impuesto de envío, formateado con 2 decimales | Decimal | 5.00 |
EnvíoDescuento | Importe monetario total del descuento de envío (UNiDAYS o de otro tipo) aplicado al pedido, formateado con 2 decimales | Decimal | 3.00 |
ArtículosBruto | Importe monetario total de los artículos, impuestos incluidos, antes de aplicar cualquier descuento, con formato de 2 decimales | Decimal | 230.00 |
ArtículosOtroDescuento | Importe monetario total de todos los descuentos no UNiDAYS aplicados a ItemsGross , formateado con 2 decimales | Decimal | 10.00 |
UNiDAYSDescuentoPorcentaje | El descuento UNiDAYS aplicado, como porcentaje, con formato de 2 decimales | Decimal | 10.00 |
Nuevo Cliente | ¿Es el usuario un cliente nuevo (o recurrente) para usted? | booleano | verdadero o falso |
Aquí hay una cesta de ejemplo con los campos relacionados con los parámetros de seguimiento de UNiDAYS,
Artículo | Bruto | Descuento UNiDAYS | Otro descuento | Impuesto | Total neto | Total de línea |
---|---|---|---|---|---|---|
Zapatos | 100.00 | 0.00 | 0.00 | 16.67 | 83,33 | 100.00 |
Camisa | 50.00 | 5.00 | 0.00 | 7.50 | 37,50 | 45.00 |
Vaqueros | 80.00 | 8.00 | 10.00 | 10.33 | 51,67 | 62.00 |
Totales | 230.00 | 13.00 | 10.00 | 34,50 | 172,50 | 207.00 |
Envío | 5.00 | |||||
Descuento de envío | 3.00 | |||||
Total del pedido | 209.00 |
A continuación se muestran las tres opciones para implementar su integración. Estos ejemplos cubren integraciones codificadas y sin código (consulte el PDF de análisis en vivo para obtener más detalles) e incluyen todos los parámetros opcionales. Su objetivo es servir de guía para su implementación.
Este método devuelve una URL que puede utilizar para llamar a la API.
Es un requisito obligatorio que todas las URL del servidor estén firmadas. Esto significa que debe pasar la clave de firma que UNiDAYS le proporciona como uno de los argumentos. La clave de firma es un GUID codificado en Base64. Este punto final acepta solicitudes GET
y POST
.
El método para obtener la URL para realizar una solicitud de servidor a servidor es create_server_url($key)
. Para implementar este método, primero debe utilizar DirectTrackingDetailsBuilder
para crear un objeto de seguimiento directo con las propiedades que desea enviarnos. Puede encontrar más detalles sobre este constructor aquí.
Una vez creado el objeto que contiene los detalles que necesita enviarnos, cree un asistente de seguimiento, proporcionando esos detalles como un argumento new TrackingHelper($directTrackingDetails)
y llame a ->create_server_url($key)
donde $key
es la clave que le proporcionó UNiDÍAS.
Se le devolverá una URL, que luego podrá utilizar para llamar a nuestra API. Si tiene éxito, se devolverá una respuesta con un código de estado de 204 Sin contenido. Esto funcionará tanto para solicitudes POST
como 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 );
Esto también se conoce como nuestra integración de cliente a servidor. Este método devuelve una URL que se puede colocar dentro de un elemento de secuencia de comandos en su página de pospago/éxito del pedido para llamar a la API.
Es una opción para crear una URL firmada para su solicitud de secuencia de comandos. Para hacer esto, deberá enviarnos la clave de firma que UNiDAYS le proporciona como uno de los argumentos para el método firmado.
$url = $helper->create_signed_script_url($key);
en lugar de
$url = $helper->create_script_url();
El método para obtener la URL para realizar una solicitud de cliente a servidor es create_script_url()
o create_signed_script_url($key)
si ha elegido que se le devuelva una URL firmada. Para implementar este método, primero debe utilizar DirectTrackingDetailsBuilder
para crear un objeto de seguimiento directo con las propiedades que desea enviarnos. Puede encontrar más detalles sobre este constructor aquí.
Una vez creado el objeto que contiene los detalles que necesita enviarnos, cree un asistente de seguimiento, proporcionando esos detalles como un argumento new TrackingHelper($directTrackingDetails)
y llame ->create_script_url()
para una URL sin firmar, o ->create_signed_script_url($key)
, donde $key
es la clave que le proporcionó UNiDAYS.
Se le devolverá una URL que puede colocarse dentro de un elemento de secuencia de comandos en su página posterior al pago/éxito del pedido para llamar a la API. Si tiene éxito, se devolverá una respuesta con un código de estado de 200 OK. Esto sólo funcionará para solicitudes GET
.
El siguiente ejemplo es una solicitud de una URL de script sin firmar.
<?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 ();
Las llamadas al Cliente de seguimiento son similares a crear la URL del servidor, pero en lugar de devolver una URL, UNiDAYS envía la solicitud y devuelve una respuesta.
Es un requisito obligatorio que todas las llamadas del Cliente de Seguimiento cuenten con una clave, ya que las solicitudes que envía UNiDAYS están firmadas.
Para implementar este método, primero debe utilizar DirectTrackingDetailsBuilder
para crear un objeto de seguimiento directo con las propiedades que desea enviarnos. Puede encontrar más detalles sobre este constructor aquí.
Una vez creado el objeto que contiene los detalles que necesita enviarnos, cree una instancia del cliente de seguimiento, proporcionando esos detalles como parámetro, junto con la clave de firma que UNiDAYS le proporcionó el new TrackingClient($directTrackingDetails, $key)
y llame ->sendRequest()
.
Se devuelve un HttpResponseMessage. Si tiene éxito, la respuesta debería tener un código de estado de 204 Sin contenido.
El siguiente ejemplo configura algunos detalles de seguimiento directo, llama a sendRequest en el cliente y envía el código de respuesta a la consola.
<?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 proporciona una configuración de punto final de prueba del objeto TrackingHelper
.
El objeto TrackingHelper, configurado en modo de prueba, agregará un parámetro adicional ( &Test=True
) a la URL que se le devuelve o se envía por usted.
<?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 );
El propósito del constructor es hacerlo simple e intuitivo al momento de construir cualquier solicitud de seguimiento para UNiDAYS.
Los argumentos del constructor son los parámetros obligatorios:
$directTrackingDetails = new DirectTrackingDetailsBuilder($partnerId, $currency, $transactionId)
Luego, hay una variedad de métodos disponibles para recopilar la información que desea enviarnos, que se pueden encadenar según el ejemplo. Estos coinciden con los parámetros que se encuentran en la parte superior de este documento.
base64 encoded guid
)string
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)bool
)Encadene únicamente los valores que haya acordado proporcionar contractualmente. No es un requisito utilizar todos los métodos.
La última llamada a encadenar es ->build()
que crea el objeto.
<?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 ();
Si aceptó brindar a los miembros de UNiDAYS una experiencia sin código, además del seguimiento directo, también deberá implementar la 'API sin código' que lo ayudará a analizar y validar el tráfico firmado que dirigimos hacia su sitio.
Primero llame a CodelessUrlVerifier con la clave que le proporcionó UNiDAYS new CodelessUrlVerifier($key)
. Luego llame al método verify_url_params($ud_s, $ud_t, $ud_h)
con los valores de ud_s, ud_t y ud_h como argumentos.
Parámetro | Descripción | Tipo de datos | Longitud máxima | Ejemplo |
---|---|---|---|---|
ud_s | Identificación de estudiante verificada por UNiDAYS | Cadena | 256 caracteres | Hacer/faqh330SGgCnn4t3X4g== |
ud_t | Marca de tiempo de la solicitud | Cadena | 64 bits | 1395741712 |
ud_h | Firma hash de los otros dos parámetros. | Cadena Base64 | 256 caracteres | o9Cg3q2eVELZxYlJsEAQ== |
Si el método valida con éxito el hash de la solicitud entrante, se devolverá un DateTime para la solicitud; de lo contrario se devolverá nulo.
<?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 );
Este proyecto está configurado como un proyecto de código abierto. Como tal, si tiene alguna sugerencia sobre funciones, para mejorar el código en sí o si ha encontrado algún problema; usted puede plantearlos y/o sugerir cambios en la implementación.
Si está interesado en contribuir a este código base, siga las pautas de contribución. Contiene guías sobre cómo contribuir directamente y generar solicitudes de funciones o informes de errores. Siga nuestro código de conducta al realizar cualquiera de las acciones anteriores.