Browse Source

12月9日ipay接口

sunjiabei/feature-20251202094523-银行接口同步
sunjiabei 1 month ago
parent
commit
2411bdeb9f
  1. 11
      src/main/java/com/example/demo/controller/cash/BankController.java
  2. 26
      src/main/java/com/example/demo/domain/DTO/Ipay88DTO.java
  3. 3
      src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
  4. 3
      src/main/java/com/example/demo/service/cash/BankService.java
  5. 43
      src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java
  6. 14
      src/main/resources/cashMapper/CashCollectionMapper.xml

11
src/main/java/com/example/demo/controller/cash/BankController.java

@ -104,5 +104,14 @@ public class BankController {
return Result.error(e.getMessage());
}
}
//stripe银行接口(批量)
@Log("ipay银行接口(批量)")
@PostMapping("/ipayAuto")
public Result ipayAuto(@RequestBody BankDTO bankDTO) {
try {
return Result.success(bankService.ipayAuto(bankDTO));
} catch (Exception e) {
return Result.error(e.getMessage());
}
}
}

26
src/main/java/com/example/demo/domain/DTO/Ipay88DTO.java

@ -0,0 +1,26 @@
package com.example.demo.domain.DTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName Ipay88DTO
* @description:
* @author: Double
* @create: 202512-09 11:44
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class Ipay88DTO {
private String orderNo;//订单号
private String currency;//货币
private String amount;//金额
private String fee;//手续费
private String net;//净额
}

3
src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java

@ -2,6 +2,7 @@ package com.example.demo.mapper.cash;
//import com.example.demo.domain.DTO.PaymentDTO;
import com.example.demo.domain.DTO.FirstdataDTO;
import com.example.demo.domain.DTO.Ipay88DTO;
import com.example.demo.domain.DTO.PaymentDTO;
import com.example.demo.domain.DTO.StripeDTO;
import com.example.demo.domain.entity.CashRecord;
@ -76,5 +77,7 @@ public interface CashCollectionMapper {
void updateByGoldCoinOrderCodeByPayment(PaymentDTO paymentDTO);
void updateByGoldCoinOrderCodeByStripe(StripeDTO stripeDTO);
void updateByGoldCoinOrderCodeByFirstdata(FirstdataDTO firstdataDTO);
void updateByGoldCoinOrderCodeByIpay88(Ipay88DTO ipay88DTO);
List<String> selectFirstdataList();
List<CashCollection> selectIpayList();
}

3
src/main/java/com/example/demo/service/cash/BankService.java

@ -33,4 +33,7 @@ public interface BankService {
//firstdata银行接口(单个)
Result getFirstdata(BankDTO bankDTO);
//firstdata银行接口(批量)
Result ipayAuto(BankDTO bankDTO);
}

43
src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java

@ -671,6 +671,49 @@ public class BankServiceImpl implements BankService {
}
}
//IPAY银行接口(批量)
@Override
public Result ipayAuto(BankDTO bankDTO) {
// 获取需要处理的订单号列表
List<CashCollection> cashCollections = cashCollectionMapper.selectIpayList();
BankVO bankVO = new BankVO();
List<String> message = new ArrayList<>();
// 对每个订单执行getFirstdata方法
for (CashCollection cashCollection : cashCollections) {
// 创建一个新的BankDTO实例设置订单号
Ipay88DTO ipay88DTO = new Ipay88DTO();
ipay88DTO.setOrderNo(cashCollection.getOrderCode());
// 将double先转为int再转为string
double amountDouble = cashCollection.getPermanentGold() * 3.18;
int amountInt = (int) amountDouble;
ipay88DTO.setAmount(String.valueOf(amountInt));
double feeDouble = cashCollection.getPermanentGold() * 3.18 * 0.0085;
int feeInt = (int) feeDouble;
ipay88DTO.setFee(String.valueOf(feeInt));
double netDouble = cashCollection.getPermanentGold() * 3.18 - cashCollection.getPermanentGold() * 3.18 * 0.0085;
int netInt = (int) netDouble;
ipay88DTO.setNet(String.valueOf(netInt));
cashCollectionMapper.updateByGoldCoinOrderCodeByIpay88(ipay88DTO);
// 构建成功消息
Map<String, Object> successData = new HashMap<>();
successData.put("success", true);
successData.put("orderNo", ipay88DTO.getOrderNo());
successData.put("amount", ipay88DTO.getAmount());
successData.put("fee", ipay88DTO.getFee());
successData.put("net", ipay88DTO.getNet());
message.add(JSON.toJSONString(successData, true));
}
// 将message存入bankVO
bankVO.setMessage(message);
// 返回处理结果列表
return Result.success(bankVO);
}
/**
* 生成PaymentAsia API所需的签名
*

14
src/main/resources/cashMapper/CashCollectionMapper.xml

@ -311,6 +311,9 @@
<select id="selectFirstdataList" resultType="java.lang.String">
select bank_code from cash_record_collection where bank_code is not null and payload='FirstData' and order_no_status=1
</select>
<select id="selectIpayList" resultType="com.example.demo.domain.vo.cash.CashCollection">
select order_code,permanent_gold from cash_record_collection where payload='Ipay88' and order_no_status=1
</select>
<!--根据OrderCode订单号更新收款订单-->
<update id="updateByGoldCoinOrderCodeByPayment">
update cash_record_collection
@ -348,4 +351,15 @@
order_no_status=0
where order_code=#{orderId}
</update>
<update id="updateByGoldCoinOrderCodeByIpay88">
update cash_record_collection
SET
payment_currency='4',
received_currency='4',
payment_amount=#{amount},
received_amount=#{net},
handling_charge=#{fee},
order_no_status=0
where order_code=#{orderNo}
</update>
</mapper>
Loading…
Cancel
Save