Hướng dẫn how to generate random transaction id in php? - làm thế nào để tạo id giao dịch ngẫu nhiên trong php?

Tôi đang làm việc trên một giỏ hàng và một cổng thanh toán địa phương yêu cầu mỗi giao dịch phải có ID đơn hàng duy nhất. ID này được cho là được lưu trong cơ sở dữ liệu dựa trên các chi tiết đơn hàng và được gửi dưới dạng biến vào cổng thanh toán. Vấn đề nan giải của tôi là về cách tạo ID duy nhất và cách lưu nó trước khi gửi các biến của tôi đến cổng để tôi có thể kiểm tra xem nó có khớp khi nhận được phản hồi từ IPN của cổng không. Biến trong câu hỏi được hiển thị dưới đây:

$reference = $_POST['reference'];//unique order id of the transaction, generated by merchant

Hỏi ngày 8 tháng 8 năm 2013 lúc 8:52Aug 8, 2013 at 8:52

Hướng dẫn how to generate random transaction id in php? - làm thế nào để tạo id giao dịch ngẫu nhiên trong php?

1

Đây là cách tôi sử dụng để tạo khóa ngẫu nhiên, mặc dù bit dài của nó bạn có thể đạt được khóa ngẫu nhiên độc đáo.

$id.time().uniqid(mt_rand(),true)

uniqid () - Điều này sẽ tạo ra 13 ký tự uniqid

MT_RAND () - Tạo số ngẫu nhiên bằng cách sử dụng thuật toán Mersenne Twister và nhanh hơn gấp 4 lần Rand ()

uniqid (mt_rand ()) - tiền tố số tạo ngẫu nhiên với độc đáo

uniqid (mt_rand (), true) - Để có được ngẫu nhiên mạnh mẽ hơn, tôi đang kích hoạt entropy của uniqid bằng cách đặt tham số thứ hai thành 'true'

$ id.time (). uniqid (mt_rand (), true) - ở đây $ id có thể là userid, sản phẩm hoặc bất kỳ id nào bạn muốn chọn, thời gian () sẽ tạo dấu thời gian unix hiện tại (...)

Đã trả lời ngày 13 tháng 10 năm 2015 lúc 8:03Oct 13, 2015 at 8:03

1

Không sử dụng md5 () trên độc đáo (), nó thực sự sẽ lỏng lẻo về bảo mật. Để nối hoặc dự phòng giá trị md5 là ok.

Điều đó nói rằng tôi sẽ gắn bó với http://www.php.net/manual/en/pdo.lastin Nó nên là khá nhiều độc đáo.

Đã trả lời ngày 8 tháng 8 năm 2013 lúc 9:22Aug 8, 2013 at 9:22

Hướng dẫn how to generate random transaction id in php? - làm thế nào để tạo id giao dịch ngẫu nhiên trong php?

DexadexaDexa

1.64110 Huy hiệu bạc24 Huy hiệu đồng10 silver badges24 bronze badges

Nếu bạn thực sự muốn một ID duy nhất, đây là mã mà tôi đang sử dụng. Đơn giản này tạo ra chuỗi 7 ký tự và nếu nó đã tồn tại trong cơ sở dữ liệu -> tái tạo mới, cho đến khi nó độc đáo 100%. uniqid () không phải là ID thực sự duy nhất, bạn có thể đặt tiền tố của riêng bạn có thể được trộn với mã của tôi, nhưng một mình uniqid () với việc đặt nó vào base64 và md5 và sha1 và tôi không biết những gì khác không phải là duy nhất.

function randString($length, $charset='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789')
{
    $str = '';
    $count = strlen($charset);
    while ($length--) {
        $str .= $charset[mt_rand(0, $count-1)];
    }

    return $str;
}

$unique_id = randString(7);  
while(mysqli_num_rows(mysqli_query($con, "SELECT unique_id FROM table WHERE unique_id = '".mysqli_real_escape_string($con, $unique_id)."'")) > 0) { 
   $unique_id = randString(7);
}
//insert this id into database and use it

Đã trả lời ngày 8 tháng 8 năm 2013 lúc 9:06Aug 8, 2013 at 9:06

Hướng dẫn how to generate random transaction id in php? - làm thế nào để tạo id giao dịch ngẫu nhiên trong php?

Bên cạnh khóa chính của bảng đặt hàng, sự kết hợp của một chuỗi, năm, tháng, ngày và 4 chữ số số. có thể hữu ích.

ví dụ.

Đơn đặt hàng được đặt vào ngày 8 tháng 8 năm 2013 có thể có các số đơn hàng sau: OS201308080001 OS201308080002

Đơn đặt hàng được đặt vào ngày 9 tháng 8 năm 2013 có thể có các số đơn hàng sau: OS201308090001 OS201308090002 OS201308090003

Khi hệ điều hành có thể là tên ban đầu của tên cửa hàng của bạn, 4 chữ số tiếp theo là năm, 2 chữ số tiếp theo là tháng, 2 chữ số tiếp theo là ngày và 4 chữ số tiếp theo (bắt đầu từ 0001 mỗi ngày) có thể xác định số đơn đặt hàng mỗi ngày.

Đã trả lời ngày 8 tháng 8 năm 2013 lúc 9:02Aug 8, 2013 at 9:02

Tôi sẽ nói rằng cách tạo ID độc đáo nhất sẽ là sự kết hợp của dấu thời gian hiện tại (UNIX sử dụng Time ()) và sau đó nối và/hoặc chuẩn bị nó với một cái gì đó giống như tên người dùng người dùng hiện tại. Bằng cách này, gần như không thể tạo ra một bản sao. Bạn cũng có thể thêm ID được chèn cuối cùng. Theo tôi, sự kết hợp của ba người này là một phương pháp đơn giản và sẽ khiến cho các bản sao gần như không thể do thực tế là thời gian () sẽ thay đổi mỗi giây và người dùng rất khó có thể thêm 2 đơn hàng ở cùng một giây .

Đã trả lời ngày 8 tháng 8 năm 2013 lúc 10:22Aug 8, 2013 at 10:22

BenbenBen

881 Huy hiệu bạc12 Huy hiệu đồng1 silver badge12 bronze badges

Một cái gì đó dựa trên một bảng cơ sở dữ liệu của bạn? Một cột có auto_increment. Bạn có thể tìm nạp ID chèn cuối cùng bằng PDO với điều này: http://www.php.net/manual/en/pdo.lastinsertid.php

Hoặc một cái gì đó như

$reference = sha1(md5(time()));

Đã trả lời ngày 8 tháng 8 năm 2013 lúc 8:55Aug 8, 2013 at 8:55

1

Làm thế nào để tạo ID ngẫu nhiên trong PHP?

Hàm uniqid () tạo ra một id duy nhất dựa trên microtime (thời gian hiện tại tính bằng micro giây). Lưu ý: ID được tạo từ hàm này không đảm bảo tính duy nhất của giá trị trả về! Để tạo ra một cực kỳ khó dự đoán ID, hãy sử dụng hàm md5 (). (the current time in microseconds). Note: The generated ID from this function does not guarantee uniqueness of the return value! To generate an extremely difficult to predict ID, use the md5() function.

Làm thế nào để bạn tạo một ID giao dịch độc đáo?

Tạo ID duy nhất từ số giao dịch nếu không có ID tồn tại..
Nếu Oldid không trống và là duy nhất, hãy sử dụng Oldid ..
khác nếu giao dịch không phải là sử dụng trống Số giao dịch + phiên bản # của giao dịch (ví dụ: Hàng thứ 3 chứa 5555 sẽ nhận được ID 555503).
khác tiền tố cột với e và gán cho nó một số duy nhất được tăng lên ..

Làm cách nào để tìm ID giao dịch?

Trong nhiều trường hợp, khách hàng có thể tìm thấy ID giao dịch của họ trên biên lai hoặc hóa đơn của họ.Nó thường được liệt kê gần một loạt các thông tin quan trọng khác về một đơn đặt hàng, bao gồm ngày, thương gia, thông tin liên hệ của người bán hoặc số đơn đặt hàng.on their receipts or invoice. It's often listed near a variety of other critical information on an order, including the date, merchant, contact information of the merchant, or purchase order number.

ID thanh toán trông như thế nào?

Thông thường, chính bao gồm các số và chữ cái và trông giống như mã 12-18 chữ số.Nếu một chủ thẻ muốn theo dõi một khoản thanh toán cụ thể, ID giao dịch được yêu cầu.ID cũng cần thiết nếu người tiêu dùng có ý định hoàn lại tiền.a 12-18 digit code. If a cardholder wants to track a particular payment, the transaction ID is required. The ID is also needed if the consumer has an intention to request a refund.