我正在开发一个扩展,将第三方API集成到Magento中。包括的步骤是填写我们网站上的表格。当用户单击submit时,API将在其站点上预填写表单,然后由用户批准该表单。一些get字符串变量被发送到我们站点上的页面,这将触发第二个API调用(在后台)来检索令牌。一旦创建令牌我然后保存标记第二个隐藏表单并提交通过这个函数:
function submitAccount() {
var formId = 'form-payment-submit';
var myForm = new VarienForm(formId, true);
var postUrl = '<?php echo $this->getUrl('marketplacepayment/marketplaceaccount/paymentsetup/') ?>';
if (myForm.validator.validate()) {
new Ajax.Updater(
{ success:console.log("form success") }, postUrl, {
method:'post',
asynchronous:false,
evalScripts:false,
onComplete:function(request, json) {
//submitButtonOn();
alert('success!');
},
parameters: $(formId).serialize(true),
}
);
}
}
我的模块中的函数然后处理将值保存到数据库:
public function paymentsetupAction(){
if(!(empty($_POST['access']))){
// save tokens to db
$collection = Mage::getModel('marketplace/userprofile')->getCollection();
$collection->addFieldToFilter('mageuserid',array('eq'=>$_POST['userid']));
foreach($collection as $row){
$id=$row->getAutoid();
}
$collectionload = Mage::getModel('marketplace/userprofile')->load($id);
$collectionload->setaccesstoken($_POST['access']);
$collectionload->setrefreshtoken($_POST['refresh']);
$collectionload->setstripekey($_POST['key']);
$collectionload->save();
Mage::getSingleton('core/session')->addSuccess( Mage::helper('marketplace')->__('Your payment information has been sucessfully saved.'));
$this->_redirect('marketplacepayment/marketplaceaccount/payment');
}
}
问题是令牌未被保存但不出现错误。我不能写任何信息的页面,因为提交是通过AJAX,所以我在如何调试的损失。你发现付款设置有什么问题吗?或者有没有更简单的方法让我明白为什么它不起作用?
问题是$collection部分-我使用了错误的数据库列名:
$collectionload = Mage::getModel('marketplace/userprofile')->load($id);
$collectionload->setaccess_token($_POST['access']);
$collectionload->setrefresh_token($_POST['refresh']);
$collectionload->setstripe_key($_POST['key']);
$collectionload->save();
很抱歉随机提出一个不重要的问题。