68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
package q_bida
|
|
|
|
import (
|
|
"git.rosy.net.cn/baseapi/platformapi/alipayapi"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
|
"git.rosy.net.cn/jx-callback/globals/api"
|
|
)
|
|
|
|
// SendPayInfo2Ali 发起支付
|
|
func SendPayInfo2Ali(payOrder *model.WithdrawalRecord, param *model.AddWithdrawalRecordReq) (*model.WithdrawalRecord, error) {
|
|
if payOrder.WithdrawalMoney <= alipayapi.MinWithdrawalMoney {
|
|
aliResult, err := api.AliPayAPI.Withdrawal4AliPay(&alipayapi.WithdrawalParam{
|
|
OutBizNo: payOrder.OrderID,
|
|
TransAmount: utils.Int2Float64(payOrder.PayMoney) / 100,
|
|
OrderTitle: "京西生活提现成功",
|
|
PayeeInfo: &alipayapi.PayeeInfoParam{
|
|
Identity: param.AlipayAccount,
|
|
Name: param.AlipayName,
|
|
},
|
|
Remark: payOrder.Remark,
|
|
})
|
|
|
|
if err != nil || aliResult.Status != "SUCCESS" {
|
|
payOrder.OrderStatus = model.WithdrawalRecordPayFail // 支付失败
|
|
payOrder.Remark = "err:=" + err.Error()
|
|
} else {
|
|
payOrder.OrderStatus = model.WithdrawalRecordPaySuccess // 支付成功
|
|
payOrder.AlipayOrderId = aliResult.OrderId
|
|
payOrder.PayTime = utils.Str2Time(aliResult.TransDate)
|
|
}
|
|
}
|
|
return payOrder, nil
|
|
}
|
|
|
|
// UpdateUserMoney 修改数据库
|
|
func UpdateUserMoney(payOrder *model.WithdrawalRecord, userBill *model.UserBill) error {
|
|
// 如果支付成功
|
|
db := dao.GetDB()
|
|
tx, _ := dao.Begin(db)
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
panic(r)
|
|
}
|
|
dao.Commit(db, tx)
|
|
}()
|
|
|
|
switch payOrder.OrderStatus {
|
|
case model.WithdrawalRecordPaySuccess:
|
|
userBill.AccountBalance = userBill.AccountBalance - payOrder.WithdrawalMoney
|
|
if _, err := dao.UpdateEntityTx(tx, userBill, "AccountBalance"); err != nil {
|
|
dao.Rollback(db, tx)
|
|
return err
|
|
}
|
|
if err := dao.CreateEntityTx(tx, payOrder); err != nil {
|
|
dao.Rollback(db, tx)
|
|
return err
|
|
}
|
|
case model.WithdrawalWaitRecord, model.WithdrawalRecordFail, model.WithdrawalRecordPayFail:
|
|
if err := dao.CreateEntityTx(tx, payOrder); err != nil {
|
|
dao.Rollback(db, tx)
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|