package com.iplatform.pay.notify;
|
|
import com.iplatform.pay.BasePayApi;
|
import com.iplatform.pay.Constants;
|
import com.walker.infrastructure.utils.JsonUtils;
|
import com.walker.infrastructure.utils.StringUtils;
|
import com.walker.pay.allinpaycloud.DefaultPayEngineProvider;
|
import com.walker.pay.allinpaycloud.RequestNotify;
|
import com.walker.pay.allinpaycloud.pojo.ResponseSignAcctNotify;
|
import com.walker.pay.allinpaycloud.util.TextUtils;
|
import com.walker.pay.exception.NotifyException;
|
import com.walker.web.ResponseValue;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
/**
|
* 通商云通知进入接口。
|
* @author 时克英
|
* @date 2023-02-25
|
*/
|
@RestController
|
@RequestMapping("/pay/notify/allinpayCloud")
|
@ConditionalOnClass({DefaultPayEngineProvider.class})
|
public class AllinpayCloudApi extends BasePayApi {
|
|
/**
|
* 提现签约通知(接收)
|
* @param raw
|
* @return
|
* @date 2023-02-27
|
*/
|
@PostMapping("/signAcctNotify")
|
public ResponseValue signAcctNotify(RequestNotify raw){
|
logger.debug(raw.toString());
|
if(StringUtils.isEmpty(raw.getBizContent())){
|
throw new IllegalArgumentException("通商云'提现签约'通知,未接收到 bizContent 业务数据:" + raw, null);
|
}
|
|
String decodeBizContent = TextUtils.decodeFormUrlParameter(raw.getBizContent());
|
logger.debug(decodeBizContent);
|
|
try {
|
ResponseSignAcctNotify responseSignAcctNotify = JsonUtils.jsonStringToObject(decodeBizContent, ResponseSignAcctNotify.class);
|
if(StringUtils.isNotEmpty(responseSignAcctNotify.getResult())
|
&& responseSignAcctNotify.getResult().equals(com.walker.pay.allinpaycloud.Constants.SUB_CODE_OK)){
|
logger.info("提现签约成功,这里处理业务状态更新: " + responseSignAcctNotify.getAcctProtocolNo());
|
}
|
} catch (Exception e) {
|
throw new RuntimeException("ResponseSignAcctNotify转换对象错误, bizContent=" + decodeBizContent, e);
|
}
|
|
return ResponseValue.success();
|
}
|
|
/**
|
* 订单支付通知(接收)
|
* @param raw
|
* @return
|
* @date 2023-02-26
|
*/
|
@PostMapping("/orderNotify")
|
public ResponseValue orderPayNotify(RequestNotify raw){
|
logger.debug(raw.toString());
|
if(StringUtils.isEmpty(raw.getBizContent())){
|
// logger.error("通商云支付通知,未接收到 bizContent 业务数据: {}", raw);
|
throw new IllegalArgumentException("通商云支付通知,未接收到 bizContent 业务数据:" + raw, null);
|
}
|
|
// 通过支付管理器的通知方法调用。
|
try {
|
String error = this.getPayEngineManager().notifyOrder(Constants.PAY_DEFINITION_ID_ALLINPAY_CLOUD, raw);
|
if(StringUtils.isNotEmpty(error)){
|
throw new RuntimeException("支付通知引擎返回错误:" + error, null);
|
}
|
} catch (NotifyException e) {
|
throw new RuntimeException("通商云支付结果通知异常:" + e.getMessage() + ", raw = " + raw , e);
|
}
|
|
return ResponseValue.success();
|
}
|
|
}
|