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

master
dalong306 4 years ago
commit 08e507bdfa

@ -9,10 +9,11 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>manage</artifactId>
<version>2.3.78</version>
<version>2.3.80</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jib-maven-plugin.version>2.4.0</jib-maven-plugin.version>
<yixsoft-batis.version>1.0.12</yixsoft-batis.version>
</properties>
<dependencies>

@ -327,7 +327,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Resource
private SysClientUpayProfileMapper sysClientUpayProfileMapper;
@Resource
private PaymentApi paymentApi;
private PaymentApi paymentApi;
@Resource
private MerchantChannelPermissionManager merchantChannelPermissionManager;
@ -551,7 +551,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
client.put("enable_alipayplus", false);
MerchantChannelPermissionResolver resolver = this.paymentApi.channelApi(PayChannel.ALIPAY_PLUS.getChannelCode()).getChannelPermissionResolver();
if(!Objects.isNull(resolver)) {
if (!Objects.isNull(resolver)) {
if (resolver.newOrderEnabled(client)) {
client.put("enable_alipayplus", true);
}
@ -1371,6 +1371,15 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
public void sendInitEmail(final JSONObject client, String username, String pwd, boolean isUpayAuditPass) {
logger.debug("sending email after comply");
// 配置了部分组织不发送邮件
JSONObject sysConfig = sysConfigManager.getSysConfig();
String[] orgs = sysConfig.getString("no_send_email_org").split(",");
for (String org : orgs) {
if (client.getString("org_id").equals(org)) {
logger.info("Merchant of organization does not send email.(org_id:" + org + ")");
return;
}
}
List<JSONObject> bds = clientBDMapper.listClientBDInfoAvailable(client.getIntValue("client_id"), new Date());
Context ctx = new Context();
ctx.setVariable("bds", bds);
@ -1572,7 +1581,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Override
public void switchChannelPermission(JSONObject manager, String clientMoniker, String channel, boolean allow) {
for (PaymentChannelApi channelApi : paymentApi.channels()) {
if (channelApi.channel().equalsIgnoreCase(channel) ) {
if (channelApi.channel().equalsIgnoreCase(channel)) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new NotFoundException("Client Not Exists");
@ -1581,7 +1590,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
try {
clientModifySupport.processModify(new SwitchPermissionModify(manager, clientMoniker, "enable_" + channel.toLowerCase(), allow));
} catch (Exception e) {
logger.error("Failed to change channel switch:{}" ,channel);
logger.error("Failed to change channel switch:{}", channel);
}
logger.info("{}({}) switched client {} channel {} to {}", manager.getString("display_name"), manager.getString("manager_id"), clientMoniker, channel, allow);
if (allow && (StringUtils.equalsAnyIgnoreCase("Wechat", channel) || StringUtils.equalsAnyIgnoreCase("Alipay", channel))) {
@ -2004,14 +2013,33 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
configNewClientRate(config, clientId, "AlipayOnline", "alipayonline_rate_value", org, "min_alipayonline_rate");
configNewClientRate(config, clientId, "Rpay", "Rpay_rate_value", org, "min_Rpay_rate");
configNewClientRate(config, clientId, "CB_BankPay", "cb_bankpay_rate_value", org, "min_cb_bankpay_rate");
addAlipayPlusRateConfig(config, clientId, PayChannel.ALIPAY_PLUS.getChannelCode());
}
private void addAlipayPlusRateConfig(JSONObject config, int clientId, String channel) {
if (config.getString("alipay_cn_retail") != null) {
config.put("pay_type", "alipay_cn_retail");
configNewClientRate(config, clientId, channel, "alipay_cn_retail", null, null);
}
if (config.getString("alipay_cn_online") != null) {
config.put("pay_type", "alipay_cn_online");
configNewClientRate(config, clientId, channel, "alipay_cn_online", null, null);
}
if (config.getString("alipay_other") != null) {
config.put("pay_type", "alipay_other");
configNewClientRate(config, clientId, channel, "alipay_other", null, null);
}
config.remove("pay_type");
}
private void configNewClientRate(JSONObject config, int clientId, String channel, String rateKey, JSONObject org, String rateValueKey) {
if (config.containsKey(rateKey)) {
JSONObject newConfig = new JSONObject();
newConfig.putAll(config);
newConfig.put("rate_value", config.getBigDecimal(rateKey));
newConfig.put("rate_name", channel);
newConfig.put("pay_type", config.getString("pay_type"));
if (!clientRateMapper.listClientRatesForSaving(clientId, config.getDate("active_time"), config.getDate("expiry_time"), config.getBigDecimal("rate_value"), config.getInteger("clean_days"), channel).isEmpty()) {
return;
}
@ -2024,10 +2052,17 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
newConfig.put("ext_rates", extRateParams.toJSONString());
} else {
List<JSONObject> existRate = clientRateMapper.listCurrentClientRates(clientId, config.getDate("active_time"), channel);
for (JSONObject rateLog : existRate) {
rateLog.put("expiry_time", DateUtils.addDays(config.getDate("active_time"), -1));
clientRateMapper.updateConfig(rateLog);
}
existRate.stream().filter(existConfig -> {
if (existConfig.getDate("active_time").equals(config.getDate("active_time")) && existConfig.getDate("expiry_time").equals(config.getDate("expiry_time"))) {
return false;
}
return true;
}
)
.forEach((rateLog) -> {
rateLog.put("expiry_time", DateUtils.addDays(config.getDate("active_time"), -1));
clientRateMapper.updateConfig(rateLog);
});
}
if ("cb_bankpay".equalsIgnoreCase(channel)) {
if (newConfig.getBigDecimal("cb_bankpay_rate_value") != null) {
@ -5800,16 +5835,16 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
throw new InvalidShortIdException();
}
checkOrgPermission(manager, client);
AlipayMerchantEntity alipayMch = merchantChannelApplicationManager.getRegister(AlipayRetailApi.class).findMerchant(client);
Element resultElement = alipayMch.getRawResponseXml();
if (!StringUtils.equalsIgnoreCase("T", resultElement.elementText("is_success"))) {
return "查询成功:" + resultElement.elementText("error");
try {
AlipayMerchantEntity alipayMch = merchantChannelApplicationManager.getRegister(AlipayRetailApi.class).findMerchant(client);
Element responseElement = alipayMch.getRawResponseXml();
String rejectReason = responseElement.elementText("reject_reason");
return "查询成功:" + responseElement.elementText("secondary_merchant_id") +
"报备状态:" + responseElement.elementText("status") + StringUtils.defaultString(rejectReason, "");
}catch (BadRequestException e){
logger.error(e.getMessage(),e);
return e.getMessage();
}
Element responseElement = resultElement.element("response").element("alipay");
String rejectReason = responseElement.elementText("reject_reason");
return "查询成功:" + responseElement.elementText("secondary_merchant_id") +
"报备状态:" + responseElement.elementText("status") + StringUtils.defaultString(rejectReason, "");
}
@Override
@ -5940,17 +5975,17 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (client == null) {
throw new InvalidShortIdException();
}
AlipayConfig.AlipayMerchant mch = AlipayEnvironment.getEnv().getAlipayOnlineMerchant();
AlipayMerchantEntity entity = merchantChannelApplicationManager.getRegister(AlipayOnlineApi.class)
.findMerchant(client);
Element resultElement = entity.getRawResponseXml();
if (!StringUtils.equalsIgnoreCase("T", resultElement.elementText("is_success"))) {
return "查询成功" + resultElement.elementText("error");
}
Element responseElement = resultElement.element("response").element("alipay");
String rejectReason = responseElement.elementText("reject_reason");
return "查询成功:" + responseElement.elementText("secondary_merchant_id") +
"报备状态:" + responseElement.elementText("status") + StringUtils.defaultString(rejectReason, "");
try {
AlipayMerchantEntity entity = merchantChannelApplicationManager.getRegister(AlipayOnlineApi.class)
.findMerchant(client);
Element responseElement = entity.getRawResponseXml();
String rejectReason = responseElement.elementText("reject_reason");
return "查询成功:" + responseElement.elementText("secondary_merchant_id") +
"报备状态:" + responseElement.elementText("status") + StringUtils.defaultString(rejectReason, "");
} catch (BadRequestException e) {
logger.error(e.getMessage(), e);
return e.getMessage();
}
}
@Override

@ -10,13 +10,18 @@ import com.yixsoft.support.mybatis.utils.FieldDescription;
import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.hibernate.validator.constraints.Range;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.AnnotatedElementUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@JSONType(naming = PropertyNamingStrategy.SnakeCase)
public class DefaultClientProfile {
private final Logger logger = LoggerFactory.getLogger(getClass());
@ProfileDesc(value = "周末延迟清算", detail = "周末交易延迟到周二清算")
private boolean weekendDelay = true;
@ProfileDesc("手续费包含GST")
@ -35,40 +40,46 @@ public class DefaultClientProfile {
return new ClassFieldsDescription<>(getClass()).getFields().stream()
.filter(field -> !"class".equalsIgnoreCase(field.getFieldName()))
.map(this::convertFieldInfo)
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
private JSONObject convertFieldInfo(FieldDescription field) {
Object value = field.readField(this);
String fieldName = CaseFormat.LOWER_CAMEL.converterTo(CaseFormat.LOWER_UNDERSCORE).convert(field.getFieldName());
JSONObject info = new JSONObject();
info.put("field", fieldName);
info.put("value", value);
Class<?> fieldType = field.getMethod().getReturnType();
if (ClassUtils.isPrimitiveOrWrapper(fieldType)) {
if (ClassUtils.isPrimitiveWrapper(fieldType)) {
fieldType = ClassUtils.wrapperToPrimitive(fieldType);
}
if (fieldType.equals(boolean.class)) {
info.put("type", "checkbox");
try {
Object value = field.readField(this);
String fieldName = CaseFormat.LOWER_CAMEL.converterTo(CaseFormat.LOWER_UNDERSCORE).convert(field.getFieldName());
JSONObject info = new JSONObject();
info.put("field", fieldName);
info.put("value", value);
Class<?> fieldType = field.getMethod().getReturnType();
if (ClassUtils.isPrimitiveOrWrapper(fieldType)) {
if (ClassUtils.isPrimitiveWrapper(fieldType)) {
fieldType = ClassUtils.wrapperToPrimitive(fieldType);
}
if (fieldType.equals(boolean.class)) {
info.put("type", "checkbox");
} else {
info.put("type", "number");
}
} else {
info.put("type", "number");
info.put("type", "text");
}
} else {
info.put("type", "text");
}
ProfileDesc getterDesc = AnnotatedElementUtils.findMergedAnnotation(field.getMethod(), ProfileDesc.class);
try {
ProfileDesc fieldDesc = AnnotatedElementUtils.findMergedAnnotation(getClass().getDeclaredField(field.getFieldName()), ProfileDesc.class);
ProfileDesc desc = ObjectUtils.defaultIfNull(getterDesc, fieldDesc);
if (desc != null) {
info.put("title", desc.value());
info.put("detail", desc.detail());
ProfileDesc getterDesc = AnnotatedElementUtils.findMergedAnnotation(field.getMethod(), ProfileDesc.class);
try {
ProfileDesc fieldDesc = AnnotatedElementUtils.findMergedAnnotation(getClass().getDeclaredField(field.getFieldName()), ProfileDesc.class);
ProfileDesc desc = ObjectUtils.defaultIfNull(getterDesc, fieldDesc);
if (desc != null) {
info.put("title", desc.value());
info.put("detail", desc.detail());
}
} catch (NoSuchFieldException e) {
}
} catch (NoSuchFieldException e) {
return info;
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error("failed to access getter of field {}", field.getFieldName(), e);
return null;
}
return info;
}
public void applyToClientConfig(JSONObject client) {

@ -27,6 +27,7 @@ public class OrgInfo {
private Double alipay_rate_value;
private Double wechat_rate_value;
private Double alipayonline_rate_value;
private Double alipayplus_rate_value;
private Double cb_bankpay_rate_value;
// private Double rpaypmt_card_rate_value;
//卡支付-国内卡费率配置
@ -42,6 +43,7 @@ public class OrgInfo {
private String org_id;
private String commission_type;
private Double min_wechat_rate;
private Double min_alipayplus_rate;
private Double min_alipay_rate;
private Double min_alipayonline_rate;
private Double min_cb_bankpay_rate;
@ -79,6 +81,22 @@ public class OrgInfo {
return param;
}
public Double getAlipayplus_rate_value() {
return alipayplus_rate_value;
}
public void setAlipayplus_rate_value(Double alipayplus_rate_value) {
this.alipayplus_rate_value = alipayplus_rate_value;
}
public Double getMin_alipayplus_rate() {
return min_alipayplus_rate;
}
public void setMin_alipayplus_rate(Double min_alipayplus_rate) {
this.min_alipayplus_rate = min_alipayplus_rate;
}
public int getIs_valid() {
return is_valid;
}

@ -3404,6 +3404,97 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
}
$scope.complianceChangeCheck()
// 是否为alipayplus
$scope.isAlipayCN = true
// 修改渠道
$scope.changeAlipayPlusRateState = function (flag) {
$scope.isAlipayCN = flag
}
// 过滤渠道
$scope.isAlipayPlus = function (item) {
if ($scope.isAlipayCN) {
return item.rate_name === 'AlipayPlus' && (item.pay_type === 'alipay_cn_retail' || item.pay_type === 'alipay_cn_online')
} else {
return item.rate_name === 'AlipayPlus' && item.pay_type === 'alipay_other'
}
}
// 新增alipay+费率
$scope.newAlipayPlusRate = function () {
$uibModal
.open({
templateUrl: '/static/payment/partner/templates/partner_new_alipayplus_rate.html',
resolve: {
rate: function () {
return {
rate_name: 'AlipayPlus',
clean_days: '3',
}
},
sys_common_rate: function () {
return $http.get('/sys/partners/sys_rates')
},
clientMoniker: function () {
return $scope.partner.client_moniker
},
},
controller: [
'$scope',
'$http',
'rate',
'sys_common_rate',
'clientMoniker',
function ($scope, $http, rate, sys_common_rate, clientMoniker) {
$scope.rate = angular.copy(rate)
$scope.sysRateConfig = angular.copy(sys_common_rate.data)
$scope.ctrl = { sending: false }
$scope.saveRate = function (form) {
if (form.$invalid) {
angular.forEach(form, function (item, key) {
if (key.indexOf('$') < 0) {
item.$dirty = true
}
})
return
}
$scope.errmsg = null
$scope.ctrl.sending = true
$http.post('/sys/partners/' + clientMoniker + '/rates', $scope.rate).then(
function () {
$scope.ctrl.sending = false
$scope.$close()
},
function (resp) {
$scope.ctrl.sending = false
$scope.errmsg = resp.data.message
}
)
}
$scope.changeDays = function () {
// if ($scope.rate.clean_days) {
// switch ($scope.rate.clean_days) {
// case '1': {
// $scope.rate.alipayplus = parseFloat($scope.sysRateConfig.t1.AlipayPlus)
// break
// }
// case '2': {
// $scope.rate.alipayplus = parseFloat($scope.sysRateConfig.t2.AlipayPlus)
// break
// }
// case '3': {
// $scope.rate.alipayplus = parseFloat($scope.sysRateConfig.t3.AlipayPlus)
// break
// }
// }
// }
}
},
],
})
.result.then(function () {
$scope.getRates()
})
}
},
])
app.controller('surchargeAccountDetailCtrl', [

@ -8,7 +8,7 @@
<div class="col-sm-12">
<h3>Bank Account
<a class="small" role="button" ng-click="bankCtrl.edit=true"
ng-if="!bankCtrl.edit && (('11'|withRole)||((!partner.approve_result||partner.approve_result>4) && ('111'|withRole)))">
ng-if="!bankCtrl.edit && (('11'|withRole)||((!partner.approve_result||partner.approve_result>4) && ('111'|withRole)))">
<i class="fa fa-edit"></i>
</a>
</h3>
@ -18,15 +18,15 @@
<label class="col-sm-4">手续费账户余额</label>
<div class="col-sm-6" style="font-size: 25px">
<p>{{surcharge.balance|currency:'AUD'}}<i class="fa fa-bars"
style="font-size: 15px;color: #3c8dbc;cursor: pointer;padding-left: 15px"
ng-click="surchargeAccountDetail()"></i></p>
style="font-size: 15px;color: #3c8dbc;cursor: pointer;padding-left: 15px"
ng-click="surchargeAccountDetail()"></i></p>
</div>
</div>
<div class="form-group" ng-if="partner.surcharge_mode=='distributed'">
<label class="col-sm-4">允许手续费账户欠款</label>
<div class="col-sm-6">
<input type="checkbox" ng-model="partner.allow_surcharge_credit" bs-switch
switch-change="allowSurchargeCredit(partner.allow_surcharge_credit)">
switch-change="allowSurchargeCredit(partner.allow_surcharge_credit)">
</div>
</div>
<div class="form-group">
@ -34,12 +34,12 @@
<div class="col-sm-6">
<p>
<span ng-if="partner.surcharge_mode=='balance'">balance
<i class="fa fa-sort" style="color: #3c8dbc;cursor: pointer"
ng-click="switchSurchargeMode()"></i>
<i class="fa fa-sort" style="color: #3c8dbc;cursor: pointer"
ng-click="switchSurchargeMode()"></i>
</span>
<span ng-if="partner.surcharge_mode=='distributed'">distributed
<i class="fa fa-sort" style="color: #3c8dbc;cursor: pointer"
ng-click="switchSurchargeMode()"></i>
<i class="fa fa-sort" style="color: #3c8dbc;cursor: pointer"
ng-click="switchSurchargeMode()"></i>
</span>
<p class="text-info">
<i class="fa fa-info"></i>启用到收支分离(distributed)模式,将使消费者支付手续费模式失效<br>
@ -52,28 +52,28 @@
<label class="col-sm-4">RoyalPay Pay GST</label>
<div class="col-sm-6">
<input type="checkbox" ng-model="partner.tax_in_surcharge" bs-switch
switch-change="taxInSurcharge(partner.tax_in_surcharge)">
switch-change="taxInSurcharge(partner.tax_in_surcharge)">
</div>
</div>
<div class="form-group" ng-if="('10'|withRole)">
<label class="col-sm-4">Merchant Pay GST &ensp;<small><em>(消费者承担手续费时生效)</em></small></label>
<div class="col-sm-6">
<input type="checkbox" ng-model="partner.customer_tax_free" bs-switch
switch-change="customerTaxFree(partner.customer_tax_free)">
switch-change="customerTaxFree(partner.customer_tax_free)">
</div>
</div>
<div class="form-group" ng-if="'modify_skip_clear'|withFunc">
<label class="col-sm-4">Skip Clearing</label>
<div class="col-sm-6">
<input type="checkbox" ng-model="partner.skip_clearing" bs-switch
switch-change="skipClearing(partner.skip_clearing)">
switch-change="skipClearing(partner.skip_clearing)">
</div>
</div>
<div class="form-group" ng-if="'modify_skip_clear'|withFunc">
<label class="col-sm-4">Pre Settle</label>
<div class="col-sm-6">
<input type="checkbox" ng-model="partner.enable_presettle" bs-switch
switch-change="switchPreSettle(partner.enable_presettle)">
switch-change="switchPreSettle(partner.enable_presettle)">
</div>
</div>
<div class="form-group" ng-if="'modify_min_settle'|withFunc">
@ -86,7 +86,7 @@
<div class="input-group" ng-if="bankCtrl.modify_min_settle">
<div class="input-group-addon">AU$</div>
<input class="form-control" ng-model="partner.min_settle" type="number" id="minSettleEdit"
min="0">
min="0">
<div class="input-group-btn">
<button class="btn btn-danger" ng-click="bankCtrl.modify_min_settle=false"><i
class="fa fa-close"></i>
@ -114,27 +114,26 @@
<label class="col-sm-4">Settle Hour</label>
<div class="col-sm-6">
<select ng-model="partner.settle_hour" class="form-control"
ng-options="hour.value as hour.label for hour in settleHours"
ng-change="settleHourConfig()"></select>
ng-options="hour.value as hour.label for hour in settleHours"
ng-change="settleHourConfig()"></select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="swiftcode_input">Swift Code</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.swift_code" id="swiftcode_input"
required
ng-readonly="!bankCtrl.edit">
required ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="bsb_no_input">BSB No</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.bsb_no" id="bsb_no_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
<div class="col-sm-2" ng-if="bankCtrl.edit">
<a class="btn btn-success" role="button" ng-click="getBankInfo(bankaccount.bsb_no)"><i
@ -145,82 +144,81 @@
<label class="col-sm-4" for="bank_input">Bank</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.bank" id="bank_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="city_input">City</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.city" id="city_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="address_input">Address</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.address" id="address_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="system_input">System</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.system" id="system_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="postcode_input">Postcode</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.postcode" id="postcode_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="state_input">State</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.state" id="state_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="branch_input">Branch</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.branch" id="branch_input" required
ng-readonly="!bankCtrl.edit">
ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="account_no_input">Account No</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" ng-model="bankaccount.account_no" id="account_no_input"
required
ng-readonly="!bankCtrl.edit">
required ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="form-group">
<label class="col-sm-4" for="account_name_input">Account Name</label>
<div class="col-sm-6">
<i class="fa fa-check-square-o check-i" aria-hidden="true"
ng-if="$root.complianceCheck.bankAccount"></i>
ng-if="$root.complianceCheck.bankAccount"></i>
<input class="form-control bank-input" maxlength="50" ng-model="bankaccount.account_name"
id="account_name_input" required ng-readonly="!bankCtrl.edit">
id="account_name_input" required ng-readonly="!bankCtrl.edit">
</div>
</div>
<div class="btn-group">
@ -236,105 +234,174 @@
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="panel panel-info">
<div class="panel-heading">
<h3>Rates <a class="text-success" role="button"
ng-if="partner.rate_editable && (('11'|withRole)||((!partner.approve_result||partner.approve_result>4) && ('111'|withRole)))"
ng-click="newRate()">
<i class="fa fa-plus"></i></a>
ng-if="partner.rate_editable && (('11'|withRole)||((!partner.approve_result||partner.approve_result>4) && ('111'|withRole)))"
ng-click="newRate()">
<i class="fa fa-plus"></i></a>
</h3>
<ul class="nav nav-pills margin-bottom">
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Wechat'}"><a role="button"
ng-click="bankCtrl.rate_name='Wechat'">Wechat</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Alipay'}"><a role="button"
ng-click="bankCtrl.rate_name='Alipay'">Alipay(Retail)</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='AlipayOnline'}"><a role="button"
ng-click="bankCtrl.rate_name='AlipayOnline'">Alipay(Online)</a>
</li>
<!-- <li role="presentation" ng-class="{active:bankCtrl.rate_name=='Bestpay'}"><a role="button"
ng-click="bankCtrl.rate_name='Bestpay'">Bestpay</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='jd'}"><a role="button"
ng-click="bankCtrl.rate_name='jd'">JDpay</a>
</li>-->
<!--<li role="presentation" ng-class="{active:bankCtrl.rate_name=='hf'}"><a role="button" ng-click="bankCtrl.rate_name='hf'">HFpay</a></li>-->
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Rpay'}"><a role="button"
ng-click="bankCtrl.rate_name='Rpay'">Rpay+</a>
</li>
<!--<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Yeepay'}"><a role="button" ng-click="bankCtrl.rate_name='Yeepay'">Yeepay</a></li>-->
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='CB_BankPay'}"><a role="button"
ng-click="bankCtrl.rate_name='CB_BankPay'"
ng-if="sysconfig.active_channels.indexOf('CB_BankPay')!=-1">CB_BankPay</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='rpaypmt_card'}"><a role="button"
ng-click="bankCtrl.rate_name='rpaypmt_card'">Card
Payment</a></li>
<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-warning" 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">
<thead>
<tr>
<th>Rate Name</th>
<th ng-if="bankCtrl.rate_name!='rpaypmt_card'">Rate Value</th>
<th ng-if="bankCtrl.rate_name=='rpaypmt_card'">Domestic Rate Value</th>
<th ng-if="bankCtrl.rate_name=='rpaypmt_card'">International Rate Value</th>
<th>Transaction Fee</th>
<th>Active Time</th>
<th>Expire Time</th>
<th ng-if="bankCtrl.rate_name=='Wechat' || bankCtrl.rate_name=='rpaypmt_card' ||bankCtrl.rate_name=='rpaypmt_dd'">
Clean Days
</th>
<th>Update Time</th>
<th>Operator</th>
<th>Remark</th>
<th style="text-align: center">Operation</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rate in rates|filter:{rate_name:bankCtrl.rate_name}:true"
ng-class="{'text-bold':rate.current,'success':rate.active}">
<td ng-bind="rate.rate_name"></td>
<td ng-if="bankCtrl.rate_name!='rpaypmt_card'" ng-bind="rate.rate_value + ' %'"></td>
<td ng-if="bankCtrl.rate_name=='rpaypmt_card'" ng-bind="rate.rate_value + ' %'"></td>
<td ng-if="bankCtrl.rate_name=='rpaypmt_card'"
ng-bind="rate.ext_rates.overseas_rate_value.rate + ' %/T+'+rate.ext_rates.overseas_rate_value.clean_days"></td>
<td ng-bind="'$ '+rate.transaction_fee"></td>
<td ng-bind="rate.active_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="rate.expiry_time|date:'yyyy-MM-dd'"></td>
<td ng-if="rate.rate_name=='Wechat' || bankCtrl.rate_name=='rpaypmt_card' ||bankCtrl.rate_name=='rpaypmt_dd'">
T+{{rate.clean_days}}
</td>
<td ng-bind="rate.update_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="rate.operator_name||'系统生成'"></td>
<td ng-bind="rate.remark|limitTo:20" title="{{rate.remark}}"></td>
<td style="text-align: center">
<a role="button" ng-click="editRate(rate)" style="padding-right: 10px;"
ng-if="'011'|withRole"><i class="fa fa-edit"></i></a>
<span ng-if="(bankCtrl.rate_name=='rpaypmt_card' ||bankCtrl.rate_name=='rpaypmt_dd')
&& partner.upay_approve_result">
<span style="color: orange">(Promotional Offer)</span>
<a class="fa fa-cloud-download" target="_blank"
ng-href="/sys/partners/{{partner.client_moniker}}/export/aggregate/card_promotion_agree_pdf?rateid={{rate.client_rate_id}}"></a>
</span>
</td>
</tr>
</tbody>
</table>
<div style="text-align: center">
<a role="button" style="margin-bottom: 25px;" class="btn btn-success btn-sm ng-scope"
ng-if="('10'|withRole)" ng-click="complianceCheck()">check</a>
</div>
<div class="panel-body">
<div class="row">
<div class="col-sm-12">
<ul class="nav nav-pills margin-bottom">
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Wechat'}"><a role="button"
ng-click="bankCtrl.rate_name='Wechat'">Wechat</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Alipay'}"><a role="button"
ng-click="bankCtrl.rate_name='Alipay'">Alipay(Retail)</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='AlipayOnline'}"><a role="button"
ng-click="bankCtrl.rate_name='AlipayOnline'">Alipay(Online)</a>
</li>
<!-- <li role="presentation" ng-class="{active:bankCtrl.rate_name=='Bestpay'}"><a role="button"
ng-click="bankCtrl.rate_name='Bestpay'">Bestpay</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='jd'}"><a role="button"
ng-click="bankCtrl.rate_name='jd'">JDpay</a>
</li>-->
<!--<li role="presentation" ng-class="{active:bankCtrl.rate_name=='hf'}"><a role="button" ng-click="bankCtrl.rate_name='hf'">HFpay</a></li>-->
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Rpay'}"><a role="button"
ng-click="bankCtrl.rate_name='Rpay'">Rpay+</a>
</li>
<!--<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Yeepay'}"><a role="button" ng-click="bankCtrl.rate_name='Yeepay'">Yeepay</a></li>-->
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='CB_BankPay'}"><a role="button"
ng-click="bankCtrl.rate_name='CB_BankPay'"
ng-if="sysconfig.active_channels.indexOf('CB_BankPay')!=-1">CB_BankPay</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='rpaypmt_card'}"><a role="button"
ng-click="bankCtrl.rate_name='rpaypmt_card'">Card
Payment</a></li>
<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-warning" 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">
<thead>
<tr>
<th>Rate Name</th>
<th ng-if="bankCtrl.rate_name!='rpaypmt_card'">Rate Value</th>
<th ng-if="bankCtrl.rate_name=='rpaypmt_card'">Domestic Rate Value</th>
<th ng-if="bankCtrl.rate_name=='rpaypmt_card'">International Rate Value</th>
<th>Transaction Fee</th>
<th>Active Time</th>
<th>Expire Time</th>
<th
ng-if="bankCtrl.rate_name=='Wechat' || bankCtrl.rate_name=='rpaypmt_card' ||bankCtrl.rate_name=='rpaypmt_dd'">
Clean Days
</th>
<th>Update Time</th>
<th>Operator</th>
<th>Remark</th>
<th style="text-align: center">Operation</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rate in rates|filter:{rate_name:bankCtrl.rate_name}:true"
ng-class="{'text-bold':rate.current,'success':rate.active}">
<td ng-bind="rate.rate_name"></td>
<td ng-if="bankCtrl.rate_name!='rpaypmt_card'" ng-bind="rate.rate_value + ' %'"></td>
<td ng-if="bankCtrl.rate_name=='rpaypmt_card'" ng-bind="rate.rate_value + ' %'"></td>
<td ng-if="bankCtrl.rate_name=='rpaypmt_card'"
ng-bind="rate.ext_rates.overseas_rate_value.rate + ' %/T+'+rate.ext_rates.overseas_rate_value.clean_days">
</td>
<td ng-bind="'$ '+rate.transaction_fee"></td>
<td ng-bind="rate.active_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="rate.expiry_time|date:'yyyy-MM-dd'"></td>
<td
ng-if="rate.rate_name=='Wechat' || bankCtrl.rate_name=='rpaypmt_card' ||bankCtrl.rate_name=='rpaypmt_dd'">
T+{{rate.clean_days}}
</td>
<td ng-bind="rate.update_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="rate.operator_name||'系统生成'"></td>
<td ng-bind="rate.remark|limitTo:20" title="{{rate.remark}}"></td>
<td style="text-align: center">
<a role="button" ng-click="editRate(rate)" style="padding-right: 10px;"
ng-if="'011'|withRole"><i class="fa fa-edit"></i></a>
<span ng-if="(bankCtrl.rate_name=='rpaypmt_card' ||bankCtrl.rate_name=='rpaypmt_dd')
&& partner.upay_approve_result">
<span style="color: orange">(Promotional Offer)</span>
<a class="fa fa-cloud-download" target="_blank"
ng-href="/sys/partners/{{partner.client_moniker}}/export/aggregate/card_promotion_agree_pdf?rateid={{rate.client_rate_id}}"></a>
</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- AlipayPlus费率设置 -->
<div class="row">
<div class="col-sm-12">
<h4>AlipayPlus Rates <a class="text-success" role="button"
ng-if="partner.rate_editable && (('11'|withRole)||((!partner.approve_result||partner.approve_result>4||(partner.approve_result==4&&partner.open_status==3)) && ('111'|withRole)))"
ng-click="newAlipayPlusRate()">
<i class="fa fa-plus"></i></a>
</h4>
<ul class="nav nav-pills margin-bottom">
<li role="presentation" ng-class="{active:isAlipayCN}"><a role="button"
ng-click="changeAlipayPlusRateState(true)"
ng-if="sysconfig.active_channels.indexOf('AlipayPlus')!=-1">AlipayCN</a>
</li>
<li role="presentation" ng-class="{active:!isAlipayCN}"><a role="button"
ng-click="changeAlipayPlusRateState(false)">Other Wallets</a>
</li>
</ul>
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>Rate Name</th>
<th>Rate Value</th>
<th>Transaction Fee</th>
<th>Active Time</th>
<th>Expire Time</th>
<th>Clean Days</th>
<th>Update Time</th>
<th>Operator</th>
<th>Remark</th>
<th style="text-align: center">Operation</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rate in rates|filter:isAlipayPlus"
ng-class="{'text-bold':rate.current,'success':rate.active}">
<td ng-bind="rate.rate_name"></td>
<td ng-bind="rate.rate_value + ' %'"></td>
<td ng-bind="'$ '+rate.transaction_fee"></td>
<td ng-bind="rate.active_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="rate.expiry_time|date:'yyyy-MM-dd'"></td>
<td>T+{{rate.clean_days}}</td>
<td ng-bind="rate.update_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="rate.operator_name||'系统生成'"></td>
<td ng-bind="rate.remark|limitTo:20" title="{{rate.remark}}"></td>
<td style="text-align: center">
<a role="button" ng-click="editRate(rate)" style="padding-right: 10px;"
ng-if="'011'|withRole"><i class="fa fa-edit"></i></a>
<span ng-if="(bankCtrl.rate_name=='rpaypmt_card' ||bankCtrl.rate_name=='rpaypmt_dd')
&& partner.upay_approve_result">
<span style="color: orange">(Promotional Offer)</span>
<a class="fa fa-cloud-download" target="_blank"
ng-href="/sys/partners/{{partner.client_moniker}}/export/aggregate/card_promotion_agree_pdf?rateid={{rate.client_rate_id}}"></a>
</span>
</td>
</tr>
</tbody>
</table>
</div>
<div style="text-align: center">
<a role="button" style="margin-bottom: 25px;" class="btn btn-success btn-sm ng-scope"
ng-if="('10'|withRole)" ng-click="complianceCheck()">check</a>
</div>
</div>
</div>
</div>
</div>

@ -0,0 +1,150 @@
<div class="modal-header">
<h4>New AlipayPlus Rate</h4>
</div>
<div class="modal-body">
<div class="alert alert-danger" ng-if="errmsg" ng-bind="errmsg"></div>
<div class="row">
<div class="col-sm-12">
<form class="form-horizontal" novalidate name="rate_form">
<div class="form-group">
<label class="control-label col-sm-4">Clear Days</label>
<div class="col-sm-6">
<div class="input-group">
<select class="form-control" ng-model="rate.clean_days" id="citySelect"
ng-change="changeDays()">
<option value="1">T+1</option>
<option value="2">T+2</option>
<option value="3">T+3</option>
</select>
<div>{{rateConfig}}</div>
</div>
</div>
</div>
<!-- <div class="form-group"
ng-class="{'has-error':rate_form.alipay_cn_retail.$invalid && rate_form.alipay_cn_retail.$dirty}">
<label class="control-label col-sm-4" for="alipay_cn_retail_input">Alipay CN Retail
Rate</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="alipay_cn_retail" stringToNumber2 class="form-control"
ng-model="rate.alipay_cn_retail" min="0.7" max="3" step="0.1"
id="alipay_cn_retail_input" required>
<div class="input-group-addon">%</div>
</div>
<div ng-messages="rate_form.alipay_cn_retail.$error" ng-if="rate_form.alipay_cn_retail.$dirty">
<div class="small text-danger" ng-message="max">
<i class="glyphicon glyphicon-alert"></i> No More Than 3%
</div>
<div class="small text-danger" ng-message="min">
<i class="glyphicon glyphicon-alert"></i> No Less Than
0.7%
</div>
<div class="small text-danger" ng-message="required">
<i class="glyphicon glyphicon-alert"></i> Required Field
</div>
</div>
</div>
</div> -->
<div class="form-group"
ng-class="{'has-error':rate_form.alipay_cn_online.$invalid && rate_form.alipay_cn_online.$dirty}">
<label class="control-label col-sm-4" for="alipay_cn_online_input">Alipay CN Online
Rate</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="alipay_cn_online" stringToNumber2 class="form-control"
ng-model="rate.alipay_cn_online" min="0.7" max="3" step="0.1"
id="alipay_cn_online_input" required>
<div class="input-group-addon">%</div>
</div>
<div ng-messages="rate_form.alipay_cn_online.$error" ng-if="rate_form.alipay_cn_online.$dirty">
<div class="small text-danger" ng-message="max">
<i class="glyphicon glyphicon-alert"></i> No More Than 3%
</div>
<div class="small text-danger" ng-message="min">
<i class="glyphicon glyphicon-alert"></i> No Less Than
0.7%
</div>
<div class="small text-danger" ng-message="required">
<i class="glyphicon glyphicon-alert"></i> Required Field
</div>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':rate_form.alipay_other.$invalid && rate_form.alipay_other.$dirty}">
<label class="control-label col-sm-4" for="alipay_other_input">Other Wallets
Rate</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="alipay_other" stringToNumber2 class="form-control"
ng-model="rate.alipay_other" min="1.9" max="3" step="0.1" id="alipay_other_input"
required>
<div class="input-group-addon">%</div>
</div>
<div ng-messages="rate_form.alipay_other.$error" ng-if="rate_form.alipay_other.$dirty">
<div class="small text-danger" ng-message="max">
<i class="glyphicon glyphicon-alert"></i> No More Than 3%
</div>
<div class="small text-danger" ng-message="min">
<i class="glyphicon glyphicon-alert"></i> No Less Than
1.9%
</div>
<div class="small text-danger" ng-message="required">
<i class="glyphicon glyphicon-alert"></i> Required Field
</div>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':rate_form.transaction_fee.$invalid && rate_form.transaction_fee.$dirty}">
<label class="control-label col-sm-4" for="transaction_fee_input">Transaction Fee</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="Transaction_fee_value" stringToNumber2 class="form-control"
ng-model="rate.transaction_fee" min="0" step="0.1" max="1" id="transaction_fee_input"
required>
<div class="input-group-addon">$</div>
</div>
<div ng-messages="rate_form.transaction_fee.$error" ng-if="rate_form.transaction_fee.$dirty">
<div class="small text-danger" ng-message="min">
<i class="glyphicon glyphicon-alert"></i> No less than 0
</div>
<div class="small text-danger" ng-message="required">
<i class="glyphicon glyphicon-alert"></i> Required Field
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4" for="active_time_input">Active Date</label>
<div class="col-sm-6">
<input class="form-control" ng-model="rate.active_time" id="active_time_input"
uib-datepicker-popup size="10" placeholder="Active Date" is-open="activeDate.open"
ng-click="activeDate.open=true" datepicker-options="{maxDate:rate.expiry_time}" required>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4" for="expire_time_input">Expire Date</label>
<div class="col-sm-6">
<input class="form-control" ng-model="rate.expiry_time" id="expire_time_input"
uib-datepicker-popup size="10" placeholder="Expire Date" is-open="expireDate.open"
ng-click="expireDate.open=true" datepicker-options="{minDate:rate.active_time}" required>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4" for="remark_text">Remark</label>
<div class="col-sm-6">
<input class="form-control" ng-model="rate.remark" id="remark_text" type="text">
</div>
</div>
</form>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-success" type="button" ng-click="saveRate(rate_form)"
ng-disabled="ctrl.sending">Submit</button>
<button class="btn btn-danger" type="button" ng-click="$dismiss()">Cancel</button>
</div>

@ -24,7 +24,7 @@ $(document).ready(function () {
dataCache.paying = true;
$.ajax({
url: '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/'+window.order_id+'/order_params',
url: '../order_params',
method: 'GET',
dataType: 'json',
success: function (pay) {
@ -32,6 +32,11 @@ $(document).ready(function () {
location.href = window.redirect;
return;
}
if (pay.web_from) {
$('#alipay_plus').html(pay.web_from)
location.href = window.redirect;
return;
}
if (window.AlipayJSBridge) {
callPayment();
} else {

@ -24,7 +24,7 @@ $(document).ready(function () {
dataCache.paying = true;
$.ajax({
url: '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/'+window.order_id+'/order_params',
url: './order_params',
method: 'GET',
dataType: 'json',
success: function (pay) {
@ -32,6 +32,11 @@ $(document).ready(function () {
location.href = window.redirect;
return;
}
if (pay.web_from) {
$('#alipay_plus').html(pay.web_from)
startCheckOrder(window.order_id, window.redirect);
return;
}
if (window.AlipayJSBridge) {
callPayment();
} else {
@ -88,6 +93,9 @@ $(document).ready(function () {
} else {
setTimeout(checkOrderStd, 500);
}
},
error:function (){
setTimeout(checkOrderStd, 500);
}
})
}

@ -234,7 +234,7 @@ $(function () {
$('.pay_button').css({"background-color":"#eee",}).attr('disabled',true);
$('.bank_button').css({"background-color":"#eee",}).attr('disabled',true);
}else{
$('.pay_button').css({"background-color":"#19AD18",}).attr('disabled',false);
$('.pay_button').css({"background-color":"#108ee9",}).attr('disabled',false);
$('.bank_button').css({"background-color":"#FF6600",}).attr('disabled',false);
}
});

@ -113,6 +113,9 @@ $(document).ready(function () {
} else {
setTimeout(checkOrderStd, 500);
}
},
error:function (){
setTimeout(checkOrderStd, 500);
}
})
}

@ -68,7 +68,7 @@ server {
}
location ~ ^/api/v1.0/((alipay\w*)|(customs)|(rpay)|(yeepay)|(card_payment_view)|(lakala_pay)|(cb_bankpay)|(bestpay)|(hf)|(\w*gateway)|(micropay)|(retail_qrcode)|(share_code)|(payment))/ {
location ~ ^/api/v1.0/((alipay\w*)|(customs)|(rpay)|(yeepay)|(card_payment_view)|(lakala_pay)|(cb_bankpay)|(bestpay)|(hf)|(\w*gateway)|(micropay)|(retail_qrcode)|(share_code)|(payment)|(h5_payment))/ {
proxy_pass http://rppaycenter;
proxy_http_version 1.1;

Loading…
Cancel
Save