Php Omnipay请求/响应(PxPay)中的存储订单ID

Php Omnipay请求/响应(PxPay)中的存储订单ID,php,payment-gateway,payment,omnipay,Php,Payment Gateway,Payment,Omnipay,当通过Omnipay(我正在使用PxPay网关)将用户重定向到购买页面时,如何为我自己的系统添加某种参考 基本上,我希望根据付款存储订单ID,因此当用户(或通知)返回时,我可以处理订单。PxPay支持传入多个参数,然后再次传出。您应该仔细阅读,它清楚地定义了哪些字段是必需的/可选的,哪些数据类型或限制适用,以及它们应该用于什么 您可以将字段txnda1、txnda2、txnda3用于任何自定义属性,以及应用于订单ID的MerchantReference,如示例所示。本质上,一旦事务完成,您在这些

当通过Omnipay(我正在使用PxPay网关)将用户重定向到购买页面时,如何为我自己的系统添加某种参考


基本上,我希望根据付款存储订单ID,因此当用户(或通知)返回时,我可以处理订单。

PxPay支持传入多个参数,然后再次传出。您应该仔细阅读,它清楚地定义了哪些字段是必需的/可选的,哪些数据类型或限制适用,以及它们应该用于什么


您可以将字段
txnda1
txnda2
txnda3
用于任何自定义属性,以及应用于订单ID的
MerchantReference
,如示例所示。本质上,一旦事务完成,您在这些字段中传递的任何信息都将被传递回您

以下是对PxPay 2.0的请求示例:

<GenerateRequest>
    <PxPayUserId>your_user_id</PxPayUserId>
    <PxPayKey>foobar1234</PxPayKey>
    <TxnType>Purchase</TxnType>
    <AmountInput>1.23</AmountInput>
    <CurrencyInput>NZD</CurrencyInput>
    <MerchantReference>YOUR_ORDER_ID_HERE</MerchantReference>
    <TxnData1>Custom data field 1</TxnData1>
    <TxnData2>Custom data field 2</TxnData2>
    <TxnData3>Custom data field 3</TxnData3>
    <UrlSuccess>http://stackoverflow.com</UrlSuccess>
    <UrlFail>http://facepalm.com</UrlFail>
</GenerateRequest>

您的\u用户\u id
foobar1234
购买
,您将在生成PxPay请求的类中找到这一行:

public function getData()
{
    $this->validate('amount', 'returnUrl');

    $data = new SimpleXMLElement('<GenerateRequest/>');
    $data->PxPayUserId = $this->getUsername();
    $data->PxPayKey = $this->getPassword();
    $data->TxnType = $this->action;
    $data->AmountInput = $this->getAmount();
    $data->CurrencyInput = $this->getCurrency();
    $data->MerchantReference = $this->getDescription(); // here's your field
    $data->UrlSuccess = $this->getReturnUrl();
    $data->UrlFail = $this->getReturnUrl();

    return $data;
}
公共函数getData()
{
$this->validate('amount','returnUrl');
$data=新的SimpleXMLElement(“”);
$data->PxPayUserId=$this->getUsername();
$data->PxPayKey=$this->getPassword();
$data->TxnType=$this->action;
$data->AmountInput=$this->getAmount();
$data->CurrencyInput=$this->getCurrency();
$data->MerchantReference=$this->getDescription();//这是您的字段
$data->UrlSuccess=$this->getReturnUrl();
$data->UrlFail=$this->getReturnUrl();
返回$data;
}

因此,当前代码似乎只支持
MerchantReference
字段,尽管我相信您可以添加自己对其他字段的支持。把它交给GitHub-当然其他人也会喜欢它。

是的,我了解PxPay中的
txndax
字段,但我正在寻找一种多网关方法。每个网关方法都是不同的。如果你在寻找一种多网关方法,您需要构建一个更高级别的支付网关处理包装器,以便在顶部工作,并在每次内部与适当的网关API代码进行通信“poli功能”、“pxpay功能”、“贝宝功能”。。。。您永远不必为其编写不同的代码each@Dagon我最近也建了一个。即使您不需要立即使用包装器,也最好现在就构建它,以备将来使用。如果PaymentExpress开始通过屋顶收费,您想换成EGAT或其他什么?最好现在就写,嗯,不需要太多额外的开发<代码>商品参考
作为“说明”显示给用户,不是吗?订单ID实际上不适合这种情况(因为人类可读的描述会更好。@说真的,请阅读文档(第11页):
商户参考号在交易响应中返回,可由商户网站进行解释。商户参考号字段的常见用途是发票和订单号。这是一个可选字段。
您也可以对您的订单ID使用
TxnId
。TxnId是您想要的,是否存在o使用Omnipay?Petah-更新的答案设置
TxnId
,看起来您可能需要添加自己对
TxnId
的支持,但是
MerchantReference
已经存在了