当使用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
类现在意味着数量的含义没有歧义。