Magento:通过soap获取交易ID

时间:2013-08-21 08:00:21

标签: c# web-services soap wsdl magento-1.7

我最近尝试通过magentos SOAPv2适配器连接到magento网上商店 Sharpdevelop确实生成了一些获得WSDL的c#包装器 我可以登录并查询订单,但是当谈到付款方式时,我想知道为什么没有办法获得交易ID。 这是我试过的:

salesOrderEntity ent = ms.salesOrderInfo(mlogin,"<my_order_id>");

salesOrderEntity类包含salesOrderPaymentEntity,其中应包含属性last_trans_id,但不包含。{1}} 有谁知道从付款信息中获取交易ID的位置?我甚至没有在sharpdevelop生成的代理代码中找到对last_trans_id的引用。

提前感谢任何建议。 -Chris -

2 个答案:

答案 0 :(得分:1)

过了一段时间后,我再次提出这个问题,并在我的案例中找到了解决方案 salesOrderEntity包含salesOrderStatusHistoryEntity对象的列表 那些包含一个名为'comment'的字段,在我的情况下,事务ID可以通过文本方式找到,如

  

交易ID:“800736757864 ......”

这帮助了我。

答案 1 :(得分:0)

克里斯OP已经回答了这个问题,但只是为这个Q&amp; A增加了一些额外的价值,这里是我工作的代码。

作为一些背景,我使用交易ID的原因是因为它们被Paypal使用。我在前24小时编写了一份从Paypal API中提取Paypal订单的cron作业,然后我们在过去的24小时内通过SOAP从Magento获取所有订单,获取交易ID并将其与Paypal列表进行匹配。确保没有不在Magento上的Paypal订单,偶尔我们会收到IPN失败,这会导致Magento报价被转换为订单而客户需要通过Paypal收费,但没有产品作为订单发送给他们永远不会创造。如果不匹配,则会向客户服务发送电子邮件警报。

$startDate = gmdate('Y-m-d H:i:s', strtotime('-1 day', time()));

$complex_params =array(
    array('key'=>'created_at','value'=>array('key' =>'from','value' => $startDate)) 
);

$result = $client_v2->salesOrderList($session_id, array('complex_filter' => $complex_params));


// We've got all the orders, now we need to run through them and get the transaction id from the order info

// We create an array just to hold the transaction Ids
$ikoTransactionIds = array();

foreach ($result as $invoice) {

    $invoiceInfo = $client_v2->salesOrderInfo($session_id, $invoice->increment_id);

    $history = $invoiceInfo->status_history;

    $comments = $history[0]->comment;

    // Only the Paypal based records have transaction Ids in the comments, orders placed via credit card do not. In these cases $comments are null
    if ($comments) {

        // Check if the text 'Transaction ID:' exists at all
        if ((strpos($comments, "Transaction ID:")) !== FALSE) { 

            list($before, $transactionId) = explode('Transaction ID: ', $comments);

            // Remove the trailing period
            $transactionId = rtrim($transactionId ,".");

            // Remove the quotes
            $transactionId = str_replace('"', '', $transactionId);

            // We add the id to our array of ids for this Magento install
            $ikoTransactionIds[] = $transactionId;

        }

    } 

}