Я использую метод оплаты кредитной картой в виде полоски для веб-сайта в моем магазине magento и разрабатываю мобильное приложение. Я разрабатываю API с использованием родного magento API. Возникла проблема при создании API заказа, все до добавления оплаты за полосу кредитной карты работает нормально, но когда я нажимаю API создания заказа, это выдает исключение.
«Несоответствие номера кредитной карты с исключением типа кредитной карты»
Ниже приведен код API. Пожалуйста, поделитесь своими знаниями по этому вопросу. Заранее спасибо.
$proxy = new SoapClient($this->_client); //soap handle
$sessionId = $proxy->login($this->_apiuser, $this->_apikey);
$resultCustomerAddresses = $proxy->call($sessionId, "cart_customer.addresses", array($shoppingCartId, $arrAddresses));
if ($resultCustomerAddresses != TRUE)
{
return json_encode(array('status' => 0, 'result' => array(),'message' => 'Error in saving address'));
}
$resultShippingMethods = $proxy->call($sessionId, "cart_shipping.list", array($shoppingCartId));
$randShippingMethodIndex = rand(0, count($resultShippingMethods)-1 );
$shippingMethod = $resultShippingMethods[$randShippingMethodIndex]["code"];
$resultShippingMethod = $proxy->call($sessionId, "cart_shipping.method", array($shoppingCartId, $shipping_method));
//$resultTotalOrder = $proxy->call($sessionId,'cart.totals',array($shoppingCartId));
$paymentMethod = array(
"method" => $payment_method
);
$resultPaymentMethod = $proxy->call($sessionId, "cart_payment.method", array($shoppingCartId, $payment_method));
$licenseForOrderCreation = null;
$resultOrderCreation = $proxy->call($sessionId,"cart.order",array($shoppingCartId, null, $licenseForOrderCreation));
У меня была такая же проблема, и я успешно ее решил, смотрите ответ: https://stackoverflow.com/a/41948259/1052675
По сути, вы предоставляете информацию о карте, прежде чем сохранить цитату. Он проверит карту на соответствие шаблонам регулярных выражений и настроенным лимитам покупок и убедится, что вы можете использовать способ оплаты.
Тогда он забудет информацию об оплате.
Поэтому, прежде чем вы скажете, чтобы он отправил заказ, вам нужно снова предоставить информацию о карте.
Моим решением была пользовательская конечная точка для простоты в приложении переднего плана, и это позволило мне сохранить информацию о карте в памяти, чтобы повторно сохранить между сохранением предложения и отправкой заказа.
Других решений пока нет …