以网关独立的方式从响应中获取金额



当使用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参数甚至可能在其他网关中调用不相同。

注意:我需要检索处理的金额,以验证它是否与请求的金额相同。如果omnipay可以保证它们是相同的,那么这将是不必要的,但我认为情况并非如此。

总之,OmniPay 2。X不关注网关返回的数据的规范化。你只能自己看原始数据,并运用你的知识来理解它的含义。

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

最新更新