# ymate-payment-v2 **Repository Path**: davidmr/ymate-payment-v2 ## Basic Information - **Project Name**: ymate-payment-v2 - **Description**: 基于YMP框架实现的第三方支付接入模块,目前已实现支付宝、微信和银联支付等; - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://www.ymate.net/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 40 - **Created**: 2017-06-15 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### YMP-Payment v2 基于YMP框架实现的第三方支付接入模块,目前已实现: |名称|状态| |---|---| |支付宝|测试通过| |微信支付|整理中| |银联支付|整理中|; #### 支付宝 (AliPay) ##### Maven包依赖 ``` net.ymate.payment ymate-payment-alipay 2.0.0 ``` ##### 使用方法说明 - 实现支付事件处理器接口`net.ymate.payment.alipay.IAliPayEventHandler`,示例代码如下: ``` public class AliPayEventHandler implements IAliPayEventHandler { private static final Log _LOG = LogFactory.getLog(AliPayEventHandler.class); /** * @param orderId 订单Id * @param attach 附加信息 * @return 创建PC支付请求接口参数对象 * @throws Exception 可能产生任何异常 */ public TradePagePayData buildTradePagePayData(String orderId, String attach) throws Exception { TradePagePayData _data = new TradePagePayData(UUIDUtils.UUID(), "99.99", "捐赠订单"); _data.setPassbackParams(attach); // return _data; } /** * @param orderId 订单Id * @param attach 附加信息 * @return 创建WAP支付请求接口参数对象 * @throws Exception 可能产生任何异常 */ public TradeWapPayData buildTradeWapPayData(String orderId, String attach) throws Exception { return new TradeWapPayData(UUIDUtils.UUID(), "99.99", "捐赠订单"); } public void onNotifyReceived(AliPayBaseNotify notifyData) throws Exception { _LOG.debug("接收到异步通知消息: " + JSON.toJSONString(notifyData)); } public IView onReturnCallback(AliPayBaseReturn returnData) throws Exception { String _jsonStr = JSON.toJSONString(returnData); _LOG.debug("接收到同步通知消息: " + _jsonStr); // return View.jsonView(_jsonStr); } public void onExceptionCaught(Throwable cause) throws Exception { _LOG.error("发生了异常: ", cause); } } ``` - 请求支付,访问URL地址格式如下: PC端支付: ``` http://<域名>/payment/alipay/<支付宝APP_ID>/page?state=<订单编号>&attach=<附加信息> ``` 移动端支付: ``` http://<域名>/payment/alipay/<支付宝APP_ID>/wap?state=<订单编号>&attach=<附加信息> ``` URL参数说明: - 支付宝APP_ID:支付宝分配给开发者的应用ID,必选参数; > 若模块中配置`默认支付宝开发者帐户ID`或使用`默认账户提供者`,则可以直接使用`default`访问; - 订单编号:业务订单唯一标识,必选参数; > 该参数将被传递至支付事件处理接口的`buildTradePagePayData`或`buildTradeWapPayData`方法; - 附加信息:该参数值将被原样返回; - 异步通知,访问URL地址格式如下: ``` http://<域名>/payment/alipay/notify ``` - 同步跳转通知,访问URL地址格式如下: ``` http://<域名>/payment/alipay/callback ``` ##### 模块接口方法说明 - 创建支付请求: ``` // PC端支付: AliPay.get().tradePagePay("<订单编号>", "<附加信息>").build().executeActionForm(); // WAP端支付: AliPay.get().tradeWapPay("<订单编号>", "<附加信息>").build().executeActionForm(); ``` - 统一收单线下交易查询: ``` AliPayTradeQuery.Response _query = AliPay.get() .tradeQuery("<支付宝APP_ID>", "", "") .build().execute(); ``` - 统一收单交易退款: ``` AliPayTradeRefund.Response _refund = AliPay.get() .tradeRefund("<支付宝APP_ID>", new TradeRefundData("", "", "99.00")) .build().execute(); ``` - 统一收单交易退款查询: ``` AliPayTradeRefundQuery.Response _refundQuery = AliPay.get() .tradeRefundQuery("<支付宝APP_ID>", "", "", "")) .build().execute(); ``` - 统一收单交易关闭: ``` AliPayTradeClose.Response _close = AliPay.get() .tradeClose("<支付宝APP_ID>", "", "")) .build().execute(); ``` - 查询对账单下载地址: ``` AliPayBillDownloadUrlQuery.Response _download = AliPay.get() .billDownloadUrlQuery("<支付宝APP_ID>", "", "")) .build().execute(); ``` ##### 模块配置参数说明 ``` #------------------------------------- # payment.alipay 模块初始化参数 #------------------------------------- # 支付接口网关URL地址, 默认值: https://openapi.alipay.com/gateway.do ymp.configs.payment.alipay.gateway_url= # 支付宝开发者账户提供者接口实现类, 若未提供则使用默认配置 ymp.configs.payment.alipay.account_provider_class= # 支付事件处理器, 必选参数 ymp.configs.payment.alipay.event_handler_class= # 默认支付宝开发者帐户ID, 默认值: 若采用账户提供者接口默认实现时取值默认应用ID, 否则为空 ymp.configs.payment.alipay.default_account_id= # 禁用报文签名验证(验签), 默认值: false ymp.configs.payment.alipay.sign_check_disabled= #------------------------------------- # 默认支付宝开发者账户配置参数 #------------------------------------- # 支付宝分配给开发者的应用ID ymp.configs.payment.alipay.app_id= # 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 ymp.configs.payment.alipay.sign_type= # 私钥 ymp.configs.payment.alipay.private_key= # 公钥 ymp.configs.payment.alipay.public_key= # 请求使用的编码格式 ymp.configs.payment.alipay.charset= # 返回格式 ymp.configs.payment.alipay.format= # 支付宝服务器主动通知商户服务器里指定的页面HTTP/HTTPS路径 ymp.configs.payment.alipay.notify_url= # 同步返回地址,HTTP/HTTPS开头字符串 ymp.configs.payment.alipay.return_url= ``` #### 微信支付 (WxPay) > 正在整理中...,请稍后! #### 银联支付 (UnionPay) > 正在整理中...,请稍后! #### One More Thing YMP不仅提供便捷的Web及其它Java项目的快速开发体验,也将不断提供更多丰富的项目实践经验。 感兴趣的小伙伴儿们可以加入 官方QQ群480374360,一起交流学习,帮助YMP成长! 了解更多有关YMP框架的内容,请访问官网:http://www.ymate.net/