Commit 55012b63 by yangfangfang

增加先享后付2026优化相关case

parent 54a3b87b
......@@ -38,6 +38,27 @@ public class AXFTools extends XMBaseTest {
return dataApi.getBodyInJSON();
}
/**
* @description:查询先享后付扣款明细详情
* @author: yff
**/
public JSONObject getDeduction(String body){
setUp("API_getDeduction");
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* @description:查询先享后付扣款明细
* @author: yff
**/
public JSONObject pageDeduction(String body){
setUp("API_pageDeduction");
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
}
package com.xiaomai.cases.polar.finance.axf;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestAggDeduction extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Finance,"API_aggDeduction", LoginAccount.GYM_PROD, Terminal.B,"yff");
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{"SUCCESS"},
{"FAIL"},
{"REFUND"},
{"REFUND_F"}
};
}
@Test(description = "获取先享后付扣款明细统计值",dataProvider = "dataProvider")
public void testAggDeduction(String state){
// 如果运行的环境为灰度则不执行,原因是灰度环境先享后付没有数据
if (xmAppApi.getUrl().contains("canary-fit.xiaomai5.com"))
return;
JSONObject jsonObject=new JSONObject();
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("current",1);
jsonObject.put("size",10);
jsonObject.put("state",state);
jsonObject.put("businessNo",null);
jsonObject.put("thirdOrderNo",null);
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String success=response.getString("success");
Assert.assertEquals(success,"true","获取先享后付扣款明细统计值接口失败");
}
}
package com.xiaomai.cases.polar.finance.axf;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestListRelationDeduction extends BaseTestImpl {
AXFTools axfTools=new AXFTools();
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Finance,"API_listRelationDeduction", LoginAccount.GYM_PROD, Terminal.B,"yff");
super.beforeTest();
}
@Test(description = "扣款明细的关联交易")
public void testListRelationDeduction(){
// 如果运行的环境为灰度则不执行,原因是灰度环境先享后付没有数据
if (xmAppApi.getUrl().contains("canary-fit.xiaomai5.com"))
return;
//获取扣款状态为退款成功的,一定会有关联交易
JSONObject dataRefund=axfTools.pageDeduction("{\"current\":0,\"size\":20,\"studioId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\",\"brandId\":\""+xmAppApi.getLoginInfo().getBrandId()+"\",\"operatorId\":\""+xmAppApi.getLoginInfo().getAdminId()+"\",\"businessNo\":null,\"thirdOrderNo\":null,\"state\":\"REFUND\"}");
int total= Integer.parseInt(dataRefund.getJSONObject("result").getString("total"));
if(total>0){
JSONObject dataRefund1=dataRefund.getJSONObject("result").getJSONArray("records").getJSONObject(0);
String idRefund=dataRefund1.getString("id");
String buyerIdRefund=dataRefund1.getString("buyerId");
String buyerNameRefund=dataRefund1.getString("buyerName");
String businessNoRefund=dataRefund1.getString("businessNo");
String thirdOrderNoRefund=dataRefund1.getString("thirdOrderNo");
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",idRefund);
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String success=response.getString("success");
JSONObject dataPay=response.getJSONArray("result").getJSONObject(0);
Assert.assertEquals(success,"true","获取扣款明细的关联交易失败");
Assert.assertEquals(dataPay.getString("state"),"SUCCESS","查询退款成功扣款明细的关联交易状态应是扣款成功");
Assert.assertEquals(dataPay.getString("buyerId"),buyerIdRefund,"查询退款成功扣款明细的关联交易收款中的会员id应与退款一致");
Assert.assertEquals(dataPay.getString("buyerName"),buyerNameRefund,"查询退款成功扣款明细的关联交易收款中的会员姓名应与退款一致");
Assert.assertEquals(dataPay.getString("businessNo"),businessNoRefund,"查询退款成功扣款明细的关联交易收款中的订单号应与退款一致");
Assert.assertEquals(dataPay.getString("thirdOrderNo"),thirdOrderNoRefund,"查询退款成功扣款明细的关联交易收款中的支付宝订购单号应与退款一致");
}
}
}
package com.xiaomai.cases.polar.finance.axf;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestPageDeduction extends BaseTestImpl {
AXFTools axfTools=new AXFTools();
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Finance,"API_pageDeduction", LoginAccount.GYM_PROD, Terminal.B,"yff");
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider() {
return new Object[][]{
{"SUCCESS"},
{"FAIL"},
{"REFUND"},
{"REFUND_F"}
};
}
@Test(description = "获取先享后付扣款明细",dataProvider = "dataProvider")
public void testPageDeduction(String state) {
// 如果运行的环境为灰度则不执行,原因是灰度环境先享后付没有数据
if (xmAppApi.getUrl().contains("canary-fit.xiaomai5.com"))
return;
//获取订购单
JSONObject getAXFPageOrder = axfTools.getAXFPageOrder("{\"current\":0,\"size\":20,\"studioId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\",\"brandId\":\""+xmAppApi.getLoginInfo().getBrandId()+"\",\"commodityCardType\":\"DEPOSIT_CARD\",\"voucherBusinessNo\":null,\"thirdOrderNo\":null,\"existFailDeduction\":null,\"operatorId\":\""+xmAppApi.getLoginInfo().getAdminId()+"\"}");
if (getAXFPageOrder.getJSONObject("result").getJSONArray("records").size() > 0) {
//倒数第一条订购单
JSONObject data = getAXFPageOrder.getJSONObject("result").getJSONArray("records").getJSONObject(getAXFPageOrder.getJSONObject("result").getJSONArray("records").size()-1);
String businessNo = data.getString("voucherBusinessNo");
String thirdOrderNo = data.getString("thirdOrderNo");
String memberId = data.getString("memberId");
String memberName = data.getString("memberName");
String totalPeriod = data.getString("totalPeriod");
//倒数第一条订购单的扣款明细
JSONObject jsonObject = new JSONObject();
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("current", 1);
jsonObject.put("size", 10);
jsonObject.put("state", state);
jsonObject.put("businessNo", businessNo);
jsonObject.put("thirdOrderNo",null);
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
JSONObject response = xmAppApi.getBodyInJSON();
String success = response.getString("success");
Assert.assertEquals(success, "true", "获取接先享后付扣款明细失败");
if (response.getJSONObject("result").getJSONArray("records").size() > 0) {
JSONObject dataDeduction = response.getJSONObject("result").getJSONArray("records").getJSONObject(0);
String id=dataDeduction.getString("id");
// 校验扣款明细列表和对应的订购单数据一致
Assert.assertEquals(dataDeduction.getString("businessNo"), businessNo, "订购单和对应的扣款明细的订单号应一致");
Assert.assertEquals(dataDeduction.getString("thirdOrderNo"), thirdOrderNo, "订购单和对应的扣款明细的支付宝订购单号应一致");
Assert.assertEquals(dataDeduction.getString("buyerId"), memberId, "订购单和对应的扣款明细的会员id应一致");
Assert.assertEquals(dataDeduction.getString("buyerName"), memberName, "订购单和对应的扣款明细的会员姓名应一致");
Assert.assertEquals(dataDeduction.getString("totalPeriod"), totalPeriod, "订购单和对应的扣款明细的扣款总期数应一致");
//获取扣款明细列表和对应的扣款明细详情数据一致
//获取扣款明细详情
JSONObject detail=axfTools.getDeduction("{\"id\":\""+id+"\",\"brandId\":\""+xmAppApi.getLoginInfo().getBrandId()+"\",\"studioId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\",\"operatorId\":\""+xmAppApi.getLoginInfo().getAdminId()+"\"}");
Assert.assertEquals(detail.getString("success"),"true","获取先享后付扣款明细详情接口失败");
Assert.assertEquals(detail.getJSONObject("result").getString("buyerId"),dataDeduction.getString("buyerId"),"扣款明细和对应的扣款明细详情的会员id应一致");
Assert.assertEquals(detail.getJSONObject("result").getString("buyerName"),dataDeduction.getString("buyerName"),"扣款明细和对应的扣款明细详情的会员名称应一致");
Assert.assertEquals(detail.getJSONObject("result").getString("totalPeriod"),dataDeduction.getString("totalPeriod"),"扣款明细和对应的扣款明细详情的总期数应一致");
Assert.assertEquals(detail.getJSONObject("result").getString("businessNo"),dataDeduction.getString("businessNo"),"扣款明细和对应的扣款明细详情的订单号应一致");
Assert.assertEquals(detail.getJSONObject("result").getString("thirdOrderNo"),dataDeduction.getString("thirdOrderNo"),"扣款明细和对应的扣款明细详情的支付宝订购单号应一致");
}
}
}}
......@@ -309,4 +309,135 @@ public class TestSignOrderAxf extends BaseTestImpl {
orderTools.cancel(getDetailId);
}
@Test(description = "创建先享后付订单_无违约金_指定日期")
public void testSignOrderAxf_noBreakCosts_fixed_days(){
String memberId = "";
// 查询存量的学员没有则创建学员
if (tools.commonSearch("先享后付学员嘉艺","NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch("先享后付学员嘉艺","NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch("先享后付学员嘉艺","HISTORY").getJSONArray("result").size()>0){
memberId = tools.commonSearch("先享后付学员嘉艺","HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch("先享后付学员嘉艺","POTENTIAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch("先享后付学员嘉艺","POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId = memberTools.create("先享后付学员嘉艺", RandomStringUtil.randomMobile("213")).getString("result");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询存量的卡
JSONObject fetchPageOfMemberCard = orderTools.fetchPageOfMemberCard("","MEMBER_CARD").getJSONObject("result");
int total = Integer.parseInt(fetchPageOfMemberCard.getString("total"));
String cardId = "";
if (total == 0) {
cardId = cardTools.memberCardCreate("创建先享后付订单"+ TimeUtils.getCurrentTime()).getString("result");
}
cardId = fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity = new BigDecimal(fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getJSONArray("benefitList").getJSONObject(0).getString("balance"));
float price = Float.parseFloat(fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod = Integer.parseInt(fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId = orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
JSONObject jsonObject=new JSONObject();
jsonObject.put("salesmanId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("operationTime", TimeUtils.getCurrentTime());
JSONObject card = new JSONObject();
card.put("cardId",cardId);
card.put("cardSnapshotId",latestSnapshotId);
JSONObject cardChange=new JSONObject();
cardChange.put("quantity",quantity);
cardChange.put("price",price);
cardChange.put("validPeriod",validPeriod);
cardChange.put("latestSnapshotId",latestSnapshotId);
card.put("cardChange",cardChange);
card.put("deductionAmount",0);//优惠金额(元)
card.put("activatePattern","PURCHASE");
card.put("commodityCardType","MEMBER_CARD");
jsonObject.put("card",card);
jsonObject.put("objectId", RandomStringUtil.randomString(20));
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("memberId",memberId);
jsonObject.put("receivableAmount",price);//应收金额
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
JSONObject axfOrderInfo = new JSONObject();
axfOrderInfo.put("totalPeriod","2"); //总期数
axfOrderInfo.put("cycleType","MONTH"); // 按月扣款
axfOrderInfo.put("cycleChargeType","FIXED_DAYS");
axfOrderInfo.put("periodType","SAME_EACH_PERIOD"); // 扣款每期一致
axfOrderInfo.put("cycleValue",8); // 当前时间+N天
axfOrderInfo.put("chargeNow", false);
JSONArray periodPriceList = new JSONArray();
for (int i = 0; i < 2; i++){
JSONObject priceObj = new JSONObject();
priceObj.put("period",i+1); // 期数
priceObj.put("salePrice",price/2); // 每期还款金额
periodPriceList.add(priceObj);
}
axfOrderInfo.put("periodPriceList",periodPriceList);
jsonObject.put("axfOrderInfo",axfOrderInfo);
JSONArray paymentWays = new JSONArray();
JSONObject object = new JSONObject();
object.put("amount",price);//支付金额
object.put("paymentWay","7"); // 7先享后付支付
JSONArray voucherResourceIds = new JSONArray();//支付凭证
voucherResourceIds.add("");
object.put("voucherResourceIds",voucherResourceIds);
paymentWays.add(object);
jsonObject.put("paymentWays",paymentWays);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
JSONObject bodyInJSON = xmAppApi.getBodyInJSON();
String getDetailId = bodyInJSON.getString("result");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 校验订单详情状态:待支付、先享后付状态为签约中
JSONObject getDetailResult = orderTools.getDetail(getDetailId);
String state = getDetailResult.getJSONObject("result").getString("state");
Assert.assertEquals(state,"WAITING","先享后付订单创建成功后订单状态不是待支付");
String axfState = getDetailResult.getJSONObject("result").getString("axfState");
Assert.assertEquals(axfState,"PROCESS","先享后付订单安心付状态不是签约中");
orderTools.discard(getDetailId, "重复录入","作废订单");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment