我正在使用萬事達卡支付網關。 所有工作正常,如果我硬編碼hash_hmac sha256的數據或字符串。如何將變量分配給hash_hmac sha256字符串或php中的數據?
的工作版本:
$vpcURL = 'https://migs.mastercard.com.au/vpcpay?';
$secret = strtoupper("MYSECRET CODE");
$data ="vpc_AccessCode=0E5AC9E6&vpc_Amount=1000&vpc_Command=pay&vpc_Locale=en&vpc_MerchTxnRef=TEST_TRN&vpc_Merchant=TESTSITE&vpc_OrderInfo=123&vpc_ReturnURL=https://www.examplesite.com/payment-confirmation/&vpc_Version=1";
$sha256_hmac = strtoupper(hash_hmac('sha256', $data, pack('H*', $secret)));
header("Location: " . $vpcURL . "&" . $data . "&vpc_SecureHash=" . $sha256_hmac."&vpc_SecureHashType=SHA256");
,但我不能硬編碼的值傳遞給vpc_Amount 我從一個表單,用戶可以輸入他們希望量越來越量。
所以我從得到的量:
$totalAmount = $_POST['totalAmount'];
現在我想這個$總金額傳遞到$數據。 所以我的$的數據改成這樣:
$data ="vpc_AccessCode=0E5AC9E6&vpc_Amount=$totalAmount&vpc_Command=pay&vpc_Locale=en&vpc_MerchTxnRef=TEST_TRN&vpc_Merchant=TESTSITE&vpc_OrderInfo=123&vpc_ReturnURL=https://www.examplesite.com/payment-confirmation/&vpc_Version=1";
當我用這個支付網關直接進入確認頁面:https://www.examplesite.com/payment-confirmation/
和所有的值都是空的。
我認爲這是一個簡單的錯誤了Syntex ..
我該如何解決這個問題? 如何正確傳遞$totalAmount
至$data
?
print_r ($data); gives this:
vpc_AccessCode=0E5AC9E6&vpc_Amount=58,258.00&vpc_Command=pay&vpc_Locale=en&vpc_MerchTxnRef=TEST_TRN&vpc_Merchant=TESTSITE&vpc_OrderInfo=123&vpc_ReturnURL=https://www.examplesite.com/payment-confirmation/?vpc_Version=1
UPDATE 如果我更新在確認頁面代碼
$real_integer_amount = filter_var($totalAmount, FILTER_SANITIZE_NUMBER_INT);
$data ="vpc_AccessCode=0E5BC9E7&vpc_Amount={$real_integer_amount}&vpc_Command=pay&vpc_Locale=en&vpc_MerchTxnRef=TEST_TRN&vpc_Merchant=TESTSITE&vpc_OrderInfo=123&vpc_ReturnURL=https://www.examplesite.com/payment-confirmation/?vpc_Version=1";
它顯示了真正的量和其他都是空的,但仍然不打算支付網關,其中用戶可以輸入他們的信用卡詳細信息
你可能想插入'{$ totalAmount}' – pvg
我看不到你的代碼中有任何語法錯誤。你有沒有收到任何錯誤信息?你有沒有檢查你的錯誤日誌?在對它進行散列並檢查它看起來是否正確之前,請回顯該字符串。 –
@pvg你能給你的建議檢查一下嗎? –