Merge remote-tracking branch 'origin/alipayplus_aps' into alipayplus_aps

master
yixian 3 years ago
commit 17a051bd60

@ -0,0 +1,20 @@
CREATE TABLE `log_mch_alipay_aps_register` (
`request_id` varchar(50) NOT NULL,
`client_id` int(11) NOT NULL,
`pid` varchar(50) NOT NULL,
`mid` varchar(50) NOT NULL,
`store_id` varchar(50) DEFAULT NULL,
`merchant_type` varchar(20) DEFAULT NULL COMMENT ' 支付类型 ONLINE,RETAIL',
`request_time` datetime DEFAULT NULL,
`confirm_time` datetime DEFAULT NULL,
`result_code` varchar(50) DEFAULT NULL COMMENT '返回的状态码',
`result_status` varchar(10) DEFAULT NULL COMMENT '返回的状态 F, S',
`is_valid` tinyint(1) DEFAULT '1' COMMENT '记录是否有效1有效 0无效',
`registration_status` varchar(30) DEFAULT NULL,
PRIMARY KEY (`request_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='AlipayPlus商户注册记录表';
//
ALTER TABLE sys_client_legal_person add legal_representative_id varchar(50) DEFAULT NULL COMMENT '法人身份ID'

@ -1001,6 +1001,12 @@ public class RetailAppServiceImp implements RetailAppService {
if ("CNY".equals(order.getString("currency"))) {
order.put("clearing_amount", order.getBigDecimal("total_amount"));
}
if("ApsInStore".equalsIgnoreCase(order.getString("channel"))){
order.put("channel", "Alipay+");
}
if("ApsCashier".equalsIgnoreCase(order.getString("channel"))){
order.put("channel", "Alipay+(Online)");
}
if (!dateContains.contains(tradeDate)) {
String reDate = tradeDate.replace("-", "");
AppQueryBean dateQuery = new AppQueryBean();
@ -3116,6 +3122,18 @@ public class RetailAppServiceImp implements RetailAppService {
if (cardPaymentPay.containsKey("channel")) {
channels.add(cardPaymentPay);
}
JSONObject apsInStore = getChannel(clientId, now, "ApsInStore");
if (apsInStore.containsKey("channel")) {
apsInStore.put("channel","Alipay+");
channels.add(apsInStore);
}
JSONObject apsCashier = getChannel(clientId, now, "ApsCashier");
if (apsCashier.containsKey("channel")) {
apsCashier.put("channel","Alipay+(Online)");
channels.add(apsCashier);
}
res.put("channels", channels);
if (res.containsKey("rate_value")) {
BigDecimal minRate = res.getBigDecimal("rate_value").add(BigDecimal.valueOf(0.01)).setScale(2, RoundingMode.DOWN);

@ -100,7 +100,7 @@ public interface CleanService {
List<JSONObject> findLogSettleByDate(Date date);
JSONObject validTransactions(Date date, boolean fix, boolean b, boolean b1);
JSONObject validTransactions(Date date, boolean fix, boolean b, boolean b1,boolean isSendMessage);
void distributeBank(Date date, int clearingId, JSONObject bankDistribution);

@ -1,6 +1,7 @@
package au.com.royalpay.payment.manage.management.clearing.core.impl;
import au.com.royalpay.payment.core.PaymentApi;
import au.com.royalpay.payment.core.beans.OrderValidationChannelResult;
import au.com.royalpay.payment.core.beans.OrderValidationResult;
import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.core.exceptions.ParamInvalidException;
@ -1577,7 +1578,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider
}
@Override
public JSONObject validTransactions(Date dt, boolean fix, boolean b, boolean b1) {
public JSONObject validTransactions(Date dt, boolean fix, boolean b, boolean b1, boolean isSendMessage) {
if (!b) {
JSONObject reportItem = validationLogMapper.findByDate(dt);
if (reportItem != null) {
@ -1591,6 +1592,22 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider
log.put("result", report.getReport().toJSONString());
validationLogMapper.removeByDate(dt);
validationLogMapper.save(log);
// 是否发送消息通知
if (isSendMessage) {
List<JSONObject> developers = managerMapper.listDetailsByRole(null, ManagerRole.DEVELOPER.getMask());
List<OrderValidationChannelResult> channelResults = report.getChannelResults();
boolean valid = channelResults.stream().map(OrderValidationChannelResult::isSuccess).reduce(Boolean::logicalAnd).orElse(true);
StringBuilder statusString = new StringBuilder("订单校对已完成,状态:" + (valid ? "🌤️【成功】" : "🌨️【失败】"));
statusString.append("\r\n");
for (OrderValidationChannelResult info : channelResults) {
if (info.isSuccess()) {
continue;
}
statusString.append(info.getChannel().getChannelCode()).append(": [ ").append(info.isSuccess() ? "成功" : "失败")
.append(StringUtils.defaultIfBlank(info.getErrorMsg(), "")).append(" ]").append("\r\n");
}
publisher.publishEvent(new TaskFinishNotifyEvent(this, PlatformEnvironment.getEnv().getCompany() + " 订单校对", statusString.toString(), developers, valid));
}
return JSON.parseObject(log.getString("result"));
}

@ -59,10 +59,11 @@ public class FinancialController {
@GetMapping("/order_validations/{date}")
public JSONObject getCheckReport(@PathVariable String date, @RequestParam(defaultValue = "false") boolean fix,
@RequestParam(name = "use_cache", defaultValue = "true") boolean useCache) {
@RequestParam(name = "use_cache", defaultValue = "true") boolean useCache,
@RequestParam(name = "is_send_message", defaultValue = "false") boolean isSendMessage) {
try {
Date dt = DateUtils.parseDate(date, new String[]{"yyyyMMdd"});
return cleanService.validTransactions(dt, fix, !useCache, false);
return cleanService.validTransactions(dt, fix, !useCache, false,isSendMessage);
} catch (ParseException e) {
throw new ParamInvalidException("date", "error.payment.valid.invalid_date_format");
}
@ -97,8 +98,8 @@ public class FinancialController {
@GetMapping("/get/transaction/status/{transactionId}")
public TransactionStatus getTransactionStatus(@PathVariable String transactionId) {
if(transactionId.isEmpty()){
throw new ParamInvalidException("date","Transaction flow is empty");
if (transactionId.isEmpty()) {
throw new ParamInvalidException("date", "Transaction flow is empty");
}
return cleanService.getTransactionStatus(transactionId);
}
@ -109,12 +110,11 @@ public class FinancialController {
@RequestParam(value = "noCache") boolean noCache,
@RequestParam(value = "billType", required = false) String billType,
@RequestParam(value = "channel") String channel,
HttpServletResponse response) {
HttpServletResponse response) {
ChannelReconciliationFileContent file = cleanService.downloadChannelReconciliationFile(pid, au.com.royalpay.payment.tools.utils.DateUtils.parseDate(billDate)
, noCache, channel, billType);
try (InputStream in = new ByteArrayInputStream(file.content())) {
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.name(), Charsets.UTF_8.name()));
response.setContentLength(file.length());

@ -68,6 +68,8 @@ public class ClientRegisterInfo {
private String representativeEmail;
@JSONField(name = "legal_representative_job")
private String representativeJobTitle;
@JSONField(name = "legal_representative_id")
private String representativeId;
@JSONField(name = "marketing_person")
private String marketingPerson;
@JSONField(name = "marketing_phone")
@ -690,4 +692,12 @@ public class ClientRegisterInfo {
public void setMccode(String mc_code) {
this.mc_code = mc_code;
}
public String getRepresentativeId() {
return representativeId;
}
public void setRepresentativeId(String representativeId) {
this.representativeId = representativeId;
}
}

@ -946,6 +946,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
JSONObject representativeInfo = new JSONObject();
representativeInfo.put("client_id", clientId);
representativeInfo.put("representative_person", info.getRepresentativePerson());
representativeInfo.put("legal_representative_id", info.getRepresentativeId());
representativeInfo.put("phone", info.getRepresentativePhone());
representativeInfo.put("email", info.getRepresentativeEmail());
representativeInfo.put("job_title", info.getRepresentativeJobTitle());
@ -2096,8 +2097,11 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (newConfig.getBigDecimal("cb_bankpay_rate_value") != null) {
clientRateMapper.saveRate(newConfig);
}
} else if ("AlipayAps".equalsIgnoreCase(channel)) {
newConfig.put("transaction_fee", newConfig.getFloatValue("service_fee_value"));
} else if ("ApsInStore".equalsIgnoreCase(channel)) {
newConfig.put("transaction_fee", newConfig.getFloatValue("retail_service_fee_value"));
clientRateMapper.saveRate(newConfig);
} else if ("ApsCashier".equalsIgnoreCase(channel)) {
newConfig.put("transaction_fee", newConfig.getFloatValue("online_service_fee_value"));
clientRateMapper.saveRate(newConfig);
} else {
clientRateMapper.saveRate(newConfig);
@ -7114,7 +7118,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
boolean offline = apsMerchantApplication.getProductCodes().stream().allMatch(s -> s.equalsIgnoreCase(ProductCodeType.IN_STORE_PAYMENT.toString()));
logger.info("====>offline:" + offline);
if (offline) {
//todo 测试需要 先都改成线上,上线此处需要改成线下
apsMerchantApplication.setPid(AlipayEnvironment.getEnv().getAlipayPlusApsRetailConfig().getPid());
} else {
apsMerchantApplication.setPid(AlipayEnvironment.getEnv().getAlipayPlusApsOnlineConfig().getPid());
@ -7346,6 +7349,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
representativeInfo.put("postcode", partner.getString("registered_postcode"));
representativeInfo.put("state", partner.getString("registered_state"));
representativeInfo.put("legal_representative_wechatid", partner.getString("legal_representative_wechatid"));
representativeInfo.put("legal_representative_id", partner.getString("legal_representative_id"));
representativeInfo.put("marketing_person", partner.getString("marketing_person"));
representativeInfo.put("marketing_phone", partner.getString("marketing_phone"));
representativeInfo.put("marketing_email", partner.getString("marketing_email"));

@ -182,7 +182,7 @@
<div ng-if="org.type == 0">
<div class="panel panel-default">
<div class="panel-heading">China Wallet</div>
<div class="panel-heading">China Wallets Rate</div>
<div class="panel-body">
<div class="col-sm-6" ng-if="org.commission_type == 1">
<div class="form-group"
@ -523,7 +523,7 @@
</div>
<div class="panel panel-default">
<div class="panel-heading">A+ Rate</div>
<div class="panel-heading">Alipay+ Rate</div>
<div class="panel-body">
<div class="col-sm-6" ng-if="org.commission_type == 1">
<div class="form-group"

@ -180,7 +180,7 @@
<div ng-if="org.type == 0">
<div class="panel panel-default">
<div class="panel-heading">China Wallet</div>
<div class="panel-heading">China Wallets Rate</div>
<div class="panel-body">
<div class="col-sm-6" ng-if="org.commission_type == 1">
<div class="form-group"
@ -521,7 +521,7 @@
</div>
<div class="panel panel-default">
<div class="panel-heading">A+ Rate</div>
<div class="panel-heading">Alipay+ Rate</div>
<div class="panel-body">
<div class="col-sm-6" ng-if="org.commission_type == 1">
<div class="form-group"

@ -65,7 +65,31 @@ define(['angular', 'decimal', 'uiRouter', 'angularEcharts', '../../analysis/repo
})
}
$scope.loadAliOnlineLogs(1)
$scope.loadBestpayLog = function () {
$scope.loadAlipayApsInStoreLogs = function (page) {
var params = $scope.queryParams || {}
params.page = page || $scope.apsInStorePagination.page || 1
params.limit = 20
params.channel = 'ApsInStore'
$http.get('/platform/analysis/settle/log', { params: params }).then(function (resp) {
$scope.apsInStoreLogs = resp.data.data
$scope.apsInStorePagination = resp.data.pagination
})
}
$scope.loadAlipayApsInStoreLogs(1)
$scope.loadAlipayApsCashierLogs = function (page) {
var params = $scope.queryParams || {}
params.page = page || $scope.apsCashierPagination.page || 1
params.limit = 20
params.channel = 'ApsCashier'
$http.get('/platform/analysis/settle/log', { params: params }).then(function (resp) {
$scope.apsCashierLogs = resp.data.data
$scope.apsCashierPagination = resp.data.pagination
})
}
$scope.loadAlipayApsCashierLogs(1)
$scope.loadBestpayLog = function () {
$http.get('/platform/analysis/settle/Bestpay').then(function (resp) {
$scope.bestpayLogs = resp.data
})
@ -77,6 +101,9 @@ define(['angular', 'decimal', 'uiRouter', 'angularEcharts', '../../analysis/repo
$scope.loadAliLogs(1)
$scope.loadAliOnlineLogs(1)
$scope.loadWechatLogs(1)
$scope.loadAlipayApsInStoreLogs(1)
$scope.loadAlipayApsCashierLogs(1)
commonDialog.alert({
title: 'Success',
content: '校验结果已经重新生成,请查看!',
@ -97,6 +124,9 @@ define(['angular', 'decimal', 'uiRouter', 'angularEcharts', '../../analysis/repo
$http.get('/platform/analysis/generate/settle/log').then(function () {
$scope.loadWechatLogs(1)
$scope.loadAliLogs(1)
$scope.loadAlipayApsInStoreLogs(1)
$scope.loadAlipayApsCashierLogs(1)
$state.reload()
})
$state.reload()

@ -338,14 +338,14 @@
</div>
</div>
</div>
<!--AlipayPlus (aps) -->
<!--Alipay+ (aps) -->
<div class="box box-warning">
<div class="box-header">
<h4 class="text-green">AlipayPlus Logs</h4>
<h4 class="text-green">Alipay+ Logs</h4>
</div>
<div class="box-body table-responsive">
<p ng-if="!wechatLogs.length">No Data</p>
<table class="table table-hover" ng-if="wechatLogs.length">
<p ng-if="!apsInStoreLogs.length">No Data</p>
<table class="table table-hover" ng-if="apsInStoreLogs.length">
<thead>
<tr>
<th>Date Start</th>
@ -361,7 +361,7 @@
</tr>
</thead>
<tbody>
<tr ng-repeat="log in wechatLogs">
<tr ng-repeat="log in apsInStoreLogs">
<td ng-bind="log.start_date.substr(0,10)"></td>
<td ng-bind="log.end_date.substr(0,10)"></td>
<td ng-bind="log.settle_date.substr(0,10)"></td>
@ -391,23 +391,97 @@
</table>
<div class="panel-footer">
<div class="row">
<uib-pagination ng-if="wechatLogs.length"
<uib-pagination ng-if="apsInStoreLogs.length"
class="pagination"
total-items="wechatPagination.totalCount"
total-items="apsInStorePagination.totalCount"
boundary-links="true"
ng-model="wechatPagination.page"
items-per-page="wechatPagination.limit"
ng-model="apsInStorePagination.page"
items-per-page="apsInStorePagination.limit"
max-size="10"
ng-change="loadWechatLogs()"
ng-change="loadAlipayApsInStoreLogs()"
previous-text="&lsaquo;"
next-text="&rsaquo;"
first-text="&laquo;"
last-text="&raquo;"></uib-pagination>
<div class="col-xs-12">Total Records:{{wechatPagination.totalCount}};Total
Pages:{{wechatPagination.totalPages}}
<div class="col-xs-12">Total Records:{{apsInStorePagination.totalCount}};Total
Pages:{{apsInStorePagination.totalPages}}
</div>
</div>
</div>
</div>
</div>
<!--Alipay+(Online) (aps) -->
<div class="box box-warning">
<div class="box-header">
<h4 class="text-green">Alipay+(Online) Logs</h4>
</div>
<div class="box-body table-responsive">
<p ng-if="!apsCashierLogs.length">No Data</p>
<table class="table table-hover" ng-if="apsCashierLogs.length">
<thead>
<tr>
<th>Date Start</th>
<th>Date End</th>
<th>Settle Date</th>
<th>Pay Fee</th>
<th>Refund Fee</th>
<th>Net Fee</th>
<th>Poundage</th>
<th>Settlement Fee</th>
<th>Unsettled</th>
<th style="text-align: center;">Validation</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="log in apsCashierLogs">
<td ng-bind="log.start_date.substr(0,10)"></td>
<td ng-bind="log.end_date.substr(0,10)"></td>
<td ng-bind="log.settle_date.substr(0,10)"></td>
<td ng-bind="log.pay_fee"></td>
<td ng-bind="log.refund_fee"></td>
<td>{{log.net_fee}}
<span ng-if="log.sys_net_fee==log.net_fee" style="color: #0BB20C">&nbsp;&nbsp;(System:{{log.sys_net_fee}})</span>
<span ng-if="log.sys_net_fee!=log.net_fee" style="color: crimson">&nbsp;&nbsp;(System:{{log.sys_net_fee}})</span>
</td>
<td>{{log.surcharge}}
<span ng-if="log.sys_surcharge==log.surcharge" style="color: #0BB20C">&nbsp;&nbsp;(System:{{log.sys_surcharge}})</span>
<span ng-if="log.sys_surcharge!=log.surcharge" style="color: crimson">&nbsp;&nbsp;(System:{{log.sys_surcharge}})</span>
</td>
<td>{{log.settlement_fee}}
<span ng-if="log.sys_settlement_fee==log.settlement_fee" style="color: #0BB20C">&nbsp;&nbsp;(System:{{log.sys_settlement_fee}})</span>
<span ng-if="log.sys_settlement_fee!=log.settlement_fee" style="color: crimson">&nbsp;&nbsp;(System:{{log.sys_settlement_fee}})</span>
</td>
<td ng-bind="log.unsettle_fee"></td>
<td ng-if="log.sys_settlement_fee==log.settlement_fee" style="font-size:25px;text-align: center;"><a
role="button" ng-click="verifySettleLog(log)"><i
class="fa fa-check-circle text-green" uib-tooltip="校验通过"></i></a></td>
<td ng-if="log.sys_settlement_fee!=log.settlement_fee" style="font-size:25px;text-align: center;"><a
role="button" ng-click="verifySettleLog(log)"><i
class="fa fa-exclamation-circle text-red" uib-tooltip="校验未通过:点击重新验证"></i></a></td>
</tr>
</tbody>
</table>
<div class="panel-footer">
<div class="row">
<uib-pagination ng-if="apsCashierLogs.length"
class="pagination"
total-items="apsCashierPagination.totalCount"
boundary-links="true"
ng-model="apsCashierPagination.page"
items-per-page="apsCashierPagination.limit"
max-size="10"
ng-change="loadAlipayApsCashierLogs()"
previous-text="&lsaquo;"
next-text="&rsaquo;"
first-text="&laquo;"
last-text="&raquo;"></uib-pagination>
<div class="col-xs-12">Total Records:{{apsCashierPagination.totalCount}};Total
Pages:{{apsCashierPagination.totalPages}}
</div>
</div>
</div>
</div>
</div>
</div>

@ -170,6 +170,34 @@
</div>
</div>
</div>
<div class="col-sm-4 col-xs-6">
<div class="description-block border-right">
<div class="description-text">交易额:
<label class="description-text text-red"
ng-bind="totalChannelAmount.apsinstoreamount|currency: ' $ '"></label>
</div>
<div class="description-text">订单数:
<label class="description-text text-red"
ng-bind="totalChannelAmount.apsinstore_order_count"></label>
</div>
<div class="description-header text-bold"><img src="/static/images/alipay_aps.jpg" style="height: 25px"/>Alipay+
</div>
</div>
</div>
<div class="col-sm-4 col-xs-6">
<div class="description-block">
<div class="description-text">交易额:
<label class="description-text text-red"
ng-bind="totalChannelAmount.apscashieramount|currency: ' $ '"></label>
</div>
<div class="description-text">订单数:
<label class="description-text text-red"
ng-bind="totalChannelAmount.apscashier_order_count"></label>
</div>
<div class="description-header text-bold"><img src="/static/images/alipay_aps.jpg" style="height: 25px"/>Alipay+(Online)
</div>
</div>
</div>
</div>
</div>

@ -525,6 +525,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.partner.registered_postcode = $scope.partner.representativeInfo.postcode;
$scope.partner.registered_state = $scope.partner.representativeInfo.state;
$scope.partner.legal_representative_person = $scope.partner.representativeInfo.representative_person;
$scope.partner.legal_representative_id = $scope.partner.representativeInfo.legal_representative_id;
$scope.partner.legal_representative_phone = $scope.partner.representativeInfo.phone;
$scope.partner.legal_representative_email = $scope.partner.representativeInfo.email;
$scope.partner.legal_representative_job = $scope.partner.representativeInfo.job_title;

@ -7373,7 +7373,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.subMerchantInfo = angular.copy(subMerchantInfo)
$scope.subMerchantInfo.online = online;
$scope.subMerchantInfo.merchantDisplayName = $scope.subMerchantInfo.short_name;
$scope.subMerchantInfo.registrationAddress = $scope.subMerchantInfo.address;
$scope.subMerchantInfo.registrationAddress = $scope.subMerchantInfo.address+","+$scope.subMerchantInfo.suburb+","+$scope.subMerchantInfo.state;
// if ($scope.subMerchantInfo.client_pay_type) {
// if ($scope.subMerchantInfo.client_pay_type.indexOf('1') >= 0 && $scope.subMerchantInfo.client_pay_type.indexOf('2') >= 0) {
@ -7389,20 +7389,22 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
// $scope.subMerchantInfo.business_type_offline = true;
// }
if ($scope.subMerchantInfo.online) {
$scope.title = "AlipayPlus-aps(Online)Registration";
$scope.title = "Alipay+(Online)Registration";
} else {
$scope.title = "AlipayPlus-aps(Retail)Registration";
$scope.title = "Alipay+(Retail)Registration";
}
$scope.subMerchantInfo.websiteType = 'WEB';
$scope.subMerchantInfo.website = $scope.subMerchantInfo.company_website;
$scope.subMerchantInfo.legalName = $scope.subMerchantInfo.company_name;
$scope.subMerchantInfo.registrationType = 'OTHER_IDENTIFICATION_NO'
$scope.subMerchantInfo.registrationType = 'ENTERPRISE_REGISTRATION_NO'
if ($scope.subMerchantInfo.business_structure) {
$scope.subMerchantInfo.businessType = $scope.subMerchantInfo.business_structure != 'Registered body(Sole Trader)' ? 'ENTERPRISE' : 'INDIVIDUAL'
$scope.subMerchantInfo.businessType = $scope.subMerchantInfo.business_structure == 'Company' ? 'ENTERPRISE' : 'INDIVIDUAL'
}
$scope.subMerchantInfo.shareholderName = $scope.subMerchantInfo.representativeInfo ? $scope.subMerchantInfo.representativeInfo.representative_person : "";
$scope.subMerchantInfo.shareholderId = $scope.subMerchantInfo.representativeInfo ? $scope.subMerchantInfo.representativeInfo.legal_representative_id : "";
$scope.subMerchantInfo.representativeName = $scope.subMerchantInfo.representativeInfo ? $scope.subMerchantInfo.representativeInfo.representative_person : "";
$scope.subMerchantInfo.storeAddress = $scope.subMerchantInfo.address;
$scope.subMerchantInfo.representativeId = $scope.subMerchantInfo.representativeInfo ? $scope.subMerchantInfo.representativeInfo.legal_representative_id : "";
$scope.subMerchantInfo.storeAddress = $scope.subMerchantInfo.address+","+$scope.subMerchantInfo.suburb+","+$scope.subMerchantInfo.state;
$scope.subMerchantInfo.registrationNo = $scope.subMerchantInfo.acn ? $scope.subMerchantInfo.acn : $scope.subMerchantInfo.abn;
$scope.subMerchantInfo.storeMCC = $scope.subMerchantInfo.alipayindustry;
$scope.subMerchantInfo.storeName = $scope.subMerchantInfo.store_name;

@ -435,6 +435,7 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload', 'uiBoo
$scope.partner.registered_postcode = $scope.partner.representativeInfo.postcode;
$scope.partner.registered_state = $scope.partner.representativeInfo.state;
$scope.partner.legal_representative_person = $scope.partner.representativeInfo.representative_person;
$scope.partner.legal_representative_id = $scope.partner.representativeInfo.legal_representative_id;
$scope.partner.legal_representative_phone = $scope.partner.representativeInfo.phone;
$scope.partner.legal_representative_email = $scope.partner.representativeInfo.email;
$scope.partner.legal_representative_job = $scope.partner.representativeInfo.job_title;

@ -854,6 +854,25 @@
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_id.$invalid && partnerForm.legal_representative_id.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_id-input">*
Representative ID</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_id"
required
name="legal_representative_person"
id="legal_representative_id-input" maxlength="50">
<div ng-messages="partnerForm.legal_representative_id.$error"
ng-if="partnerForm.legal_representative_id.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_phone_p.$invalid && partnerForm.legal_representative_phone_p.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone_p-input">*

@ -712,6 +712,25 @@
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_id.$invalid && partnerForm.legal_representative_id.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_id-input">*
Representative ID</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_id"
required
name="legal_representative_id"
id="legal_representative_id-input" maxlength="50">
<div ng-messages="partnerForm.legal_representative_id.$error"
ng-if="partnerForm.legal_representative_id.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_phone_p.$invalid && partnerForm.legal_representative_phone_p.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone_p-input">*

@ -12,10 +12,10 @@
<label class="control-label col-sm-4" for="merchantDisplayName_input">Merchant DisplayName</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.merchantDisplayName"
type="text" name="merchantDisplayName" id="merchantDisplayName_input" required maxlength="50">
type="text" name="merchantDisplayName" id="merchantDisplayName_input" required maxlength="64">
<div ng-messages="subForm.merchantDisplayName.$error" ng-if="subForm.merchantDisplayName.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 50</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 64</p>
</div>
</div>
</div>
@ -146,7 +146,7 @@
type="text" name="registrationAddress" id="registrationAddress_input" required maxlength="256">
<div ng-messages="subForm.registrationAddress.$error" ng-if="subForm.registrationAddress.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 64</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 256</p>
</div>
</div>
</div>
@ -193,7 +193,7 @@
</div>
</div>
</div>
<div class="form-group" ng-if="subMerchantInfo.businessType == 'ENTERPRISE'"
<div class="form-group" ng-if="subMerchantInfo.businessType == 'INDIVIDUAL'"
ng-class="{'has-error':subForm.representativeName.$invalid && subForm.representativeName.$dirty}">
<label class="control-label col-sm-4" for="representativeName_input">* Representative Name</label>
<div class="col-sm-8">
@ -205,7 +205,7 @@
</div>
</div>
</div>
<div class="form-group" ng-if="subMerchantInfo.businessType == 'ENTERPRISE'"
<div class="form-group" ng-if="subMerchantInfo.businessType == 'INDIVIDUAL'"
ng-class="{'has-error':subForm.representativeId.$invalid && subForm.representativeId.$dirty}">
<label class="control-label col-sm-4" for="representativeId_input">* Representative Id</label>
<div class="col-sm-8">

@ -421,6 +421,13 @@
<p class="form-control-static" ng-bind="partner.representativeInfo.representative_person"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Representative ID</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.representativeInfo.legal_representative_id"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Wechat ID</label>

@ -458,6 +458,25 @@
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_id.$invalid && partnerForm.legal_representative_id.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_id-input">*
Representative ID</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_id"
required
name="legal_representative_id"
id="legal_representative_id-input" maxlength="50">
<div ng-messages="partnerForm.legal_representative_id.$error"
ng-if="partnerForm.legal_representative_id.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_phone.$invalid && partnerForm.legal_representative_phone.$dirty}">

@ -235,8 +235,13 @@
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
<h3>China Wallet</h3>
<div class="panel-heading" style="display: flex;justify-content: space-between">
<h3>China Wallets Rate</h3>
<a id="addRate" class="btn btn-info" style="margin-bottom: 10px;margin-top: 20px" type="button"
ng-if="partner.rate_editable && (('11'|withRole)||((!partner.approve_result||partner.approve_result>4) && ('111'|withRole)))"
ng-click="newRate()">
Add Rate
</a>
</div>
<div class="panel-body">
<div class="row">
@ -266,11 +271,6 @@
ng-click="bankCtrl.rate_name='CB_BankPay'"
ng-if="sysconfig.active_channels.indexOf('CB_BankPay')!=-1">CB_BankPay</a>
</li>
<a id="addRate" class="btn btn-info" style="float: right;margin-right: 10px" type="button"
ng-if="partner.rate_editable && (('11'|withRole)||((!partner.approve_result||partner.approve_result>4) && ('111'|withRole)))"
ng-click="newRate()">
Add Rate
</a>
</ul>
<div class="table-responsive">
<table class="table table-bordered">
@ -385,8 +385,13 @@
</div>
<!-- card payment -->
<div class="panel-heading">
<div class="panel-heading" style="display: flex;justify-content: space-between">
<h3>Card Payment Rate</h3>
<a id="addCardPaymentRate" class="btn btn-info" style="margin-top: 20px;margin-bottom: 10px" type="button"
ng-click="newCardPaymentRates()"
ng-if="((partner.card_rate_editable && ('100'|withRole)) || ('11'|withRole))">
Add Card Payment Rates
</a>
</div>
<div class="panel-body">
<div class="row">
@ -398,11 +403,6 @@
<!-- <li role="presentation" ng-class="{active:bankCtrl.rate_name=='rpaypmt_dd'}"><a role="button"-->
<!-- ng-click="bankCtrl.rate_name='rpaypmt_dd'">Direct-->
<!-- Debit</a></li>-->
<a id="addCardPaymentRate" class="btn btn-info" style="float: right" type="button"
ng-click="newCardPaymentRates()"
ng-if="((partner.card_rate_editable && ('100'|withRole)) || ('11'|withRole))">
Add Card Payment Rates
</a>
</ul>
<div class="table-responsive">
<table class="table table-bordered">
@ -453,8 +453,13 @@
</div>
<!-- APS -->
<div class="panel-heading">
<h3>A+</h3>
<div class="panel-heading" style="display: flex;justify-content: space-between">
<h3>Alipay+ Rate</h3>
<a id="addAlipayApsInStoreRate" class="btn btn-info" style="margin-bottom: 10px;margin-top: 20px"
type="button"
ng-click="newAlipayApsRate(apsBankCtrl.rate_name)">
Add A+(APS) Rate
</a>
</div>
<div class="panel-body">
<div class="row">
@ -468,11 +473,6 @@
role="button"
ng-click="apsBankCtrl.rate_name='ApsCashier'">A+(Online)</a>
</li>
<a id="addAlipayApsInStoreRate" class="btn btn-info" style="float: right;margin-right: 10px"
type="button"
ng-click="newAlipayApsRate(apsBankCtrl.rate_name)">
Add A+(APS) Rate
</a>
</ul>
<div class="table-responsive">
<table class="table table-bordered">

@ -1025,6 +1025,14 @@
ng-bind="partner.representativeInfo.representative_person "></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Representative ID</label>
<div class="col-sm-8">
<p class="form-control-static"
ng-bind="partner.representativeInfo.legal_representative_id "></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Wechat ID</label>

@ -795,6 +795,27 @@
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_id.$invalid && partnerForm.legal_representative_id.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_id-input">*
Representative ID</label>
<div class="col-sm-8">
<div >
<input class="form-control" ng-model="partner.legal_representative_id"
required
name="legal_representative_id"
id="legal_representative_id-input" maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_id.$error"
ng-if="partnerForm.legal_representative_id.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_phone.$invalid && partnerForm.legal_representative_phone.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone-input">* Phone</label>

@ -14,10 +14,10 @@
</div>
<div class="form-group"
ng-class="{'has-error':rate_form.rate_value.$invalid && rate_form.rate_value.$dirty}">
<label ng-if="rate.rate_name != 'AlipayAps'" class="control-label col-sm-4" for="rate_value_input">
<label ng-if="rate.rate_name != 'ApsInStore' && rate.rate_name != 'ApsCashier'" class="control-label col-sm-4" for="rate_value_input">
<span ng-if="rate.rate_name=='rpaypmt_card'">Domestic </span>
Rate Value</label>
<label ng-if="rate.rate_name == 'AlipayAps'" class="control-label col-sm-4" for="rate_value_input">
<label ng-if="rate.rate_name == 'ApsCashier' || rate.rate_name == 'ApsInStore'" class="control-label col-sm-4" for="rate_value_input">
Interchange Fee</label>
<div class="col-sm-6">
<div class="input-group">
@ -65,8 +65,8 @@
<!-- 新增transaction_fee字段 -->
<div class="form-group"
ng-class="{'has-error':rate_form.transaction_fee.$invalid && rate_form.transaction_fee.$dirty}">
<label ng-if="rate.rate_name != 'AlipayAps'" class="control-label col-sm-4" for="transaction_fee_input">Transaction Fee</label>
<label ng-if="rate.rate_name == 'AlipayAps'" class="control-label col-sm-4" for="transaction_fee_input">Service Fee</label>
<label ng-if="rate.rate_name != 'ApsInStore' && rate.rate_name != 'ApsCashier'" class="control-label col-sm-4" for="transaction_fee_input">Transaction Fee</label>
<label ng-if="rate.rate_name == 'ApsInStore' || rate.rate_name == 'ApsCashier'" class="control-label col-sm-4" for="transaction_fee_input">Service Fee</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="transaction_fee" class="form-control"

@ -164,6 +164,25 @@ define(['angular', 'uiRouter'], function () {
$scope.date = angular.copy($stateParams.date)
$scope.date = $scope.date.substr(0, 4) + '-' + $scope.date.substr(4, 2) + '-' + $scope.date.substr(6)
$scope.warningLevel = JSON.parse(sessionStorage.getItem('warningLevel'))
$scope.validItAgain = function () {
commonDialog
.confirm({
title: 'Confirm reconciliations',
contentHtml: $sce.trustAsHtml('<input type="checkbox" id="isSendMessage">Agree to send push message'),
})
.then(function () {
var isSendMessage = document.getElementById('isSendMessage').checked
$http
.get('/sys/financial/order_validations/' + $stateParams.date, {
params: {
use_cache: false,
is_send_message: isSendMessage,
},
timeout: 300000,
})
.then($scope.startValid())
})
}
// 加载渠道信息
$scope.startValid = function () {
$http

@ -10,6 +10,7 @@
<i class="fa fa-check-circle text-green fa-2x" style="margin-left: 24px;" ng-if="warningLevel === 0"></i>
<i class="fa fa-exclamation-triangle text-yellow fa-2x" style="margin-left: 24px;" ng-if="warningLevel === 1"></i>
<i class="fa fa-exclamation-triangle text-red fa-2x" style="margin-left: 24px;" ng-if="warningLevel === 2"></i>
<button type="button" style="margin-left: 24px" class="btn btn-primary ng-binding ng-scope" ng-click="validItAgain()">Verify it again</button>
</section>
<section class="content">
<div ng-repeat="(index,item) in channelList">

Loading…
Cancel
Save