提交 f2d64b98 authored 作者: zgy's avatar zgy

手机注册,登录修改

上级 9f8b3749
...@@ -256,6 +256,32 @@ ...@@ -256,6 +256,32 @@
<artifactId>pay-java-paypal</artifactId> <artifactId>pay-java-paypal</artifactId>
<version>2.12.8</version> <version>2.12.8</version>
</dependency> </dependency>
<dependency>
<groupId>com.paypal.sdk</groupId>
<artifactId>rest-api-sdk</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -77,6 +77,7 @@ public class LoginController extends BaseController { ...@@ -77,6 +77,7 @@ public class LoginController extends BaseController {
tbCfUserInfoService.getUserPhoneCode(phone); tbCfUserInfoService.getUserPhoneCode(phone);
return new Result("Verification code has been sent"); return new Result("Verification code has been sent");
} }
@ApiOperation("第三方登录") @ApiOperation("第三方登录")
@PostMapping("/thirdParty") @PostMapping("/thirdParty")
// TODO // TODO
......
...@@ -34,34 +34,17 @@ public class PayPalController { ...@@ -34,34 +34,17 @@ public class PayPalController {
return payPalService.payForOrder(orderId); return payPalService.payForOrder(orderId);
} }
@PostMapping("/success") @GetMapping("/success")
public Result payForSuccess(HttpServletRequest request,@RequestParam("orderId") String orderId){ public Result payForSuccess(HttpServletRequest request,@RequestParam("orderId") String orderId){
return payPalService.payForSuccess(request,orderId); return payPalService.payForSuccess(request,orderId);
} }
@RequestMapping("/testPay")
public Result testPay(){
try{
PayPalConfigStorage storage = new PayPalConfigStorage();
storage.setClientID("AWbyqn1AKJeVvzNsYms_9fs_LVr5_w5Xyt8nX5q0Wmqoq0NYCZf2wyz9DDeA5ArsWx0LFBwl5Oz6amD2");
storage.setClientSecret("EFhRjCBzhtI1lf88Xiy3VF07gVpu1vWk0VheSP3n5J0fhQxA6Pu7j89dbyYTLj3FxqiJBOlxQRKG_58e");
//storage.setTest(true);
//发起付款后的页面转跳地址
storage.setReturnUrl("http://127.0.0.1:8083/pay/success");
//取消按钮转跳地址,这里用异步通知地址的兼容的做法
storage.setNotifyUrl("http://127.0.0.1:8083/pay/cancel");
HttpConfigStorage httpConfigStorage = new HttpConfigStorage();
PayService service = new PayPalPayService(storage); @GetMapping("/cancel")
BigDecimal price = new BigDecimal("500"); public Result cancelPay(){
PayOrder order = new PayOrder("Order_payment:", "Order payment", price, UUID.randomUUID().toString().replace("-", ""), PayPalTransactionType.sale);
Map orderInfo = service.orderInfo(order); return new Result().setMessage("订单支付已取消");
service.buildRequest(orderInfo, MethodType.POST);
}catch (Exception e){
return new Result().setMessage(e.getMessage());
}
return new Result().setMessage("付款成功!");
} }
} }
package com.diaoyun.zion.chinafrica.service.impl; package com.diaoyun.zion.chinafrica.service.impl;
import com.diaoyun.zion.chinafrica.constant.KeyConstant; import com.diaoyun.zion.chinafrica.constant.KeyConstant;
import com.diaoyun.zion.chinafrica.dao.TbCfOrderDao;
import com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity;
import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum;
import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum;
import com.diaoyun.zion.chinafrica.service.PayPalService; import com.diaoyun.zion.chinafrica.service.PayPalService;
import com.diaoyun.zion.chinafrica.vo.TbCfOrderVo; import com.diaoyun.zion.chinafrica.vo.TbCfOrderVo;
import com.diaoyun.zion.master.base.Result; import com.diaoyun.zion.master.base.Result;
...@@ -25,6 +29,7 @@ import javax.annotation.Resource; ...@@ -25,6 +29,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
...@@ -35,6 +40,8 @@ public class PayPalServiceImpl implements PayPalService { ...@@ -35,6 +40,8 @@ public class PayPalServiceImpl implements PayPalService {
@Resource @Resource
private RedisCache<Object> orderRedisCache; private RedisCache<Object> orderRedisCache;
private static Logger logger = LoggerFactory.getLogger(TbCfOrderServiceImpl.class); private static Logger logger = LoggerFactory.getLogger(TbCfOrderServiceImpl.class);
@Autowired
private TbCfOrderDao tbCfOrderDao;
@Override @Override
@Transactional @Transactional
...@@ -57,8 +64,10 @@ public class PayPalServiceImpl implements PayPalService { ...@@ -57,8 +64,10 @@ public class PayPalServiceImpl implements PayPalService {
BigDecimal realityPay = tbCfOrderVo.getRealityPay(); BigDecimal realityPay = tbCfOrderVo.getRealityPay();
PayOrder order = new PayOrder("Order_payment:", "Order payment", realityPay, UUID.randomUUID().toString().replace("-", ""), PayPalTransactionType.sale); PayOrder order = new PayOrder("Order_payment:", "Order payment", realityPay, UUID.randomUUID().toString().replace("-", ""), PayPalTransactionType.sale);
Map orderInfo = service.orderInfo(order); Map orderInfo = service.orderInfo(order);
service.buildRequest(orderInfo, MethodType.POST); String request = service.buildRequest(orderInfo, MethodType.POST);
result.setMessage(ResultCodeEnum.SUCCESS.getDesc()); result.setData(request);
} else {
result.setCode(ResultCodeEnum.SERVICE_ERROR.getCode()).setMessage("订单不存在!");
} }
} catch (Exception e) { } catch (Exception e) {
result.setCode(ResultCodeEnum.SERVICE_ERROR.getCode()).setMessage(e.getMessage()); result.setCode(ResultCodeEnum.SERVICE_ERROR.getCode()).setMessage(e.getMessage());
...@@ -109,4 +118,17 @@ public class PayPalServiceImpl implements PayPalService { ...@@ -109,4 +118,17 @@ public class PayPalServiceImpl implements PayPalService {
String orderIdAndCouponId = tbCfOrderVo.getOrderId() + ":" + tbCfOrderVo.getUserId() + ":" + couponId; String orderIdAndCouponId = tbCfOrderVo.getOrderId() + ":" + tbCfOrderVo.getUserId() + ":" + couponId;
orderRedisCache.delete(KeyConstant.ORDER_EXP + orderIdAndCouponId); orderRedisCache.delete(KeyConstant.ORDER_EXP + orderIdAndCouponId);
} }
private void changeOrderState(String payId, TbCfOrderVo oldOrder) {
//更改订单状态
TbCfOrderEntity tbCfOrder = new TbCfOrderEntity();
tbCfOrder.setOrderId(oldOrder.getOrderId());
tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setDealTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfOrder.setPayId(payId);
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder);
}
} }
...@@ -214,9 +214,10 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService { ...@@ -214,9 +214,10 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService {
@Override @Override
public Result<TbCfUserInfoVo> registerByPhone(TbCfUserInfoVo tbCfUserInfoVo,String code) { public Result<TbCfUserInfoVo> registerByPhone(TbCfUserInfoVo tbCfUserInfoVo,String code) {
String phone="+"+tbCfUserInfoVo.getPhone();
Result result = new Result(); Result result = new Result();
TbCfUserInfoEntity user = tbCfUserInfoDao.checkUserByPhone(tbCfUserInfoVo.getPhone()); TbCfUserInfoEntity user = tbCfUserInfoDao.checkUserByPhone(phone);
String phoneCode = (String) captchaRedisCache.get(KeyConstant.CAPTCHA_PHONE + tbCfUserInfoVo.getPhone()); String phoneCode = (String) captchaRedisCache.get(KeyConstant.CAPTCHA_PHONE + phone);
if(code==null||!code.equals(phoneCode)){ if(code==null||!code.equals(phoneCode)){
result.setCode(ResultCodeEnum.VALIDATE_ERROR.getCode()); result.setCode(ResultCodeEnum.VALIDATE_ERROR.getCode());
result.setMessage("Verification code error"); result.setMessage("Verification code error");
...@@ -230,6 +231,7 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService { ...@@ -230,6 +231,7 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService {
tbCfUserInfoVo.setNick(nick); tbCfUserInfoVo.setNick(nick);
tbCfUserInfoVo.setAccount(tbCfUserInfoVo.getPhone()); tbCfUserInfoVo.setAccount(tbCfUserInfoVo.getPhone());
tbCfUserInfoVo.setUserType(UserTypeEnum.PHONE.getCode()); tbCfUserInfoVo.setUserType(UserTypeEnum.PHONE.getCode());
tbCfUserInfoVo.setPhone(phone);
fillUserNecessayInfo(tbCfUserInfoVo); fillUserNecessayInfo(tbCfUserInfoVo);
//加密密码 //加密密码
String password = passwordEncoder.encode(tbCfUserInfoVo.getPassword()); String password = passwordEncoder.encode(tbCfUserInfoVo.getPassword());
...@@ -279,7 +281,7 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService { ...@@ -279,7 +281,7 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService {
} }
} }
public Result loginByPhone(String ip,String phoneNum,String code){ public Result loginByPhone(String ip,String phoneNum,String code){
String phone=phoneNum.trim(); String phone="+"+phoneNum.trim();
Result result=new Result(); Result result=new Result();
TbCfUserInfoEntity user = tbCfUserInfoDao.checkUserByPhone(phone); TbCfUserInfoEntity user = tbCfUserInfoDao.checkUserByPhone(phone);
String phoneCode = (String) captchaRedisCache.get(KeyConstant.CAPTCHA_PHONE + phone); String phoneCode = (String) captchaRedisCache.get(KeyConstant.CAPTCHA_PHONE + phone);
...@@ -294,9 +296,10 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService { ...@@ -294,9 +296,10 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService {
} }
public String getUserPhoneCode(String phone) throws IOException { public String getUserPhoneCode(String phone) throws IOException {
phone="+"+phone.trim();
SMSUtil smsUtil = new SMSUtil(); SMSUtil smsUtil = new SMSUtil();
String code = smsUtil.yzCode(phone); String code = smsUtil.yzCode(phone);
captchaRedisCache.set(KeyConstant.CAPTCHA_PHONE + phone, code, 1800); captchaRedisCache.set(KeyConstant.CAPTCHA_PHONE + phone, code, 300);
return code; return code;
} }
/** /**
......
package com.diaoyun.zion.master.config;
import com.paypal.base.rest.APIContext;
import com.paypal.base.rest.OAuthTokenCredential;
import com.paypal.base.rest.PayPalRESTException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class PaypalConfig {
@Value("${paypal.client.app}")
private String clientId;
@Value("${paypal.client.secret}")
private String clientSecret;
@Value("${paypal.mode}")
private String mode;
@Bean
public Map<String, String> paypalSdkConfig(){
Map<String, String> sdkConfig = new HashMap<>();
sdkConfig.put("mode", mode);
return sdkConfig;
}
@Bean
public OAuthTokenCredential authTokenCredential(){
return new OAuthTokenCredential(clientId, clientSecret, paypalSdkConfig());
}
/**
* 这里不能用Bean注入(Bean注入只有一个实例会出现订单请求图重复的问题)
* @return
* @throws PayPalRESTException
*/
public APIContext apiContext() throws PayPalRESTException{
APIContext apiContext = new APIContext(authTokenCredential().getAccessToken());
apiContext.setConfigurationMap(paypalSdkConfig());
return apiContext;
}
}
package com.diaoyun.zion.master.config;
public enum PaypalPaymentIntent {
sale, authorize, order
}
\ No newline at end of file
package com.diaoyun.zion.master.config;
public enum PaypalPaymentMethod {
credit_card, paypal
}
\ No newline at end of file
package com.diaoyun.zion.master.util;
import javax.servlet.http.HttpServletRequest;
public class URLUtils {
public static String getBaseURl(HttpServletRequest request) {
String scheme = request.getScheme();
String serverName = request.getServerName();
int serverPort = request.getServerPort();
String contextPath = request.getContextPath();
StringBuffer url = new StringBuffer();
url.append(scheme).append("://").append(serverName);
if ((serverPort != 80) && (serverPort != 443)) {
url.append(":").append(serverPort);
}
url.append(contextPath);
if(url.toString().endsWith("/")){
url.append("/");
}
return url.toString();
}
}
\ No newline at end of file
...@@ -8,6 +8,7 @@ import com.egzosn.pay.common.http.HttpConfigStorage; ...@@ -8,6 +8,7 @@ import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.paypal.api.PayPalConfigStorage; import com.egzosn.pay.paypal.api.PayPalConfigStorage;
import com.egzosn.pay.paypal.api.PayPalPayService; import com.egzosn.pay.paypal.api.PayPalPayService;
import com.egzosn.pay.paypal.bean.PayPalTransactionType; import com.egzosn.pay.paypal.bean.PayPalTransactionType;
import com.paypal.api.payments.Links;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -27,6 +28,7 @@ import java.util.UUID; ...@@ -27,6 +28,7 @@ import java.util.UUID;
public class PayTest { public class PayTest {
public static void main(String[] args) { public static void main(String[] args) {
PayPalConfigStorage storage = new PayPalConfigStorage(); PayPalConfigStorage storage = new PayPalConfigStorage();
storage.setClientID("AWbyqn1AKJeVvzNsYms_9fs_LVr5_w5Xyt8nX5q0Wmqoq0NYCZf2wyz9DDeA5ArsWx0LFBwl5Oz6amD2"); storage.setClientID("AWbyqn1AKJeVvzNsYms_9fs_LVr5_w5Xyt8nX5q0Wmqoq0NYCZf2wyz9DDeA5ArsWx0LFBwl5Oz6amD2");
storage.setClientSecret("EFhRjCBzhtI1lf88Xiy3VF07gVpu1vWk0VheSP3n5J0fhQxA6Pu7j89dbyYTLj3FxqiJBOlxQRKG_58e"); storage.setClientSecret("EFhRjCBzhtI1lf88Xiy3VF07gVpu1vWk0VheSP3n5J0fhQxA6Pu7j89dbyYTLj3FxqiJBOlxQRKG_58e");
...@@ -41,6 +43,11 @@ public class PayTest { ...@@ -41,6 +43,11 @@ public class PayTest {
BigDecimal price = new BigDecimal("500"); BigDecimal price = new BigDecimal("500");
PayOrder order = new PayOrder("Order_payment:", "Order payment", price, UUID.randomUUID().toString().replace("-", ""), PayPalTransactionType.sale); PayOrder order = new PayOrder("Order_payment:", "Order payment", price, UUID.randomUUID().toString().replace("-", ""), PayPalTransactionType.sale);
Map orderInfo = service.orderInfo(order); Map orderInfo = service.orderInfo(order);
service.buildRequest(orderInfo, MethodType.POST);
String request = service.buildRequest(orderInfo, MethodType.POST);
System.out.println(request);
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论