相信從事電子商務(wù)軟件開(kāi)發(fā)的朋友對(duì)SHOP++網(wǎng)上商城軟件比較了解,本人近期也在研究SHOP++,并對(duì)shop++第三方支付插件開(kāi)發(fā)比較有深入了解,SHOP++第三方支付方式采用插件機(jī)制開(kāi)發(fā),擴(kuò)展新的第三方支付非常簡(jiǎn)單,下面是插件開(kāi)發(fā)的基本方法,大家可以參考一下:
1、參考并復(fù)制net.shopxx.plugin.alipayDirect包
2、重命名包名稱、插件類(AlipayDirectPlugin.java)名稱、配置控制器類(AlipayDirectController.java)名稱、配置視圖(setting.ftl)名稱
3、修改插件類的@Component注解值并保證其惟一
4、修改插件類實(shí)現(xiàn)方法,具體如下:
/**
* 獲取插件名稱
*/
public abstract String getName();
/**
* 獲取插件版本
*/
public abstract String getVersion();
/**
* 獲取插件作者
*/
public abstract String getAuthor();
/**
* 獲取插件網(wǎng)址
*/
public abstract String getSiteUrl();
/**
* 獲取安裝URL,管理后臺(tái)插件安裝鏈接地址,若不需要安裝功能返回null,若需要該功能,需編寫相應(yīng)配置控制器類
*/
public abstract String getInstallUrl();
/**
* 獲取卸載URL,管理后臺(tái)插件卸載鏈接地址,若不需要卸載功能返回null,若需要該功能,需編寫相應(yīng)配置控制器類
*/
public abstract String getUninstallUrl();
/**
* 獲取設(shè)置URL,管理后臺(tái)插件設(shè)置鏈接地址,若不需要設(shè)置功能返回null,若需要該功能,需編寫相應(yīng)配置控制器類
*/
public abstract String getSettingUrl();
/**
* 獲取請(qǐng)求URL,跳轉(zhuǎn)到第三方支付界面的URL
*/
public abstract String getRequestUrl();
/**
* 獲取請(qǐng)求方法,跳轉(zhuǎn)到第三方支付界面的請(qǐng)求方法
*/
public abstract RequestMethod getRequestMethod();
/**
* 獲取請(qǐng)求字符編碼,跳轉(zhuǎn)到第三方支付界面的字符編碼
*/
public abstract String getRequestCharset();
/**
* 獲取請(qǐng)求參數(shù),跳轉(zhuǎn)到第三方支付界面的請(qǐng)求參數(shù)
*
* @param sn
* 編號(hào)
* @param description
* 描述
* @param request
* httpServletRequest
* @return 請(qǐng)求參數(shù)
*/
public abstract Map<String, Object> getParameterMap(String sn, String description, HttpServletRequest request);
/**
* 驗(yàn)證通知是否合法,驗(yàn)證第三方支付完成后的返回結(jié)果是否合法
*
* @param sn
* 編號(hào)
* @param notifyMethod
* 通知方法
* @param request
* httpServletRequest
* @return 通知是否合法
*/
public abstract boolean verifyNotify(String sn, NotifyMethod notifyMethod, HttpServletRequest request);
/**
* 獲取通知返回消息,收到第三方支付完成后的返回結(jié)果的響應(yīng)
*
* @param sn
* 編號(hào)
* @param notifyMethod
* 通知方法
* @param request
* httpServletRequest
* @return 通知返回消息
*/
public abstract String getNotifyMessage(String sn, NotifyMethod notifyMethod, HttpServletRequest request);
/**
* 獲取超時(shí)時(shí)間,支付超時(shí)時(shí)間
*/
public abstract Integer getTimeout();