[英]Get amount from response in gateway-independent way
使用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 2.x並不專注於網關返回的數據的規范化。 您完全可以獨自查看原始數據並應用有關其含義的知識。
OmniPay 3.x確實有一個AmountInterface來標准化處理金額的方式(不再是字符串,整數或浮點數),因此有一個Amount
類代表處理的金額。 現在,將Amount
類用於輸入(請求消息)和輸出(已解析的響應消息)都意味着在數量上沒有任何歧義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.