Java开源:wepay-轻量的 Java 微信支付组件

4359hijx 3年前
   <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>