In a controller, you can use the NMI
service as follows:
use App\Services\NMI;
class PaymentController extends Controller
{
protected $nmi;
public function __construct(NMI $nmi)
{
$this->nmi = $nmi;
}
public function storeCustomer(Request $request)
{
$creditCard = $request->only(['cc_number', 'exp_date', 'cvv']);
$customerVaultId = $this->nmi->addCustomerVault($creditCard);
return response()->json(['customer_vault_id' => $customerVaultId]);
}
public function processPayment(Request $request)
{
$customerVaultId = $request->input('customer_vault_id');
$amount = $request->input('amount');
$paymentResponse = $this->nmi->processPaymentUsingVault($customerVaultId, $amount);
return response()->json($paymentResponse);
}
}