Java开源:wepay-轻量的 Java 微信支付组件
4359hijx
8年前
<h2>Wepay</h2> <h2>轻量的微信支付组件(A Lightweight Wechat Pay Component)</h2> <ul> <li> <p>包引入:</p> <pre> <code class="language-java"><dependency> <groupId>me.hao0</groupId> <artifactId>wepay-core</artifactId> <version>1.2.4</version> </dependency></code></pre> </li> <li> <p>依赖包,注意引入项目时是否需要 <strong>exclude</strong> :</p> <pre> <code class="language-java"><dependency> <groupId>me.hao0</groupId> <artifactId>common</artifactId> <version>1.1.2</version> </dependency></code></pre> </li> <li> <p>基本用法:</p> <pre> <code class="language-java">Wepay wepay = WepayBuilder .newBuilder(appId, appKey, mchId) .config1(...) // 其他可选配置 ... .build(); wepay.module().api();</code></pre> </li> <li> <p>已实现的组件:</p> <ul> <li>支付 pay() ;</li> <li>退款 refund() ;</li> <li>订单 order() ;</li> <li>通知 notify() ;</li> <li>账单 bill() 。</li> </ul> </li> <li> <p>关于测试:</p> <ul> <li> <p>测试用例中 是一些基本测试,需作一些配置:</p> <pre> <code class="language-java">// 在test/reources目录中配置dev.properties // 包括appId(APP ID), appKey(支付密钥), mchId(商户号) Properties props = new Properties(); InputStream in = Object.class.getResourceAsStream("/dev.properties"); props.load(in); in.close(); // 配置证书,退款需要证书,不配置可测试除退款的接口 Path path = Paths.get("/path/to/your_cert.p12"); byte[] data = Files.readAllBytes(path); wepay = WepayBuilder.newBuilder( props.getProperty("appId"), props.getProperty("appKey"), props.getProperty("mchId")) .certPasswd(props.getProperty("mchId")) .certs(data) .build();</code></pre> </li> <li> <p>wepay-demo 项目是一个可运行web项目,方便测试,可按如下步骤进行测试,复制 <a href="/misc/goto?guid=4959735420615399142" rel="nofollow,noindex">wepay-demo</a> 中的 app-example.properties 为 app.properties ,并作相应配置:</p> <pre> <code class="language-java"># 微信app id appId= # 微信支付key appKey= # 商户号 mchId= # 支付通知url payNotifyUrl=${your_domain}/notifies/paid</code></pre> </li> <li> <p>注意: <strong> payNotifyUrl </strong> 应该配置为微信服务器可以外网调用的地址,本地测试建议使用 ngrok 工具来作本地外网映射。</p> </li> <li> <p>到 wepay-demo 根目录运行以下命令即可:</p> <pre> <code class="language-java">mvn clean jetty:run -Dmaven.test.skip -Djetty.port={自定义端口号}</code></pre> </li> <li> <p>动态二维码支付可访问( 请求正常后,会出现由联图生成的二维码图片,用微信扫描支付成功后,后台会得到对应通知 Notifies ):</p> <pre> <code class="language-java">http://localhost:{port}/pays/qrpay?orderNumber={自定义订单号}</code></pre> </li> <li> <p>退款可访问( <strong>提交成功后,微信会有消息通知</strong> ):</p> <pre> <code class="language-java">http://localhost:{port}/refunds/apply?orderNumber={商户订单号} ```</code></pre> </li> </ul> </li> <li> <p>相关文档:</p> <ul> <li>微信支付文档 。</li> </ul> </li> <li> <p>历史版本:</p> <ul> <li> <p>1.0.0:</p> <ul> <li>基本功能实现。</li> </ul> </li> <li> <p>1.1.0:</p> <ul> <li>增加账单查询。</li> </ul> </li> <li> <p>1.1.1:</p> <ul> <li>修复prepayId。</li> </ul> </li> <li> <p>1.1.2:</p> <ul> <li>修复JS/APP支付签名问题。</li> </ul> </li> <li> <p>1.2.2:</p> <ul> <li>增加退款查询字段: 退款状态, 退款金额, 退款入账方。</li> </ul> </li> <li> <p>1.2.3:</p> <ul> <li>fix isNullOrEmpty。</li> </ul> </li> <li> <p>1.2.4:</p> <ul> <li>升级common至1.1.2, 可配置解析微信XML的编码类型, 默认为UTF-8, 防止与本地默认编码不一致。</li> </ul> </li> </ul> </li> <li> <p>相关组件:</p> <ul> <li><a href="/misc/goto?guid=4959735420702087962" rel="nofollow,noindex">支付宝支付组件</a> ;</li> <li><a href="/misc/goto?guid=4959735420781309128" rel="nofollow,noindex">微信公众号组件</a> 。</li> </ul> </li> </ul> <p> </p> <p> </p>