【问题标题】:how to get the orders from the amazon vendor center如何从亚马逊供应商中心获取订单
【发布时间】:2019-05-19 16:53:47
【问题描述】:

有没有办法在 EDI 的帮助下获得订单。我已尝试将其与 SFTP 连接并获取一个文件。

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

谁能告诉我使用 EDI 的步骤是什么。无需使用第三方软件。

【问题讨论】:

  • 如果您是 EDI 世界的新手,那么这款免费软件将非常有助于理解纯 edi 文本文件:liaison.com/products/integrate/edi-notepad
  • 没有第三方软件就无法使用 EDI,您必须自学 X12。学习 X12 不值得您花时间,但值得您花时间与 EDI 软件供应商联系。

标签: php laravel edi


【解决方案1】:

这完全取决于您自己的软件。 EDI (X12) 是针对机器对机器使用的,您将在 SFTP 上收到的文档不是人类可读的。所以你需要软件来 1. 获取 SFTP 上的文件, 2. 解释它,并且 3. 将其推送到您的 ERP 中。

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

【讨论】:

    【解决方案2】:

    我写了一个函数。它从服务器读取和下载亚马逊文件,您可以使用数据以您的订单格式更改它:

    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');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 2010-12-19
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      相关资源
      最近更新 更多