Magento:通过soap获取事务ID

本文关键字:事务 ID 获取 soap 通过 Magento | 更新日期: 2023-09-27 18:28:29

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

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

salesOrderEntity类包含一个salesOrderPaymentEntity,它应该包含一个属性last_trans_id,但它没有
有人知道从哪里可以从支付信息中获得交易ID吗?我甚至没有在sharpdevel生成的代理代码中找到对last_trans_id的引用。

提前感谢您的任何建议。-chris-

Magento:通过soap获取事务ID

过了一段时间,我再次回答了这个问题,并找到了解决方案
salesOrderEntity包含salesOrderStatusHistoryEntity对象的列表
其中包含一个名为"comment"的字段,在我的情况下,可以通过类似的文本方式找到交易ID

交易ID:"800736757864…"

这对我有帮助。

Chris OP已经回答了这个问题,但只是为了给这个问答增加一些额外的价值;A这是我正在处理的代码。

作为背景,我使用交易ID的原因是因为它们被Paypal使用。我正在写一个cron作业,从Paypal API中提取前24小时的Paypal订单,然后我们通过SOAP从Magento提取前24个小时的所有订单,获取交易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;
        }
    } 
}