大家好,我是小悟
能刷到这篇文章的小伙伴,说明你已经对电商收付通有所了解,或者正在了解的路上,就算不了解,不妨先看看 电商收付通系统,可视化进件二级商户 这篇内容,相信对你了解收付通是什么,怎么用,解决什么问题有所帮助。
抽空对电商收付通系统功能进行了升级,主要功能:
服务商账号参数在成后台可配置,随时修改,立即生效。更换服务商账号相关参数无需修改代码再次打包部署,更便捷。参数包括本系统应用名称、服务商平台商户号、商户号绑定的appId、服务商平台商户API证书序列号、服务商平台商户API证书位置路径、微信支付平台证书位置路径、微信支付平台apiV3密钥、微信支付回调通知地址。
![电商收付通可视化进件二级商户,多功能升级_微信支付 电商收付通可视化进件二级商户,多功能升级_微信支付](//dev-img.mos.moduyun.com/20231023/e3a2f326-2ae6-41b8-9d7c-4e8179563773.png)
在商户管理模块新增了二级商户账户实时余额查询、二级商户预约提现,这两个合为一个功能即余额提现。显示了账户名称、账户账号、商户号、账户可用余额、账户不可用余额。输入提现金额,点击确定即可将账户可用余额提现到账户账号中去。
![电商收付通可视化进件二级商户,多功能升级_电商收付通_02 电商收付通可视化进件二级商户,多功能升级_微信支付_02](//dev-img.mos.moduyun.com/20231023/bef9a5e4-094b-4458-84f3-6cc9ac8e1ec3.png)
public AjaxResult subBlance(Long id) {
Merchant merchant = merchantMapper.selectMerchantById(id);
QueryBalanceParam param = new QueryBalanceParam();
param.setAppName(appName)
.setMchId(mchId)
.setMchSerialNo(mchSerialNo)
.setWechatSerialNo(wechatSerialNo)
.setMchPrivateKeyPath(mchPrivateKeyPath)
.setWechatPubKeyPath(wechatPubKeyPath);
param.setSub_mchid(merchant.getMchId());
JSONObject queryResult = balanceService.subBlance(param);
QueryBalanceResult result = new QueryBalanceResult();
int queryStatus = queryResult.getInteger("requestStatus");
if (queryStatus == 200) {
BigDecimal decimal100 = new BigDecimal("100");
result.setMerchantId(id)
.setAccountName(merchant.getMerchantName())
.setAccountNumber(merchant.getAccountNumber())
.setSubMchid(merchant.getMchId())
.setAvailableAmount(queryResult.getBigDecimal("available_amount").divide(decimal100))
.setPendingAmount(queryResult.getBigDecimal("pending_amount").divide(decimal100));
return AjaxResult.success(result);
} else {
return AjaxResult.error(queryResult.getString("message"));
}
}
native合单支付修改为可以输入金额。
![电商收付通可视化进件二级商户,多功能升级_微信支付_03 电商收付通可视化进件二级商户,多功能升级_微信支付_03](//dev-img.mos.moduyun.com/20231023/65d7d280-eba7-4cff-91d9-2ea44a3a5e76.png)
用户管理是用来添加个人用户为分账接收方,需要真实姓名和openid参数值,作为分账接收方,分到的金额是直接到个人零钱包的。
![电商收付通可视化进件二级商户,多功能升级_电商收付通_04 电商收付通可视化进件二级商户,多功能升级_微信支付_04](//dev-img.mos.moduyun.com/20231023/b1d5a0e0-0131-4683-9a8d-d0463cc3dd02.png)
public AjaxResult receiversAdd(UserMember userMember) {
try {
String encryptName = SignUtils.rsaEncryptOAEP(userMember.getNickname(), CertificateUtils.getCertificate(wechatPubKeyPath));
AddReceiverParam param = new AddReceiverParam();
param.setAppName(appName)
.setMchId(mchId)
.setMchSerialNo(mchSerialNo)
.setWechatSerialNo(wechatSerialNo)
.setMchPrivateKeyPath(mchPrivateKeyPath)
.setWechatPubKeyPath(wechatPubKeyPath);
param.setAppid(appId);
param.setType("PERSONAL_OPENID");
param.setAccount(userMember.getMpOpenId());
param.setRelation_type("OTHERS");
JSONObject addResult = profitsharingService.addReceiver(param);
int addStatus = addResult.getInteger("requestStatus");
String message = addResult.getString("message");
if (addStatus == 200) {
userMember.setAppid(appId)
.setUuid(UuidUtils.randomUUID());
this.save(userMember);
return AjaxResult.success();
} else {
return AjaxResult.error(message);
}
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
return AjaxResult.error(e.getMessage());
} catch (IOException e) {
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
}
订单管理存储的是合单支付的订单数据,可以对订单进行分账、完结分账、退款的操作。
![电商收付通可视化进件二级商户,多功能升级_电商收付通_05 电商收付通可视化进件二级商户,多功能升级_微信支付_05](//dev-img.mos.moduyun.com/20231023/2537e4c4-b30e-4e69-8fb3-48c792c0d395.png)
能够进行分账和完结分账的前提,是在下单的时候要标记该订单需要分账后续才可以进行分账和完结分账,分账比例最高30%。
![电商收付通可视化进件二级商户,多功能升级_电商收付通_06 电商收付通可视化进件二级商户,多功能升级_微信支付_06](//dev-img.mos.moduyun.com/20231023/1c136506-e7aa-4481-95e7-8f70b6c02af7.png)
![电商收付通可视化进件二级商户,多功能升级_电商收付通_07 电商收付通可视化进件二级商户,多功能升级_微信支付_07](//dev-img.mos.moduyun.com/20231023/393681f8-a2f4-4eb2-9c4f-4bef124366d7.png)
当订单被标记为待分账时,此时订单金额收到商户账户上是不可用状态,默认是180天。分账操作后将订单标记为分账结束,则会将剩余的订单金额变为可用状态,或者如果不想分账的话,直接进行完结分账的操作,此时是将订单全额变为可用状态。
![电商收付通可视化进件二级商户,多功能升级_电商收付通_08 电商收付通可视化进件二级商户,多功能升级_微信支付_08](//dev-img.mos.moduyun.com/20231023/b1047b44-4b86-459e-8554-0115874bc1e5.png)
退款是最容易理解的操作,就是将订单金额原路退回给支付者。
![电商收付通可视化进件二级商户,多功能升级_电商收付通_09 电商收付通可视化进件二级商户,多功能升级_微信支付_09](//dev-img.mos.moduyun.com/20231023/f6f4601c-77ad-419f-8f04-145121a58f2f.png)
public AjaxResult doRefundCombine(Long id) {
OrderDetail orderDetail = this.getById(id);
String transactionId = orderDetail.getTransactionId();
String orderStatus = orderDetail.getOrderStatus();
if (StringUtils.isNotBlank(transactionId) && StringUtils.equals(OrderStatusType.HAS_PAY.getType(), orderStatus)) {
RefundApplyParam param = new RefundApplyParam();
param.setAppName(appName)
.setMchId(mchId)
.setMchSerialNo(mchSerialNo)
.setWechatSerialNo(wechatSerialNo)
.setMchPrivateKeyPath(mchPrivateKeyPath)
.setWechatPubKeyPath(wechatPubKeyPath);
param.setSub_mchid(orderDetail.getSubMchid());
param.setSp_appid(appId);
param.setTransaction_id(orderDetail.getTransactionId());
String outRefundNo = RandomNum.randomUtils(5) + Date2Utils.getCurrentTime() + System.currentTimeMillis();
param.setOut_refund_no(outRefundNo);
RefundAmount amount = new RefundAmount();
amount.setRefund(orderDetail.getSubOrderAmount().intValue());
amount.setTotal(orderDetail.getTotalOrderAmount().intValue());
amount.setCurrency("CNY");
param.setAmount(amount);
JSONObject refundsResult = refundsService.refundApply(param);
int ordersStatus = refundsResult.getInteger("requestStatus");
String message = refundsResult.getString("message");
if (ordersStatus == 200) {
orderDetail.setRefundOutTradeNo(outRefundNo)
.setRefundTradeNo(refundsResult.getString("refund_id"))
.setRefundTime(new Date())
.setOrderStatus(OrderStatusType.HAS_REFUND.getType());
this.updateOrderDetail(orderDetail);
return AjaxResult.success();
} else {
return AjaxResult.error(message);
}
} else {
return AjaxResult.error("请选择已支付的订单退款");
}
}
![电商收付通可视化进件二级商户,多功能升级_电商收付通_10 电商收付通可视化进件二级商户,多功能升级_微信支付_10](//dev-img.mos.moduyun.com/20231023/8dcdec2a-02a8-49b8-ab2a-7fd59d1fd483.png)
收付通在手,生意你有。
公众号【悟空码字】后台回复【收付通升级】获取账号密码。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海