【问题标题】:authorize.net laravel empty responseauthorize.net laravel 空响应
【发布时间】:2016-07-15 19:20:25
【问题描述】:

我正在尝试使用 PHP SDK 将 authorize.net 集成到我的 laravel 购物车中。我目前只在沙盒环境中。我让它处理交易(我可以在管理员中看到它并收到电子邮件),但返回的响应都是空值。

代码还是有点脏

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use net\authorize\api\contract\v1 as AnetAPI;
use net\authorize\api\controller as AnetController;

class PaymentController extends Controller
{
    //

    public function authnet_chargeCard()
    {

        $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
        $merchantAuthentication->setName(env('AUTHNET_ID'));
        $merchantAuthentication->setTransactionKey(env('AUTHNET_KEY'));

        $refId = 'ref' . time();
        define("AUTHORIZENET_LOG_FILE", "phplog");
        // Create the payment data for a credit card
        $creditCard = new AnetAPI\CreditCardType();
        $creditCard->setCardNumber("4111111111111111");
        $creditCard->setExpirationDate("1226");
        $creditCard->setCardCode("123");
        $paymentOne = new AnetAPI\PaymentType();
        $paymentOne->setCreditCard($creditCard);

        $order = new AnetAPI\OrderType();
        $order->setInvoiceNumber("COW-100");
        $order->setDescription("New Item");

        //create a transaction
        $amount=100;
        $transactionRequestType = new AnetAPI\TransactionRequestType();
        $transactionRequestType->setTransactionType( "authCaptureTransaction");
        $transactionRequestType->setAmount($amount);
        $transactionRequestType->setOrder($order);
        $transactionRequestType->setPayment($paymentOne);

        $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);
        //dd($response);

        if ($response != null)
        {
            $tresponse = $response->getTransactionResponse();

            if (($tresponse != null) && ($tresponse->getResponseCode()== \SampleCode\Constants::RESPONSE_OK) )
            {
                echo "Charge Credit Card AUTH CODE : " . $tresponse->getAuthCode() . "\n";
                echo "Charge Credit Card TRANS ID  : " . $tresponse->getTransId() . "\n";
            }
            else
            {
                echo  "Charge Credit Card ERROR :  Invalid response\n";
            }

        }
        else
        {
            echo  "Charge Credit card Null response returned";
        }


    }
}

每次我的回复都是这样的:

CreateTransactionResponse {#352 ▼
  -transactionResponse: null
  -profileResponse: null
  -refId: null
  -messages: null
  -sessionToken: null
}

我什至尝试过将 $VERIFY_PEER 临时设置为 false

【问题讨论】:

  • 另外...如果这有什么不同的话,我会在 laravel homestead vagrant build 上运行它。

标签: php laravel-5 authorize.net


【解决方案1】:

不知道我哪里出错了……清理了作曲家文件……更新了它,一切顺利。很抱歉浪费了虚拟空间和时间。

【讨论】:

    【解决方案2】:
    public function chargeCreditCard(Request $request)
        {
            // Common setup for API credentials
            $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
    
            $merchantAuthentication->setName(env('AUTHNET_ID'));
            $merchantAuthentication->setTransactionKey(env('AUTHNET_KEY'));
            $refId = 'ref'.time();
    
    // Create the payment data for a credit card
              $creditCard = new AnetAPI\CreditCardType();
              $creditCard->setCardNumber("4242424242424242");
              $creditCard->setExpirationDate( "2038-12");
              //$expiry = $request->card_expiry_year . '-' . $request->card_expiry_month;
              //$creditCard->setExpirationDate($expiry);
              $paymentOne = new AnetAPI\PaymentType();
              $paymentOne->setCreditCard($creditCard);
    
    // Create a transaction
              $transactionRequestType = new AnetAPI\TransactionRequestType();
              $transactionRequestType->setTransactionType("authCaptureTransaction");
              $transactionRequestType->setAmount($request->camount);
              $transactionRequestType->setPayment($paymentOne);
              $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);
              if ($response != null)
                {
                  $tresponse = $response->getTransactionResponse();
                  if ($tresponse != null)
                  { 
                    if($tresponse->getResponseCode() == 1 || $tresponse->getResponseCode() == 4 ){
                       if($tresponse->getResponseCode() == 4){
                         $authCode = "pending";
                       }else{
                         $authCode = $tresponse->getAuthCode();
                       }
                       $transId = $tresponse->getTransId();
                       $result = ['authCode' => $authCode, 'transId' => $transId];
                       $res = $this->transData($result);
                       if($res){
                         Session::flash('success', "The order is successfully placed!"); 
                         return redirect('/');
                       }
                    }else{
                       $response = $response->getTransactionResponse()->getErrors()[0]->getErrorText();
                       Session::flash('error', $response); 
                       return redirect('/');
                    }
                  }
                  else
                  {
                    echo  "Charge Credit Card Null response returned";
                  }
                }
                else
                {
                  echo  "Charge Credit Card Null response returned";
                }
    
          return redirect('/');
      }
    

    试试上面的代码,它对我有用。

    【讨论】:

    • “试试这个”并不是一个好的答案。你应该解释如何为什么这可以解决他们的问题。我推荐阅读,“How do I write a good answer?"
    • 好的,我会经历这个
    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2021-01-25
    • 2021-09-09
    相关资源
    最近更新 更多