Ini adalah perpustakaan PHP untuk berintegrasi dengan UNiDAYS. Ini akan digunakan untuk integrasi berkode dan tanpa kode. Dokumentasi berikut memberikan deskripsi implementasi dan contohnya.
Bagaimana cara menggunakan kode ini?
Pelacakan Langsung
Verifikasi Tanpa Kode
Berkontribusi
Berikut ini deskripsi semua parameter yang tersedia. Yang mana yang Anda berikan kepada kami bergantung pada kontrak yang disepakati.
Parameter | Keterangan | Tipe Data | Contoh |
---|---|---|---|
ID Mitra | PartnerId Anda sebagaimana disediakan oleh UNiDAYS. Jika Anda beroperasi di beberapa wilayah geografis, Anda MUNGKIN memiliki ID Mitra yang berbeda untuk setiap wilayah | Panduan Berkode Base64 | XaxptFh0sK8Co6pI== |
Id Transaksi | ID unik untuk transaksi di sistem Anda | Rangkaian | Pesan123 |
Mata uang | Kode mata uang ISO 4217 | Rangkaian | GBP |
Memiliki Kode atau ID Anggota sebagai parameter juga wajib:
Parameter | Keterangan | Tipe Data | Contoh |
---|---|---|---|
Kode | Kode diskon UNiDAYS digunakan | Rangkaian | ABC123 |
ID Anggota | Hanya untuk diberikan jika Anda menggunakan integrasi tanpa kode | Panduan Berkode Base64 | 0LTio6iVNaKj861RM9azJQ== |
Perhatikan salah satu properti berikut yang nilainya tidak diketahui harus dihilangkan dari panggilan. Nilai manakah yang Anda berikan kepada kami akan bergantung pada kontrak yang Anda setujui.
Parameter | Keterangan | Tipe Data | Contoh |
---|---|---|---|
Total Pesanan | Total jumlah uang yang dibayarkan, diformat menjadi 2 tempat desimal | Desimal | 209.00 |
ItemUNiDAYSDiskon | Jumlah uang total diskon UNiDAYS yang diterapkan pada nilai barang kotor ItemsGross , diformat menjadi 2 tempat desimal | Desimal | 13.00 |
BarangPajak | Jumlah total pajak yang diterapkan pada item, diformat menjadi 2 tempat desimal | Desimal | 34.50 |
Pengiriman Kotor | Jumlah total biaya pengiriman, sebelum diskon pengiriman atau pajak diterapkan, diformat menjadi 2 tempat desimal | Desimal | 5.00 |
Diskon Pengiriman | Jumlah total diskon pengiriman (UNiDAYS atau lainnya) yang diterapkan pada pesanan, diformat menjadi 2 tempat desimal | Desimal | 3.00 |
Barang Kotor | Jumlah total uang item, termasuk pajak, sebelum diskon apa pun diterapkan, diformat menjadi 2 tempat desimal | Desimal | 230.00 |
ItemLainnyaDiskon | Jumlah uang total dari semua diskon non UNiDAYS yang diterapkan pada ItemsGross , diformat menjadi 2 tempat desimal | Desimal | 10.00 |
Persentase Diskon UNiDAYS | Diskon UNiDAYS berlaku, sebagai persentase, dengan format 2 tempat desimal | Desimal | 10.00 |
Pelanggan Baru | Apakah pengguna tersebut adalah pelanggan baru (vs pelanggan kembali) bagi Anda? | Boolean | benar atau salah |
Berikut adalah contoh keranjang dengan kolom yang berkaitan dengan parameter pelacakan UNiDAYS,
Barang | Bruto | Diskon UNiDAYS | Diskon Lainnya | Pajak | Jumlah Bersih | Jumlah Baris |
---|---|---|---|---|---|---|
Sepatu | 100,00 | 0,00 | 0,00 | 16.67 | 83.33 | 100,00 |
Kemeja | 50.00 | 5.00 | 0,00 | 7.50 | 37.50 | 45.00 |
Jeans | 80.00 | 8.00 | 10.00 | 10.33 | 51.67 | 62.00 |
Total | 230.00 | 13.00 | 10.00 | 34.50 | 172,50 | 207.00 |
Pengiriman | 5.00 | |||||
Diskon Pengiriman | 3.00 | |||||
Jumlah Pesanan | 209.00 |
Berikut adalah tiga opsi untuk menerapkan integrasi Anda. Contoh-contoh ini mencakup integrasi berkode dan tanpa kode (lihat PDF analisis langsung untuk detailnya) dan mencakup semua parameter opsional. Hal ini dimaksudkan sebagai pedoman pelaksanaan.
Metode ini mengembalikan URL yang dapat Anda gunakan untuk memanggil API.
Merupakan persyaratan wajib bahwa semua URL server ditandatangani. Ini berarti Anda diharuskan untuk memberikan kunci penandatanganan yang diberikan UNiDAYS kepada Anda sebagai salah satu argumen. Kunci penandatanganan adalah GUID yang dikodekan Base64. Titik akhir ini menerima permintaan GET
dan POST
.
Metode untuk mendapatkan URL untuk membuat permintaan server-ke-server adalah create_server_url($key)
. Untuk menerapkan metode ini, pertama-tama Anda perlu menggunakan DirectTrackingDetailsBuilder
untuk membuat objek pelacakan langsung dengan properti yang ingin Anda kirimkan kepada kami. Detail lebih lanjut tentang pembuat ini dapat ditemukan di sini.
Setelah objek berisi detail yang perlu Anda kirimkan kepada kami telah dibuat, buatlah pembantu Pelacakan, berikan detail tersebut sebagai argumen new TrackingHelper($directTrackingDetails)
dan panggil ->create_server_url($key)
dengan $key
adalah kunci yang diberikan kepada Anda oleh UNiDAYS.
Sebuah URL akan dikembalikan kepada Anda, yang kemudian dapat digunakan untuk memanggil API kami. Jika berhasil, respons dengan kode status 204 Tidak Ada Konten akan dikembalikan. Ini akan berfungsi untuk permintaan POST
dan GET
.
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 );
Ini juga dikenal sebagai integrasi klien-ke-server kami. Metode ini mengembalikan URL yang dapat ditempatkan dalam elemen skrip pada halaman pasca-pembayaran/sukses pesanan Anda untuk memanggil API.
Ini adalah opsi untuk membuat url bertanda tangan untuk permintaan Skrip Anda. Untuk melakukan ini, Anda perlu mengirimkan kepada kami kunci penandatanganan yang diberikan UNiDAYS kepada Anda sebagai salah satu argumen untuk metode yang ditandatangani.
$url = $helper->create_signed_script_url($key);
alih-alih
$url = $helper->create_script_url();
Metode untuk mendapatkan URL untuk membuat permintaan klien-ke-server adalah create_script_url()
, atau create_signed_script_url($key)
jika Anda memilih untuk mengembalikan URL yang ditandatangani. Untuk menerapkan metode ini, pertama-tama Anda perlu menggunakan DirectTrackingDetailsBuilder
untuk membuat objek pelacakan langsung dengan properti yang ingin Anda kirimkan kepada kami. Detail lebih lanjut tentang pembuat ini dapat ditemukan di sini.
Setelah objek berisi detail yang perlu Anda kirimkan kepada kami telah dibuat, buat pembantu Pelacakan, berikan detail tersebut sebagai argumen new TrackingHelper($directTrackingDetails)
dan panggil ->create_script_url()
untuk url yang tidak ditandatangani, atau ->create_signed_script_url($key)
, dimana $key
adalah kunci yang diberikan kepada Anda oleh UNiDAYS.
Sebuah URL akan dikembalikan kepada Anda yang dapat ditempatkan dalam elemen skrip pada halaman pasca-pembayaran/sukses pesanan untuk memanggil API. Jika berhasil respon dengan kode status 200 OK akan dikembalikan. Ini hanya akan berfungsi untuk permintaan GET
.
Contoh di bawah ini adalah permintaan untuk URL Skrip yang tidak ditandatangani.
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 ();
Panggilan ke Klien Pelacakan mirip dengan membuat url server tetapi alih-alih mengembalikan URL, UNiDAYS mengirimkan permintaan dan mengembalikan respons.
Merupakan persyaratan wajib bahwa semua panggilan Klien Pelacakan diberikan kunci, karena permintaan yang dikirim UNiDAYS ditandatangani.
Untuk menerapkan metode ini, pertama-tama Anda perlu menggunakan DirectTrackingDetailsBuilder
untuk membuat objek pelacakan langsung dengan properti yang ingin Anda kirimkan kepada kami. Detail lebih lanjut tentang pembuat ini dapat ditemukan di sini.
Setelah objek berisi detail yang perlu Anda kirimkan kepada kami dibuat, buat instance klien pelacakan, berikan detail tersebut sebagai parameter, bersama dengan kunci penandatanganan UNiDAYS yang memberi Anda new TrackingClient($directTrackingDetails, $key)
dan hubungi ->sendRequest()
.
HttpResponseMessage dikembalikan. Jika berhasil, responsnya akan memiliki kode status 204 Tanpa Konten.
Contoh di bawah ini menyiapkan beberapa detail pelacakan langsung, memanggil sendRequest pada klien dan menggemakan kode respons ke konsol.
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 menyediakan konfigurasi titik akhir pengujian objek TrackingHelper
.
Objek TrackingHelper, yang dikonfigurasi dalam mode pengujian, akan menambahkan parameter tambahan ( &Test=True
) ke URL yang dikembalikan kepada Anda, atau dikirimkan untuk Anda.
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 );
Tujuan dari pembuatnya adalah untuk membuatnya sederhana dan intuitif saat membuat permintaan pelacakan apa pun ke UNiDAYS.
Argumen pada pembuat adalah parameter wajib:
$directTrackingDetails = new DirectTrackingDetailsBuilder($partnerId, $currency, $transactionId)
Lalu ada berbagai metode yang tersedia untuk mengumpulkan informasi yang ingin Anda kirimkan kepada kami yang dapat dirangkai sesuai contoh. Ini cocok dengan parameter di bagian atas dokumen ini.
base64 encoded guid
)string
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)decimal
)bool
)Hanya rangkai nilai-nilai yang telah Anda setujui secara kontrak untuk diberikan. Ini bukanlah keharusan untuk menggunakan setiap metode.
Panggilan terakhir yang akan dirantai adalah ->build()
yang menciptakan objek.
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 ();
Jika Anda setuju untuk memberikan pengalaman tanpa kode kepada Anggota UNiDAYS, selain pelacakan langsung, Anda juga perlu menerapkan 'API Tanpa Kode' yang akan membantu Anda menguraikan dan memvalidasi lalu lintas bertanda tangan yang kami arahkan ke situs Anda.
Pertama-tama panggil CodelessUrlVerifier dengan kunci yang diberikan kepada Anda oleh UNiDAYS new CodelessUrlVerifier($key)
. Kemudian panggil metode verify_url_params($ud_s, $ud_t, $ud_h)
dengan nilai ud_s, ud_t dan ud_h sebagai argumennya.
Parameter | Keterangan | Tipe Data | Panjang Maks | Contoh |
---|---|---|---|---|
ud_s | ID pelajar terverifikasi UNiDAYS | Rangkaian | 256 karakter | Lakukan/faqh330SGgCnn4t3X4g== |
ud_t | Stempel waktu untuk permintaan tersebut | Rangkaian | 64 bit | 1395741712 |
ud_h | Tanda tangan hash dari dua parameter lainnya | Tali Base64 | 256 karakter | o9Cg3q2eVElZxYlJsEAQ== |
Jika metode berhasil memvalidasi hash permintaan masuk, DateTime untuk permintaan tersebut akan dikembalikan; jika tidak, null akan dikembalikan.
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 );
Proyek ini diatur sebagai proyek sumber terbuka. Oleh karena itu, jika ada saran yang Anda miliki untuk fitur, untuk meningkatkan kode itu sendiri, atau Anda menemukan masalah apa pun; Anda dapat mengemukakannya dan/atau menyarankan perubahan dalam penerapannya.
Jika Anda tertarik untuk berkontribusi pada basis kode ini, silakan ikuti panduan berkontribusi. Ini berisi panduan untuk berkontribusi secara langsung dan meningkatkan permintaan fitur atau laporan bug. Harap patuhi kode etik kami saat melakukan hal-hal di atas.