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 }