package com.walker.pay.allinpaycloud.generator;
|
|
import com.allinpay.sdk.bean.OpenResponse;
|
import com.walker.infrastructure.arguments.Variable;
|
import com.walker.pay.Order;
|
import com.walker.pay.PayContext;
|
import com.walker.pay.ResponsePay;
|
import com.walker.pay.allinpaycloud.BaseOrderGenerator;
|
import com.walker.pay.allinpaycloud.Constants;
|
import com.walker.pay.allinpaycloud.util.OrderUtils;
|
import com.walker.pay.response.ScanOrderResponsePay;
|
import com.walker.pay.support.allinpaycloud.ScanWechatOrder;
|
|
import java.util.Map;
|
|
/**
|
* 微信扫码(正扫)生成动态订单二维码,生成器定义。
|
* @author 时克英
|
* @date 2023-03-01
|
*/
|
public class ScanWechatOrderGenerator extends BaseOrderGenerator {
|
|
@Override
|
protected ResponsePay invoke(PayContext payContext, Order platformOrder) {
|
this.checkSdkClient();
|
if(!(platformOrder instanceof ScanWechatOrder)){
|
throw new IllegalArgumentException("微信扫描(正扫)支付订单类型必须是'ScanWechatOrder'");
|
}
|
OpenResponse response = this.getSdkClient().consumeApply(platformOrder);
|
if(response == null){
|
throw new RuntimeException("调用'通商云微信扫码'订单返回空数据, orderId = " + platformOrder.getId());
|
}
|
|
if (!Constants.SUB_CODE_OK.equals(response.getSubCode())) {
|
logger.debug("'微信扫码(正扫)'订单返回失败:{}", response.getSubMsg());
|
return ResponsePay.error(ScanOrderResponsePay.class, response.getSubMsg());
|
}
|
|
ScanOrderResponsePay scanOrderResponsePay = new ScanOrderResponsePay();
|
|
try {
|
OrderResponsePay responseValue = OrderUtils.getOrderResponsePay(response.getData());
|
if(responseValue == null){
|
throw new RuntimeException("orderResponsePay = null!");
|
}
|
// 生成的二维码结果,统一转换成对象:ScanOrderResponsePay
|
scanOrderResponsePay.setStatus(true);
|
scanOrderResponsePay.setCodeUrl(responseValue.getPayInfo());
|
return scanOrderResponsePay;
|
|
} catch (Exception e) {
|
logger.error(e.getMessage(), e);
|
throw new RuntimeException("调用'通商云微信扫码(正扫)'订单数据转换对象失败, orderId = " + platformOrder.getId());
|
}
|
}
|
|
@Deprecated
|
@Override
|
protected ResponsePay invoke(String providerPayType, Order platformOrder, Map<String, Variable> configuration) {
|
return null;
|
}
|
}
|