这是用于与 UNIDAYS 集成的 PHP 库。这将用于编码和无代码集成。以下文档提供了实现和示例的描述。
如何使用该代码?
直接追踪
无代码验证
贡献
以下是所有可用参数的描述。您向我们提供的其中哪些取决于商定的合同。
范围 | 描述 | 数据类型 | 例子 |
---|---|---|---|
合作伙伴ID | UNiDAYS 提供的您的 PartnerId。如果您在多个地理区域开展业务,则每个区域可能有不同的 PartnerId | Base64 编码指南 | XaxptFh0sK8Co6pI== |
交易ID | 您系统中交易的唯一 ID | 细绳 | 订单123 |
货币 | ISO 4217 货币代码 | 细绳 | 英镑 |
将 Code 或 MemberID 作为参数也是强制性的:
范围 | 描述 | 数据类型 | 例子 |
---|---|---|---|
代码 | 使用的UNiDAYS折扣代码 | 细绳 | ABC123 |
会员编号 | 仅当您使用无代码集成时才需要提供 | Base64 编码指南 | 0LTio6iVNaKj861RM9azJQ== |
请注意,调用时应省略以下任何未知值的属性。您向我们提供以下哪些值将取决于您同意的合同。
范围 | 描述 | 数据类型 | 例子 |
---|---|---|---|
订单总计 | 支付的总金额,格式为小数点后两位 | 十进制 | 209.00 |
项目UNiDAYS折扣 | 适用于商品总价值ItemsGross 的 UNiDAYS 折扣总金额,格式为小数点后 2 位 | 十进制 | 13:00 |
物品税 | 适用于项目的税金总额,格式为小数点后两位 | 十进制 | 34.50 |
运费总额 | 应用任何运费折扣或税前的运费总额,格式为小数点后两位 | 十进制 | 5.00 |
运费折扣 | 应用于订单的运费折扣总额(UNiDAYS 或其他),格式为小数点后 2 位 | 十进制 | 3.00 |
项目毛额 | 应用任何折扣之前的商品总金额(含税),格式为小数点后两位 | 十进制 | 230.00 |
商品其他折扣 | 应用于ItemsGross 的所有非 UNiDAYS 折扣的总金额,格式为小数点后两位 | 十进制 | 10:00 |
UNIDAYS折扣百分比 | 应用的 UNIDAYS 折扣,以百分比形式显示,格式为小数点后两位 | 十进制 | 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
是由联合国日。
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 );
这也称为我们的客户端到服务器集成。此方法返回一个 URL,可以将其放置在付款后/订单成功页面上的脚本元素中以调用 API。
这是一个为脚本请求创建签名 URL 的选项。为此,您需要向我们发送 UNIDAYS 为您提供的签名密钥,作为签名方法的参数之一。
$url = $helper->create_signed_script_url($key);
而不是
$url = $helper->create_script_url();
获取用于发出客户端到服务器请求的 URL 的方法是create_script_url()
或create_signed_script_url($key)
(如果您选择返回签名 URL)。要实现此方法,您首先需要使用DirectTrackingDetailsBuilder
创建一个直接跟踪对象,其中包含您想要发送给我们的属性。有关此构建器的更多详细信息可以在此处找到。
创建包含您需要发送给我们的详细信息的对象后,创建一个跟踪助手,将这些详细信息作为参数提供new TrackingHelper($directTrackingDetails)
并调用->create_script_url()
获取未签名的 url,或->create_signed_script_url($key)
,其中$key
是 UNiDAYS 提供给您的密钥。
将返回一个 URL,您可以将其放置在付款后/订单成功页面上的脚本元素中以调用 API。如果成功,将返回状态代码为 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 类似,但 UNiDAYS 不返回 URL,而是发送请求并返回响应。
强制要求所有跟踪客户端调用都必须提供密钥,因为 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== |
如果该方法成功验证传入请求的哈希值,则将返回请求的日期时间;否则将返回 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 );
该项目被设置为开源项目。因此,如果您对功能、改进代码本身有任何建议,或者遇到任何问题;您可以提出它们和/或建议实施方面的更改。
如果您有兴趣为此代码库做出贡献,请遵循贡献指南。其中包含有关直接贡献和提出功能请求或错误报告的指南。进行上述任何操作时,请遵守我们的行为准则。