使用 authorize.net 付款会出现错误 由于身份验证值无效,用户身份验证失败
Payment with authorize.net gives error User authentication failed due to invalid authentication values
我已经按照link支付了
https://github.com/AuthorizeNet/sdk-php
但响应 "User authentication failed due to invalid authentication values"。
该代码适用于开发人员,但不适用于开发人员,但不适用于真实账户。
require 'authorizesdk/vendor/autoload.php';
use net\authorize\api\contract\v1 as AnetAPI;
use net\authorize\api\controller as AnetController;
define("AUTHORIZENET_LOG_FILE","phplog");
/** Make sure that the WordPress bootstrap has run before continuing. */
require( dirname(__FILE__) . '/wp-load.php' );
global $wpdb;
if ( is_user_logged_in() ) {
$user_ID = get_current_user_id();
}
$creditcardno=$_POST['credit_card_number'];
$expdate=$_POST['year'].'-'.$_POST['month'];
$invoiceno=$_POST['x_invoice_num'];
$description=$_POST['x_description'];
$id=$_POST['x_id'];
$email=$_POST['x_email'];
//$creditcardno='';
//$expdate='16/06';
//$invoiceno=$_POST['x_invoice_num'];
//$description=$_POST['x_description'];
//$id=$_POST['x_id'];
//$email=$_POST['x_email'];
//44Wz7d8Zsr2F5zD6
// Common setup for API credentials
$merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
$merchantAuthentication->setName("5Tb3S44sLp");
$merchantAuthentication->setTransactionKey("****");
$refId = 'ref' . time();
// Create the payment data for a credit card
$creditCard = new AnetAPI\CreditCardType();
$creditCard->setCardNumber($_POST['credit_card_number']);
$creditCard->setExpirationDate( $expdate);
$paymentOne = new AnetAPI\PaymentType();
$paymentOne->setCreditCard($creditCard);
// Order info
$order = new AnetAPI\OrderType();
$order->setInvoiceNumber($invoiceno);
$order->setDescription($description);
// Customer info
$customer = new AnetAPI\CustomerDataType();
$customer->setId($id);
$customer->setEmail($mail);
// Bill To
$billto = new AnetAPI\CustomerAddressType();
$billto->setFirstName($_POST['credit_card_fname']);
$billto->setLastName($_POST['credit_card_lname']);
$billto->setCompany($_POST['x_company']);
$billto->setAddress($_POST['x_address']);
$billto->setCity($_POST['x_city']);
$billto->setState($_POST['x_state']);
$billto->setZip($_POST['x_zip']);
$billto->setCountry($_POST['x_country']);
// Create a transaction
$transactionRequestType = new AnetAPI\TransactionRequestType();
$transactionRequestType->setTransactionType("authCaptureTransaction");
// $transactionRequestType->setAmount($_POST['x_amount']);
$transactionRequestType->setAmount($_POST['x_amount']);
$transactionRequestType->setPayment($paymentOne);
$transactionRequestType->setOrder($order);
$transactionRequestType->setCustomer($customer);
$transactionRequestType->setBillTo($billto);
$request = new AnetAPI\CreateTransactionRequest();
$request->setMerchantAuthentication($merchantAuthentication);
$request->setRefId( $refId);
$request->setTransactionRequest($transactionRequestType);
$controller = new AnetController\CreateTransactionController($request);
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
echo '<pre>';
var_dump($response);exit;
我们需要为真实账户正确设置什么吗?
我明白了,这里的问题是您已经设置了实时 API 凭据,但是 API 环境仍然设置为沙箱,
为此,您需要更改
的最后 3 行
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
至
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
这将解决问题。
我已经按照link支付了 https://github.com/AuthorizeNet/sdk-php 但响应 "User authentication failed due to invalid authentication values"。 该代码适用于开发人员,但不适用于开发人员,但不适用于真实账户。
require 'authorizesdk/vendor/autoload.php';
use net\authorize\api\contract\v1 as AnetAPI;
use net\authorize\api\controller as AnetController;
define("AUTHORIZENET_LOG_FILE","phplog");
/** Make sure that the WordPress bootstrap has run before continuing. */
require( dirname(__FILE__) . '/wp-load.php' );
global $wpdb;
if ( is_user_logged_in() ) {
$user_ID = get_current_user_id();
}
$creditcardno=$_POST['credit_card_number'];
$expdate=$_POST['year'].'-'.$_POST['month'];
$invoiceno=$_POST['x_invoice_num'];
$description=$_POST['x_description'];
$id=$_POST['x_id'];
$email=$_POST['x_email'];
//$creditcardno='';
//$expdate='16/06';
//$invoiceno=$_POST['x_invoice_num'];
//$description=$_POST['x_description'];
//$id=$_POST['x_id'];
//$email=$_POST['x_email'];
//44Wz7d8Zsr2F5zD6
// Common setup for API credentials
$merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
$merchantAuthentication->setName("5Tb3S44sLp");
$merchantAuthentication->setTransactionKey("****");
$refId = 'ref' . time();
// Create the payment data for a credit card
$creditCard = new AnetAPI\CreditCardType();
$creditCard->setCardNumber($_POST['credit_card_number']);
$creditCard->setExpirationDate( $expdate);
$paymentOne = new AnetAPI\PaymentType();
$paymentOne->setCreditCard($creditCard);
// Order info
$order = new AnetAPI\OrderType();
$order->setInvoiceNumber($invoiceno);
$order->setDescription($description);
// Customer info
$customer = new AnetAPI\CustomerDataType();
$customer->setId($id);
$customer->setEmail($mail);
// Bill To
$billto = new AnetAPI\CustomerAddressType();
$billto->setFirstName($_POST['credit_card_fname']);
$billto->setLastName($_POST['credit_card_lname']);
$billto->setCompany($_POST['x_company']);
$billto->setAddress($_POST['x_address']);
$billto->setCity($_POST['x_city']);
$billto->setState($_POST['x_state']);
$billto->setZip($_POST['x_zip']);
$billto->setCountry($_POST['x_country']);
// Create a transaction
$transactionRequestType = new AnetAPI\TransactionRequestType();
$transactionRequestType->setTransactionType("authCaptureTransaction");
// $transactionRequestType->setAmount($_POST['x_amount']);
$transactionRequestType->setAmount($_POST['x_amount']);
$transactionRequestType->setPayment($paymentOne);
$transactionRequestType->setOrder($order);
$transactionRequestType->setCustomer($customer);
$transactionRequestType->setBillTo($billto);
$request = new AnetAPI\CreateTransactionRequest();
$request->setMerchantAuthentication($merchantAuthentication);
$request->setRefId( $refId);
$request->setTransactionRequest($transactionRequestType);
$controller = new AnetController\CreateTransactionController($request);
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
echo '<pre>';
var_dump($response);exit;
我们需要为真实账户正确设置什么吗?
我明白了,这里的问题是您已经设置了实时 API 凭据,但是 API 环境仍然设置为沙箱,
为此,您需要更改
的最后 3 行$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
至
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
这将解决问题。