| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package utility.wechat.wechatpay;
- import common.BaseClass;
- import common.YosException;
- import common.data.Row;
- import common.data.Rows;
- import common.data.db.DBConnect;
- import utility.wechat.WeChatHelper;
- import utility.wechat.wechatpay.POJO.*;
- import java.util.ArrayList;
- public class WechatPay extends BaseClass {
- private String appid;
- private WechatPay() {
- }
- /**
- * 构造函数,创建支付订单必须调用该构造函数
- *
- * @param systemclient 微信支付端名称
- * @throws YosException
- */
- public WechatPay(String systemclient) throws YosException {
- DBConnect dbConnect = new DBConnect();
- Rows rows = dbConnect.runSqlQuery("select appid,secret,mch_id from sys_wechatapp where systemclient='" + systemclient + "'");
- if (rows.isNotEmpty()) {
- this.appid = rows.get(0).getString("appid");
- }
- }
- /**
- * 创建一个微信小程序支付订单
- *
- * @param orderno 本地订单
- * @param trade_type APP、JSAPI、
- * @param openid 用户openid
- * @param custip 客户端IP地址
- * @param title 支付标题
- * @return
- */
- public String createPayOrder(String orderno, String trade_type, String openid, String custip, String title,int order_amount) throws YosException {
- /**
- * 开始创建微信支付订单
- */
- CreateOrderRequest order = new CreateOrderRequest();
- order.setAppid(this.appid);
- order.setBody(title);
- order.setMch_id(WeChatHelper.mch_id);
- order.setNotify_url(WeChatHelper.notify_url);//支付结果通知地址
- order.setOpenid(openid);
- order.setOut_trade_no(orderno+"J");
- order.setSpbill_create_ip(custip);
- order.setTotal_fee(order_amount);
- order.setTrade_type(trade_type);//APP、JSAPI、
- String response = order.getOrderResponseV3(WeChatHelper.mch_key,title);
- return response;
- }
- /**
- * 订单查询
- *
- * @param out_trade_no 商户订单号
- * @return
- */
- public void queryOrder(String out_trade_no) throws YosException {
- QueryOrderRequest queryOrderRequest = new QueryOrderRequest();
- queryOrderRequest.setAppid(WeChatHelper.appid);
- queryOrderRequest.setMch_id(WeChatHelper.mch_id);
- queryOrderRequest.setOut_trade_no(out_trade_no);
- updatePayOrder(queryOrderRequest.getOrder(WeChatHelper.mch_key));
- }
- /**
- * 订单关闭
- *
- * @param out_trade_no 商户订单号
- * @return
- */
- public CloseOrderResponse closeOrder(String out_trade_no) {
- CloseOrderRequest closeOrderRequest = new CloseOrderRequest();
- closeOrderRequest.setAppid(appid);
- closeOrderRequest.setMch_id(WeChatHelper.mch_id);
- closeOrderRequest.setOut_trade_no(out_trade_no);
- return closeOrderRequest.getOrderResponse(WeChatHelper.mch_key);
- }
- /**
- * 更新本地数据库的订单信息
- */
- public static boolean updatePayOrder(WechatOrder wechatOrder) throws YosException {
- WechatPay wechatPay = new WechatPay();
- String trade_state = wechatOrder.getTrade_state();
- String out_trade_no = wechatOrder.getOut_trade_no();
- Rows sys_payorderRows = wechatPay.dbConnect.runSqlQuery("select * from sys_payorder where orderno='" + out_trade_no + "'");
- for (Row sys_payorderRow : sys_payorderRows) {
- ArrayList<String> sqllist = new ArrayList<>();
- sqllist.add("update sys_payorder set wechatpayorder='" + wechatOrder + "' where orderno='" + out_trade_no + "'");
- if ("SUCCESS".equalsIgnoreCase(trade_state)) {
- sqllist.add("update sys_payorder set ispaid=1,paytime=" + wechatOrder.getTime_end() + " where orderno='" + out_trade_no + "'");
- }
- wechatPay.dbConnect.runSqlUpdate(sqllist);
- }
- return true;
- }
- }
|