如何从亚马逊供应商中心获取订单

时间:2018-12-19 08:22:09

标签: php laravel edi

有没有一种方法可以借助EDI获得订单。我试图将其与SFTP连接并获取一个文件。

AmazonConnectivityTest文件。但不知道如何使用EDI。

任何人都可以告诉我使用EDI的步骤是什么。无需使用第三方软件。

2 个答案:

答案 0 :(得分:2)

这完全取决于您自己的软件。 EDI(X12)是针对机器对机器使用的,您在SFTP上收到的文档不太容易被人阅读。因此,您将需要软件来 1.在SFTP上获取文件, 2.解释它,并 3.将其推入您的ERP。

如果您的ERP无法做到这一点,并且您没有可以自己使用的软件,那么您可能确实需要第三方来获取它,或将其转换为您自己的格式,或将其推送到您的ERP中。

答案 1 :(得分:0)

我曾经写过一个函数。它从服务器读取并下载了亚马逊文件,您可以使用数据以订单格式对其进行更改:

public function execute(Arguments $args, ConsoleIo $io)
{
    $conn = ssh2_connect('sftp-eu.amazonsedi.com', 2222);
    if (ssh2_auth_pubkey_file(
        $conn,
        '<your secret>',
       'address to id_rsa.pub',//same as you uploaded in amazon
        'address to  id_rsa'
    )) {
        echo "Public Key Authentication Successful\n";
        $sftp = ssh2_sftp($conn);

        if (!$dir = opendir("ssh2.sftp://$sftp"."/download/")) {
            die('Failed to open the directory.');
        }
        echo "dir open";
        $files = array();


        while (($file = readdir($dir)) !== false) {
            $files[]=$file;
        }
        closedir($dir);
        foreach ($files as $file) {
            echo "Copying file: TMP.AMAZON\n";
            if (!$remote = fopen("ssh2.sftp://$sftp/download/$file", 'r')) {
                echo "Failed to open remote file: $file\n";
                continue;
            }
            if (!$local = fopen(TMP."amazon/" . $file, 'w')) {
                echo "Failed to create local file: $file\n";
                continue;
            }
            $read = 0;
            $filesize = filesize("ssh2.sftp://$sftp/download/$file");
            while (($read < $filesize) && ($buffer = fread($remote, $filesize - $read))) {
                $read += strlen($buffer);
                if (fwrite($local, $buffer) === false) {
                    echo "Failed to write to local file: $file\n";
                    break;
                }
            }
            fclose($local);
            fclose($remote);
        }
    } else {
        die('Public Key Authentication Failed');
    }
}