|
@@ -11,8 +11,12 @@ import com.hboxs.entity.*;
|
|
import com.hboxs.entity.Order;
|
|
import com.hboxs.entity.Order;
|
|
import com.hboxs.joinpay.entity.Mch;
|
|
import com.hboxs.joinpay.entity.Mch;
|
|
import com.hboxs.service.*;
|
|
import com.hboxs.service.*;
|
|
|
|
+import com.paytm.pg.merchant.CheckSumServiceHelper;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
+import org.springframework.http.HttpStatus;
|
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.stereotype.Controller;
|
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
@@ -53,6 +57,153 @@ public class OrderController extends BaseController {
|
|
@Resource(name = "priceServiceImpl")
|
|
@Resource(name = "priceServiceImpl")
|
|
private PriceService priceService;
|
|
private PriceService priceService;
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 印度paytm支付
|
|
|
|
+ * @param
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @GetMapping("/paytmpay")
|
|
|
|
+ public Map<String,String> paytmpay( String type ) {
|
|
|
|
+ /* initialize an object */
|
|
|
|
+ JSONObject paytmParams = new JSONObject();
|
|
|
|
+
|
|
|
|
+ /* body parameters */
|
|
|
|
+ JSONObject body = new JSONObject();
|
|
|
|
+ if(type.equals("SMS")){
|
|
|
|
+ body.put("sendSms", true);
|
|
|
|
+ }else{
|
|
|
|
+ body.put("sendEmail", true);
|
|
|
|
+ }
|
|
|
|
+ Double amount = 0.10;
|
|
|
|
+ body.put("amount", amount);
|
|
|
|
+ /* Find your MID in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys */
|
|
|
|
+ JSONObject customerContact = new JSONObject();
|
|
|
|
+ customerContact.put("customerEmail", "520283710@qq.com");
|
|
|
|
+ customerContact.put("customerMobile", "9910215225");
|
|
|
|
+ body.put("customerContact", customerContact);
|
|
|
|
+ body.put("statusCallbackUrl", "http://app.sunzee.com.cn/api/order/paytmNotify.htm");
|
|
|
|
+ body.put("mid", "WorldP64425807474247");
|
|
|
|
+
|
|
|
|
+ /* Possible value are "GENERIC", "FIXED", "INVOICE" */
|
|
|
|
+ body.put("linkType", "LINK_TYPE");
|
|
|
|
+
|
|
|
|
+ /* Enter your choice of payment link description here, special characters are not allowed */
|
|
|
|
+ body.put("linkDescription", "PAYMENT LINK DESCRIPTION");
|
|
|
|
+
|
|
|
|
+ /* Enter your choice of payment link name here, special characters and spaces are not allowed */
|
|
|
|
+ body.put("linkName", "PAYMENTLINKNAME");
|
|
|
|
+ String result = "";
|
|
|
|
+/**
|
|
|
|
+ * Generate checksum by parameters we have in body
|
|
|
|
+ * You can get Checksum JAR from https://developer.paytm.com/docs/v1/payment-gateway/#code
|
|
|
|
+ * Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
|
|
|
|
+ */
|
|
|
|
+ String checksum2="";
|
|
|
|
+ try {
|
|
|
|
+ String checksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum("kbzk1DSbJiV_O3p5", body.toString());
|
|
|
|
+
|
|
|
|
+ /* head parameters */
|
|
|
|
+ JSONObject head = new JSONObject();
|
|
|
|
+ Long startTs = System.currentTimeMillis(); // 当前时间戳
|
|
|
|
+ /* This will be AES */
|
|
|
|
+ Long yiu=new Long(9000l);
|
|
|
|
+ Long cd=new Long(startTs);
|
|
|
|
+ Long d=cd-yiu;
|
|
|
|
+// Long time = startTs-yiu;
|
|
|
|
+ head.put("timestamp", d);
|
|
|
|
+ head.put("tokenType", "AES");
|
|
|
|
+
|
|
|
|
+ /* put generated checksum value here */
|
|
|
|
+ head.put("signature", checksum);
|
|
|
|
+
|
|
|
|
+ /* prepare JSON string for request */
|
|
|
|
+ paytmParams.put("body", body);
|
|
|
|
+ paytmParams.put("head", head);
|
|
|
|
+ String post_data = paytmParams.toString();
|
|
|
|
+
|
|
|
|
+ /* for Staging */
|
|
|
|
+ URL url = new URL("https://securegw-stage.paytm.in/link/create");
|
|
|
|
+
|
|
|
|
+ /* for Production */
|
|
|
|
+// URL url = new URL("https://securegw.paytm.in/link/create);
|
|
|
|
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
|
|
|
+ connection.setRequestMethod("POST");
|
|
|
|
+ connection.setRequestProperty("Content-Type", "application/json");
|
|
|
|
+ connection.setDoOutput(true);
|
|
|
|
+
|
|
|
|
+ DataOutputStream requestWriter = new DataOutputStream(connection.getOutputStream());
|
|
|
|
+ requestWriter.writeBytes(post_data);
|
|
|
|
+ requestWriter.close();
|
|
|
|
+ String responseData = "";
|
|
|
|
+ InputStream is = connection.getInputStream();
|
|
|
|
+ BufferedReader responseReader = new BufferedReader(new InputStreamReader(is));
|
|
|
|
+ checksum2 = checksum;
|
|
|
|
+ if ((responseData = responseReader.readLine()) != null) {
|
|
|
|
+ result=responseData;
|
|
|
|
+ System.out.append("Response: " + responseData);
|
|
|
|
+ }
|
|
|
|
+ // System.out.append("Request: " + post_data);
|
|
|
|
+ responseReader.close();
|
|
|
|
+ } catch (Exception exception) {
|
|
|
|
+ exception.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
|
+ if(result.length()>240){
|
|
|
|
+ map.put("result",result.substring(0,240));
|
|
|
|
+ }else {
|
|
|
|
+ map.put("result",result);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ map.put("checksum2",checksum2);
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ /**
|
|
|
|
+ * 支付成功回调
|
|
|
|
+ *
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @RequestMapping(value = "/paytmNotify", method = RequestMethod.GET)
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public Object refunda(HttpServletRequest request) {
|
|
|
|
+
|
|
|
|
+// String r6_Status = request.getParameter("r6_Status");
|
|
|
|
+ try {String paytmChecksum = null;
|
|
|
|
+
|
|
|
|
+ /* Create a TreeMap from the parameters received in POST */
|
|
|
|
+ TreeMap<String, String> paytmParams = new TreeMap<String, String>();
|
|
|
|
+ for (Map.Entry<String, String[]> requestParamsEntry : request.getParameterMap().entrySet()) {
|
|
|
|
+ if ("CHECKSUMHASH".equalsIgnoreCase(requestParamsEntry.getKey())){
|
|
|
|
+ paytmChecksum = requestParamsEntry.getValue()[0];
|
|
|
|
+ } else {
|
|
|
|
+ paytmParams.put(requestParamsEntry.getKey(), requestParamsEntry.getValue()[0]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ PromoCode promoCode = new PromoCode();
|
|
|
|
+ promoCode.setUseBy(paytmParams.toString().substring(0,240));
|
|
|
|
+ promoCode.setUserName(paytmChecksum);
|
|
|
|
+ promoCode.setCreateDate(new Date());
|
|
|
|
+ promoCode.setModifyDate(new Date());
|
|
|
|
+ promoCodeService.save(promoCode);
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Verify checksum
|
|
|
|
+ * Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
|
|
|
|
+ */
|
|
|
|
+ boolean isValidChecksum = CheckSumServiceHelper.getCheckSumServiceHelper().verifycheckSum("kbzk1DSbJiV_O3p5", paytmParams, paytmChecksum);
|
|
|
|
+ if (isValidChecksum) {
|
|
|
|
+ System.out.append("Checksum Matched");
|
|
|
|
+ } else {
|
|
|
|
+ System.out.append("Checksum Mismatched");
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception exception) {
|
|
|
|
+ exception.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return "success";
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 请求在线支付
|
|
* 请求在线支付
|
|
*
|
|
*
|