以与网关无关的方式从响应中获取金额

时间:2016-10-11 15:04:20

标签: php omnipay

使用Omnipay时,是否可以以与网关无关的方式从响应中检索已处理的金额?

例如,在使用Stripe网关时,我会authorize付款如下(authorize是一个示例,此问题适用于所有网关方法):

$options = [
    'amount' => '10.00',
    'currency' => 'EUR',
];

$response = $gateway->authorize($options)->send();

if ($response->isSuccessful()) {
    $data = $response->getData();

    $amount = $data['amount'] / 100;
}

由于Stripe以美分工作,我被迫除以100以获得与我在指定中相同单位的金额。

但是,并非所有网关都以分数运行,这意味着上面的代码不是与网关无关的。此外,amount参数在其他网关中甚至可能不会被称为相同。

注意:我需要检索已处理的金额,以验证它与请求的金额相同。如果无所不知可以保证它们是相同的,那么这是不必要的,但我不认为是这种情况。

1 个答案:

答案 0 :(得分:0)

简而言之,OmniPay 2.x不关注网关返回的数据的规范化。您可以自己查看原始数据并应用有关其含义的知识。

OmniPay 3.x确实有AmountInterface标准化处理金额的方式(不再是字符串或整数或浮点数),因此有一个Amount类表示处理的金额。对输入(请求消息)和输出(解析的响应消息)使用Amount类现在意味着数量意味着没有歧义。