微信は学習ノートの呼び出しcomを支払う.github.binarywang.wxpay.サービスインタフェース

2733 ワード

    :https://github.com/binarywang

手順:
  • HttpServeretRequestをipに変換
            /**
    	 *       ip
    	 * @param httpservletrequest
    	 * @return
    	 */
    	public static String getClientIP(HttpServletRequest httpservletrequest) {
    	    if (httpservletrequest == null)
    	        return null;
    	    String s = httpservletrequest.getHeader("X-Forwarded-For");
    	    if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
    	        s = httpservletrequest.getHeader("Proxy-Client-IP");
    	    if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
    	        s = httpservletrequest.getHeader("WL-Proxy-Client-IP");
    	    if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
    	        s = httpservletrequest.getHeader("HTTP_CLIENT_IP");
    	    if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
    	        s = httpservletrequest.getHeader("HTTP_X_FORWARDED_FOR");
    	    if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
    	        s = httpservletrequest.getRemoteAddr();
    	    return s;
    	}
  • WeChatをカプセル化して単一インタフェースを統一し、「前払取引セッションID」が返される結果を取得WxPayUnifiedOrderResult
    
        public WxPayUnifiedOrderRequest toPayInfo(String clientIp) {
            WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
            request.setDeviceInfo("WEB");//   
            request.setBody(this.getProductName());//    
            request.setOutTradeNo(this.getOrderNo());//     
            request.setDetail(this.getProductName());//    
            request.setTotalFee(this.getPrice());//   |  
            request.setSpbillCreateIp(clientIp);//  IP
            request.setNotifyUrl(this.getNotifyUrl());//      
            request.setTradeType("JSAPI");//    
            request.setProductId(this.getProductId().toString());//  id
            request.setOpenid(this.getOpenId());
            return request;
        }
  • WxPayServiceインタフェースを呼び出すcreateOrder
      /**
       *         ,             .
       *
       * @param         {@link com.github.binarywang.wxpay.bean.order}    
       * @param request         
       * @return    {@link com.github.binarywang.wxpay.bean.order}      
       * @throws WxPayException the wx pay exception
       */
       T createOrder(WxPayUnifiedOrderRequest request) throws WxPayException;
    //      request   ,    ,    
    WxPayMpOrderResult result = payService.createOrder(wxPayUnifiedOrderRequest);
  • 返された結果を処理してフロントエンドに戻す
  • コールバック関数の処理呼び出しWxPayServiceのparseOrderNotifyResultメソッド
    WxPayOrderNotifyResult parseOrderNotifyResult(String xmlData) throws WxPayException;