使用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
参数在其他网关中甚至可能不会被称为相同。
注意:我需要检索已处理的金额,以验证它与请求的金额相同。如果无所不知可以保证它们是相同的,那么这是不必要的,但我不认为是这种情况。
答案 0 :(得分:0)
简而言之,OmniPay 2.x不关注网关返回的数据的规范化。您可以自己查看原始数据并应用有关其含义的知识。
OmniPay 3.x确实有AmountInterface标准化处理金额的方式(不再是字符串或整数或浮点数),因此有一个Amount
类表示处理的金额。对输入(请求消息)和输出(解析的响应消息)使用Amount
类现在意味着数量意味着没有歧义。