我是Drupal的新手,我必须为ubercart编写一个新的自定义支付方法。我简单了解一下Drupal的钩子系统。
在ubercart api文档中,http://www.ubercart.org/docs/api/hook_payment_method
<?php
function uc_payment_payment_method() {
$methods[] = array(
'id' => 'check',
'name' => t('Check'),
'title' => t('Check or Money Order'),
'desc' => t('Pay by mailing a check or money order.'),
'callback' => 'uc_payment_method_check',
'weight' => 1,
'checkout' => TRUE,
);
return $methods;
}
?>然而,当我看一下paypal模块是如何实现的:
$methods[] = array(
'id' => 'paypal_wps',
'name' => t('PayPal Website Payments Standard'),
'title' => $title1 . $title2,
'review' => t('PayPal'),
'desc' => t('Redirect users to submit payments through PayPal.'),
'callback' => 'uc_payment_method_paypal_wps',
'redirect' => 'uc_paypal_wps_form',
'weight' => 1,
'checkout' => FALSE,
'no_gateway' => TRUE,
);有一些特殊的字段,如重定向和no_gateway。我在哪里可以找到这些字段的文档,以了解这些字段的实际作用?
非常感谢你的帮助。
发布于 2012-07-29 02:11:48
你也可以在http://api.ubercart.me/上查看Ubercart API文档。
但是我看到,对于hook_uc_payment_method(),除了您提到的文档之外,这里没有更多的信息。
以PayPal支付模块为例,我发现重定向回调指定了最终结帐按钮后面的代码,该按钮将重定向到非现场支付网关。
因此,uc_paypal_wps_form是在最终结帐按钮后面生成的表单。如果您使用Firebug检查呈现的结帐按钮元素,您将看到此函数生成的表单。
我还在我的博客http://nmc-codes.blogspot.ca/2012/07/how-to-create-custom-ubercart-payment.html上发布了一个例子
至于no_gateway选项,这是我在ubercart模块中找到的唯一一段引用它的代码:
if (empty($method['no_gateway'])) {
$gateways = _uc_payment_gateway_list($id, TRUE);
$options = array();
foreach ($gateways as $gateway_id => $gateway) {
$options[$gateway_id] = $gateway['title'];
}
if ($options) {
$form['pmtable'][$id]['uc_payment_method_' . $id . '_checkout']['#title'] .= ' (' . t('includes %gateways', array('%gateways' => implode(', ', $options))) . ')';
}
}当您在admin/store/settings/payment的付款方法管理列表中查看它时,它似乎没有什么作用,只是添加到付款方法的标签/标题中
https://stackoverflow.com/questions/11702923
复制相似问题