Opencart 支付必填字段处理问题
Opencart payment required fields processing issue
有人可以告诉我 Opencart authorizenet_aim 的验证发生在哪里吗?它似乎正在检查 cc_number 和过期时间,但我找不到它。
我已经使用 $json['error']
数组在 payment/authorizenet_aim.php
中添加了错误检查,但仍然弹出 alert()
,上面写着 [object Object]
.
controller/payment/authorizenet_aim.php:
public function send() {
$json = array();
$data = array();
$this->language->load('payment/authorizenet_aim');
if(isset($this->request->post['cc_owner']) && '' == $this->request-post['cc_owner']) {
$json['error']['cc_owner'] = $this->language->get('error_cc_owner');
} else {
$json['error']['cc_owner'] = '';
}
if(isset($this->request->post['cc_number']) && '' == $this->request->post['cc_number']) {
$json['error']['cc_number'] = $this->language->get('error_cc_number');
} else {
$json['error']['cc_number'] = '';
}
if(isset($this->request->post['cc_cvv2']) && '' == $this->request->post['cc_cvv2']) {
$json['error']['cc_cvv2'] = $this->language->get('error_cc_cvv2');
} else {
$json['error']['cc_cvv2'] = '';
}
if(!isset($json['error']['cc_owner']) && !isset($json['error']['cc_number']) && !isset($json['error']['cc_cvv2'])) {
...//curl
}
$this->response->setOutput(json_encode($json));
}
template/payment/authorizenet_aim.tpl
<script>
$('#button-confirm').bind('click', function() {
...
success: function() {
if(json['error']) {
if(json['error']['cc_owner']) {
$('input[name=cc_owner]').after('<span class="error">' + json['error']['cc_owner']);
...
}
获得风滚草徽章后,我想我最好赎回自己并解决这个问题。以下是基础知识:
catalog/controller/payment/authorizenet_aim.php/send:
$json = array();
$this->language->load('payment/authorizenet_aim');
if(!isset($this->request->post['cc_owner']) || '' == $this->request->post['cc_owner']) {
$json['error']['cc_owner'] = $this->language->get('error_cc_owner');
}
if(!isset($this->request->post['cc_number']) || '' == $this->request->post['cc_number']) {
$json['error']['cc_number'] = $this->language->get('error_cc_number');
}
if(!isset($this->request->post['cc_cvv2']) || '' == $this->request->post['cc_cvv2']) {
$json['error']['cc_cvv2'] = $this->language->get('error_cc_cvv2');
}
...
if(!isset($json['error']['cc_owner']) && !isset($json['error']['cc_number']) && !isset($json['error']['cc_cvv2'])) {
$curl = curl_init($url);
...
curl_close($curl);
}
$this->response->setOutput(json_encode($json));
catalog/view/theme/mytheme/template/payment/authorizenet_aim.tpl:
$('#button-confirm').bind('click', function() {
$('span.error').remove();
$.ajax({
...
success: function() {
if (json['error']) {
if(json['error']['cc_owner'] || json['error']['cc_number'] || json['error']['cc_cvv2']) {
var error_msg = "You have missed some required fields:\n";
if (json['error']['cc_owner']) {
$('input[name=cc_owner]').after('<span class="error" style="display:inline-table;margin-left:12px;font-size:small;">' + json['error']['cc_owner']);
error_msg += "- " + json['error']['cc_owner'] + "\n";
}
if (json['error']['cc_number']) {
$('input[name=cc_number]').after('<span class="error" style="display:inline-table;margin-left:12px;font-size:small;">' + json['error']['cc_number']);
error_msg += "- " + json['error']['cc_number'] + "\n";
}
if (json['error']['cc_cvv2']) {
$('input[name=cc_cvv2]').after('<span class="error" style="display:inline-table;margin-left:12px;font-size:small;">' + json['error']['cc_cvv2']);
error_msg += "- " + json['error']['cc_cvv2'] + "\n";
}
alert(error_msg);
} else {
alert(json['error']);
}
}
...
我正在研究其他 Luhn 等,但这是一个好的开始。
有人可以告诉我 Opencart authorizenet_aim 的验证发生在哪里吗?它似乎正在检查 cc_number 和过期时间,但我找不到它。
我已经使用 $json['error']
数组在 payment/authorizenet_aim.php
中添加了错误检查,但仍然弹出 alert()
,上面写着 [object Object]
.
controller/payment/authorizenet_aim.php:
public function send() {
$json = array();
$data = array();
$this->language->load('payment/authorizenet_aim');
if(isset($this->request->post['cc_owner']) && '' == $this->request-post['cc_owner']) {
$json['error']['cc_owner'] = $this->language->get('error_cc_owner');
} else {
$json['error']['cc_owner'] = '';
}
if(isset($this->request->post['cc_number']) && '' == $this->request->post['cc_number']) {
$json['error']['cc_number'] = $this->language->get('error_cc_number');
} else {
$json['error']['cc_number'] = '';
}
if(isset($this->request->post['cc_cvv2']) && '' == $this->request->post['cc_cvv2']) {
$json['error']['cc_cvv2'] = $this->language->get('error_cc_cvv2');
} else {
$json['error']['cc_cvv2'] = '';
}
if(!isset($json['error']['cc_owner']) && !isset($json['error']['cc_number']) && !isset($json['error']['cc_cvv2'])) {
...//curl
}
$this->response->setOutput(json_encode($json));
}
template/payment/authorizenet_aim.tpl
<script>
$('#button-confirm').bind('click', function() {
...
success: function() {
if(json['error']) {
if(json['error']['cc_owner']) {
$('input[name=cc_owner]').after('<span class="error">' + json['error']['cc_owner']);
...
}
获得风滚草徽章后,我想我最好赎回自己并解决这个问题。以下是基础知识:
catalog/controller/payment/authorizenet_aim.php/send:
$json = array();
$this->language->load('payment/authorizenet_aim');
if(!isset($this->request->post['cc_owner']) || '' == $this->request->post['cc_owner']) {
$json['error']['cc_owner'] = $this->language->get('error_cc_owner');
}
if(!isset($this->request->post['cc_number']) || '' == $this->request->post['cc_number']) {
$json['error']['cc_number'] = $this->language->get('error_cc_number');
}
if(!isset($this->request->post['cc_cvv2']) || '' == $this->request->post['cc_cvv2']) {
$json['error']['cc_cvv2'] = $this->language->get('error_cc_cvv2');
}
...
if(!isset($json['error']['cc_owner']) && !isset($json['error']['cc_number']) && !isset($json['error']['cc_cvv2'])) {
$curl = curl_init($url);
...
curl_close($curl);
}
$this->response->setOutput(json_encode($json));
catalog/view/theme/mytheme/template/payment/authorizenet_aim.tpl:
$('#button-confirm').bind('click', function() {
$('span.error').remove();
$.ajax({
...
success: function() {
if (json['error']) {
if(json['error']['cc_owner'] || json['error']['cc_number'] || json['error']['cc_cvv2']) {
var error_msg = "You have missed some required fields:\n";
if (json['error']['cc_owner']) {
$('input[name=cc_owner]').after('<span class="error" style="display:inline-table;margin-left:12px;font-size:small;">' + json['error']['cc_owner']);
error_msg += "- " + json['error']['cc_owner'] + "\n";
}
if (json['error']['cc_number']) {
$('input[name=cc_number]').after('<span class="error" style="display:inline-table;margin-left:12px;font-size:small;">' + json['error']['cc_number']);
error_msg += "- " + json['error']['cc_number'] + "\n";
}
if (json['error']['cc_cvv2']) {
$('input[name=cc_cvv2]').after('<span class="error" style="display:inline-table;margin-left:12px;font-size:small;">' + json['error']['cc_cvv2']);
error_msg += "- " + json['error']['cc_cvv2'] + "\n";
}
alert(error_msg);
} else {
alert(json['error']);
}
}
...
我正在研究其他 Luhn 等,但这是一个好的开始。