换汇.md 2.0 KB

换汇 外币转成CNH

流程

流程图

1. 发起结汇

商户从前端选择 系统账户(币种CNH),发起换汇,

// 提交结汇的账户 ,金额,等
http.post("",{
    amount:10000.00,
    fromAccountID:"66688",  //来自到的账户
    toAccountID:"2332",  //转到的账户
    TradeType:"swap"
})



2. 收款系统生成结汇订单号 ,记录到交易日志

3. 关联操作的账户

orderSN:="charge".util.PayTool.GenOrderSn()    //生成结汇单号  settlement202204221059590001
order := &entity.PaymentOoder{
    MerchantID:mid,
    FromCurrencyID:fromCurrencyID, //来自账户 币种如USD  /EUR
    ToCurrencyID:toCurrencyID ,//转到的账户 CNH
    Amount:1000.00 ,   //金额
    FromAccountID:22325222 ,//来自到的账户
    ToAccountID:22325222 ,//转到的账户 
    OrderSN:orderSN,
    TradeType:"settlement", //交易类型 结汇	
    TradeOrg:"settlement", //交易 机构指银行	
    OrderSN:orderSN,
    //  ......
}
accountID,err:=repo.PaymentOrderDao.Save(order)  //保存订单

//日志
payLog:=&entity.PaymentOoderLog{
    OrderSN:orderSN,
    StepR:0    ,        //步骤
    StepR:"order_create", //步骤 init
    TradeType:"settlement", //交易类型 结汇
    CallBack:""      //回调信息
}
err:=repo.PaymentOrderLogDao.Save(payLog)  //保存订单日志



4. 向银行机构发起结汇请求 略

4.1 查询实时汇率等,渠道,币种;
4.2 包装请求体,向银行发起结汇请求
4.3 记录请求数据及响应数据



5. 收到银行机构结汇成功的通知

5.1 解析通知body, 查询订单,验证签名,回应银行机构 success
5.2 更改订单状态,记录银行通知数据、订单状态等到日志



6.换汇成功,更改目标账户金额

6.1 查询订单信息,获取商户账户信息(CNH币种),订单金额等
6.3 记录订单状态等到PaymentOrderLog日志