|
@@ -7,6 +7,7 @@ import com.fdkankan.pay.entity.Order;
|
|
|
import com.fdkankan.pay.entity.PaypalConfig;
|
|
|
import com.fdkankan.pay.entity.WxConfig;
|
|
|
import com.fdkankan.pay.exception.BusinessException;
|
|
|
+import com.fdkankan.pay.service.IOrderService;
|
|
|
import com.fdkankan.pay.service.IPaypalConfigService;
|
|
|
import com.fdkankan.pay.util.CacheUtil;
|
|
|
import com.fdkankan.pay.util.UrlUtils;
|
|
@@ -20,16 +21,14 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.io.BufferedReader;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.InputStreamReader;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.net.HttpURLConnection;
|
|
|
import java.net.URL;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Log4j2
|
|
|
@Service
|
|
@@ -37,6 +36,8 @@ public class PaypalService {
|
|
|
|
|
|
@Autowired
|
|
|
IPaypalConfigService paypalConfigService;
|
|
|
+ @Autowired
|
|
|
+ IOrderService orderService;
|
|
|
|
|
|
public Object openPay(Order param, String ip) throws Exception {
|
|
|
|
|
@@ -78,6 +79,60 @@ public class PaypalService {
|
|
|
throw new BusinessException(ResultCode.PAYPAL_ERROR);
|
|
|
}
|
|
|
|
|
|
+ public void callBack(HttpServletRequest request, HttpServletResponse response, Order order) {
|
|
|
+
|
|
|
+ log.info("ali-callBack--order:{}",order);
|
|
|
+ Boolean payFlag = false;
|
|
|
+ String trade_no = null;
|
|
|
+ String openId = null;
|
|
|
+ try {
|
|
|
+ Enumeration en = request.getParameterNames();
|
|
|
+ String str = "cmd=_notify-validate";
|
|
|
+ while (en.hasMoreElements()) {
|
|
|
+ String paramName = (String) en.nextElement();
|
|
|
+ String paramValue = request.getParameter(paramName);
|
|
|
+ try {
|
|
|
+ str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue, "utf-8");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ StringWriter trace=new StringWriter();
|
|
|
+ e.printStackTrace(new PrintWriter(trace));
|
|
|
+ log.error(trace.toString());
|
|
|
+ }
|
|
|
+ //此处的编码一定要和自己的网站编码一致,不然会出现乱码,paypal回复的通知为‘INVALID’
|
|
|
+ }
|
|
|
+ final String itemName = request.getParameter("item_name");//商品名
|
|
|
+ final String itemNumber = request.getParameter("item_number");//购买数量
|
|
|
+ final String paymentDate = request.getParameter("payment_date");//交易时间
|
|
|
+ final String receiverEmail = request.getParameter("receiver_email");//收款人email
|
|
|
+ final String payerEmail = request.getParameter("payer_email");//付款人email
|
|
|
+ final String paymentAmount = request.getParameter("mc_gross");//交易钱数
|
|
|
+ final String paymentCurrency = request.getParameter("mc_currency");//货币种类
|
|
|
+ final String paymentStatus = request.getParameter("payment_status");//交易状态
|
|
|
+ final String txnId = request.getParameter("txn_id");//交易id
|
|
|
+ String custom = request.getParameter("custom");//发送payment请求时候自定义的业务服务器订单号
|
|
|
+ log.info("paypal回调参数:itemName:{},itemNumber:{},paymentDate:{},receiverEmail:{}," +
|
|
|
+ "payerEmail:{},paymentAmount:{},paymentCurrency:{},paymentStatus:{},txnId:{},custom:{}",
|
|
|
+ itemName,itemNumber,paymentDate,receiverEmail,payerEmail,paymentAmount,paymentCurrency,paymentStatus,txnId,custom);
|
|
|
+
|
|
|
+ trade_no = txnId;
|
|
|
+ openId = payerEmail;
|
|
|
+ if ("Completed".equals(paymentStatus)) {
|
|
|
+ //根据自己业务进行处理(修改订单状态,支付时间等等操作)
|
|
|
+ try {
|
|
|
+ log.info("paypal支付成功回调");
|
|
|
+ //表示续费,有消费记录id
|
|
|
+ payFlag = true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("paypal支付回调异常,errorMsg:{}", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }catch (Exception e) {
|
|
|
+ log.error("paypal支付回调异常,errorMsg:{}", e.getMessage());
|
|
|
+ }finally {
|
|
|
+ orderService.payResult(order.getOrderId(),payFlag,trade_no,openId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
/**
|