结汇.md 2.2 KB

结汇 CNH结算成CNY

结汇是什么意思?

流程

流程图

1. 发起结汇

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

// 提交结汇的账户 ,金额,等
http.post("",{
    amount:10000.00,
    //currencyID:88,  // 币种 CNY
    paymentChannel:"CNH",  //"alipay" unionpay
    fromAccountID:"66688",  //来自到的账户
    toAccountID:"2332",  //转到的账户
    TradeType:"settlement"
})



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

3. 关联操作的账户

orderSN:="charge".util.PayTool.GenOrderSn()    //生成结汇单号  settlement202204221059590001
order := &entity.PaymentOoder{
    MerchantID:mid,
    FromCurrencyID:CurrencyID, // 币种
    ToCurrencyID:22325222 ,//转到的账户 
    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    ,        //步骤
    StepName:"order_create", //步骤 init
    TradeType:"settlement", //交易类型 结汇
    notify_msg:""      //回调信息
}
err:=repo.PaymentOrderLogDao.Save(payLog)  //保存订单日志



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

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



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

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



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

6.1 查询订单信息,获取商户外部账户信息(CNY币种),订单金额等
6.2 更改外部账户金额、记录订单状态等到MerchantAccountOutLog日志
6.3 记录订单状态等到PaymentOrderLog日志