Commit 3f227fc3 authored by wangp's avatar wangp

lakala-wxjsapi-alipay

parent ce89200b
......@@ -4,6 +4,8 @@ import (
"fmt"
"github.com/gin-gonic/gin"
"system_pay/controller/base"
"system_pay/models"
"system_pay/repository/pay"
)
// 卡拉卡统一支付回调
......@@ -36,24 +38,20 @@ func (l *PayController) WxNotice(c *gin.Context) {
//}
//fmt.Println(ph2)
//ph := new(models.WxNoticeInput)
//err := c.ShouldBindJSON(ph)
//if err != nil {
// response := new(base.ResponseDataWxNotice)
// response.Code = "FAIL"
// response.Message = "执行失败2"
// base.ResponseWxNotice(c, response)
// return
//}
////fmt.Println(ph)
//
//// 拉卡拉统一支付微信回调
//response, err := pay.WxNotice(ph)
//
//fmt.Println("拉卡拉微信回调end")
response := new(base.ResponseDataWxNotice)
response.Code = "SUCCESS"
response.Message = "执行成功"
ph := new(models.WxNoticeInput)
err := c.ShouldBindJSON(ph)
if err != nil {
response := new(base.ResponseDataWxNotice)
response.Code = "FAIL"
response.Message = "执行失败2"
base.ResponseWxNotice(c, response)
return
}
//fmt.Println(ph)
// 拉卡拉统一支付微信回调
response, err := pay.WxNotice(ph)
fmt.Println("拉卡拉微信回调end")
base.ResponseWxNotice(c, response)
}
......@@ -26,7 +26,7 @@ type PayController struct {
func (l *PayController) UnifiedOrder(c *gin.Context) {
ph := new(models.PlaceAnOrderParamInput)
fmt.Println("ContentType="+c.ContentType())
//fmt.Println("ContentType="+c.ContentType())
err := c.ShouldBindJSON(ph)
if err != nil {
zap.L().Error(err.Error())
......@@ -34,8 +34,13 @@ func (l *PayController) UnifiedOrder(c *gin.Context) {
return
}
// clientIp ip
//ip = c.Ctx.Input.IP()
ip := c.ClientIP()
fmt.Println("ip="+ip)
// 拉卡拉统一支付
rtn, err := pay.UnifiedOrder(ph)
rtn, err := pay.UnifiedOrder(ph, ip)
if err != nil {
zap.L().Error(err.Error())
//base.ResponseErrorWithMsg(c, base.ServerError)
......
package jwt
import (
"fmt"
"github.com/gin-gonic/gin"
"system_pay/controller/base"
"system_pay/utils"
)
//var DataAnalysisCh chan models.DataAnalysisModel
func init() {
......@@ -15,51 +8,51 @@ func init() {
}
// JWTAuthMiddleWare 基于JWT的认证中间件
func JWTAuthMiddleWare() func(c *gin.Context) {
return func(c *gin.Context) {
//客户端携带Token放在请求头
authHeader := c.Request.Header.Get("Authorization")
if authHeader == "" {
base.ResponseErrorWithMsg(c, base.AuthorizationEmpty)
c.Abort()
return
}
mc, err := utils.ParseToken(authHeader)
if err != nil {
base.ResponseErrorWithMsg(c, base.AuthorizationEmpty)
c.Abort()
return
}
// des解密
phoneMob := utils.ToDesDecrypt(mc.PhoneMob)
userId := utils.ToDesDecrypt(mc.UserId)
userName := utils.ToDesDecrypt(mc.UserName)
//hospitalCode := utils.ToDesDecrypt(mc.HospitalCode)
//chainCode := utils.ToDesDecrypt(mc.ChainCode)
//hospitalID := utils.ToDesDecrypt(mc.HospitalID)
//hospitalName := utils.ToDesDecrypt(mc.HospitalName)
//ChainID := utils.ToDesDecrypt(mc.ChainID)
// 将当前请求的username信息保存到请求的上下文c上
c.Set("phone_mob", phoneMob)
fmt.Println(phoneMob)
c.Set("user_id", userId)
fmt.Println(userId)
c.Set("user_name", userName)
fmt.Println(userName)
//c.Set("hospital_code", hospitalCode)
//c.Set("chain_code", chainCode)
//c.Set("hospital_id", hospitalID)
//c.Set("hospital_name", hospitalName)
//c.Set("chain_id", ChainID)
// 后续的处理函数可以用过c.Get("username")来获取当前请求的用户信息
// 埋点生产者
//BuriedProducer(c, hospitalCode, hospitalName, hospitalID)
c.Next()
}
}
//func JWTAuthMiddleWare() func(c *gin.Context) {
// return func(c *gin.Context) {
// //客户端携带Token放在请求头
// authHeader := c.Request.Header.Get("Authorization")
// if authHeader == "" {
// base.ResponseErrorWithMsg(c, base.AuthorizationEmpty)
// c.Abort()
// return
// }
//
// mc, err := utils.ParseToken(authHeader)
// if err != nil {
// base.ResponseErrorWithMsg(c, base.AuthorizationEmpty)
// c.Abort()
// return
// }
//
// // des解密
// phoneMob := utils.ToDesDecrypt(mc.PhoneMob)
// userId := utils.ToDesDecrypt(mc.UserId)
// userName := utils.ToDesDecrypt(mc.UserName)
// //hospitalCode := utils.ToDesDecrypt(mc.HospitalCode)
// //chainCode := utils.ToDesDecrypt(mc.ChainCode)
// //hospitalID := utils.ToDesDecrypt(mc.HospitalID)
// //hospitalName := utils.ToDesDecrypt(mc.HospitalName)
// //ChainID := utils.ToDesDecrypt(mc.ChainID)
// // 将当前请求的username信息保存到请求的上下文c上
// c.Set("phone_mob", phoneMob)
// fmt.Println(phoneMob)
// c.Set("user_id", userId)
// fmt.Println(userId)
// c.Set("user_name", userName)
// fmt.Println(userName)
// //c.Set("hospital_code", hospitalCode)
// //c.Set("chain_code", chainCode)
// //c.Set("hospital_id", hospitalID)
// //c.Set("hospital_name", hospitalName)
// //c.Set("chain_id", ChainID)
// // 后续的处理函数可以用过c.Get("username")来获取当前请求的用户信息
//
// // 埋点生产者
// //BuriedProducer(c, hospitalCode, hospitalName, hospitalID)
// c.Next()
// }
//}
// 埋点消费者
//func DataAnalysisChannel() {
......
......@@ -24,7 +24,7 @@ import (
)
// 拉卡拉支付
func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{}, error) {
//if input.ChainCode=="" || input.HospitalCode=="" || input.VendorId=="" || seller_id=="" {
// return nil, errors.New("输入项为空")
......@@ -35,7 +35,7 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
orderID := GetUID()
beego.Info("AttachInfo: ", input.AttachInfo)
//beego.Info("AttachInfo: ", input.AttachInfo)
attachMap := make(map[string]interface{}, 0)
attachMap["store_sn"] = input.StoreSn
......@@ -64,11 +64,18 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
//数据重组 - start
data := make(map[string]interface{})
var url string
if false {
//聚合收银台(微信H5+支付宝H5)
url = "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create" //聚合收银台
data["req_time"] = "20230626100000"
data["version"] = "3.0"
data["out_org_code"] = "OP00000003"
input.ReturnURL = "https://test.pet-dbc.cn"
//input.ReturnURL = "https://test.pet-dbc.cn"
// 构造回调url
input.NoticeURL = GetNoticeURL(input.SourceCode)
......@@ -81,12 +88,52 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
data2["term_no"] = "29034705"
//data2["auth_code"] = "135178236713755038" //delete ?
//data2["total_amount"] = "1"
data2["total_amount"] = input.GoodsPrice
//data2["out_trade_no"] = orderID //随机生成的订单号 //商户交易流水号
//data2["out_trade_no"] = RandomString(32)
data2["out_order_no"] = orderID //随机生成的订单号 //商户订单号
//data2["out_order_no"] = RandomString(32)
//data2["out_trade_no"] = input.AttachInfo
//data2["out_order_no"] = input.AttachInfo
data2["counter_param"] = "{\"pay_mode\":\"ALIPAY\"}"
//data2["counter_param"] = "{\"pay_mode\":\"WECHAT\"}"
data2["order_efficient_time"] = "20230630235959" //订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+2天
data2["notify_url"] = input.NoticeURL //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
data2["callback_url"] = input.ReturnURL //客户端下单完成支付后返回的商户网页跳转地址
data2["order_info"] = "必康测试订单标题2" //订单标题,在使用收银台扫码支付时必输入,交易时送往账户端
//data2["goods_mark"] = input.AttachInfo //商品信息标识 (1:含商品信息,不填默认不含商品信息)
data["req_data"] = make(map[string]interface{})
data["req_data"] = data2
} else {
//聚合主扫(微信JSAPI+微信小程序)
url = "https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder" //聚合主扫
data["req_time"] = "20230626100000"
data["version"] = "3.0"
data["out_org_code"] = "OP00000003"
//input.ReturnURL = "https://test.pet-dbc.cn"
// 构造回调url
input.NoticeURL = GetNoticeURL(input.SourceCode)
// 传递给支付渠道的
//p.ServeNoticeUrl = noticeURLx
data2 := make(map[string]interface{})
//data2["merchant_no"] = "8222900701107M5"
data2["merchant_no"] = "8221210701101SB"
data2["term_no"] = "29034705"
//data2["auth_code"] = "135178236713755038" //delete ?
//data2["total_amount"] = "1"
data2["total_amount"] = input.GoodsPrice
//data2["out_trade_no"] = orderID //随机生成的订单
data2["out_trade_no"] = orderID //随机生成的订单号 //商户交易流水
//data2["out_trade_no"] = RandomString(32)
data2["out_order_no"] = orderID //随机生成的订单号
//data2["out_order_no"] = orderID //随机生成的订单号 //商户订单号
//data2["out_order_no"] = RandomString(32)
//data2["out_trade_no"] = input.AttachInfo
//data2["out_order_no"] = input.AttachInfo
......@@ -95,17 +142,29 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
data2["counter_param"] = "{\"pay_mode\":\"WECHAT\"}"
data2["order_efficient_time"] = "20230630235959" //订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+2天
data2["notify_url"] = input.NoticeURL //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
data2["callback_url"] = input.ReturnURL //客户端下单完成支付后返回的商户网页跳转地址
data2["order_info"] = "必康测试订单标题2" //订单标题,在使用收银台扫码支付时必输入,交易时送往账户端
data2["notify_url"] = input.NoticeURL //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
data2["callback_url"] = input.ReturnURL //客户端下单完成支付后返回的商户网页跳转地址
data2["order_info"] = "必康测试订单标题2" //订单标题,在使用收银台扫码支付时必输入,交易时送往账户端
//data2["goods_mark"] = input.AttachInfo //商品信息标识 (1:含商品信息,不填默认不含商品信息)
data2["account_type"] = "WECHAT" //钱包类型
data2["trans_type"] = "51" //接入方式
//地址位置信息
data3 := make(map[string]interface{})
data3["request_ip"] = ip
data2["location_info"] = make(map[string]interface{})
data2["location_info"] = data3
data["req_data"] = make(map[string]interface{})
data["req_data"] = data2
}
//数据重组 - end
fmt.Println("拉卡拉输入参数")
fmt.Println(data)
fmt.Println("拉卡拉接口url")
fmt.Println(url)
// 插入下单请求参数
err = InsertPayBillDetailRequestBody(tx, billID, data)
......@@ -113,13 +172,6 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
return nil, err
}
//ok, err := wechat.VerifySign(WxKey, wechat.SignType_MD5, wxResponse)
//if err != nil || !ok {
// beego.Error("验签失败, 订单号是: ", orderID)
// beego.Error("wx response: ", wxResponse)
// return nil, err
//}
data_json, err := json.Marshal(data)
if err != nil {
//this.Data["json"] = utils.CheckError(errors.New("Map转化为byte数组失败"),"异常")
......@@ -127,9 +179,9 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
return nil, err
}
//url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder" //聚合主扫url
//url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/micropay" //聚合被扫url
url := "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create" //拉卡拉收银台订单创建url
//url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder" //聚合主扫
//url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/micropay" //聚合被扫
//url := "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create" //聚合收银台
//调拉卡拉接口
err, m_web_url, lakala_rtn := lakala_post(url, data_json)
......@@ -151,115 +203,7 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput) (interface{}, error) {
return response, nil
}
func UnifiedOrder2(input *models.PlaceAnOrderParamInput) (interface{}, error) {
//Params
//var input model.PlaceAnOrderParamInput
//if err := json.Unmarshal(this.Ctx.Input.RequestBody, &input); err != nil {
// this.Data["json"] = utils.CheckError(err, "")
// this.ServeJSON()
// return
// //this.Data["json"] = utils.CheckError(errors.New(languages.ParamsError), languages.SystemError)
// //this.ServeJSON()
// //return
//}
//
////validate
//if err := input.ValidPlaceAnOrderParamInput(); err != nil {
// this.Data["json"] = utils.CheckError(err,"")
// this.ServeJSON()
// return
//}
//if input.PayType==1 {
//
//}
data := make(map[string]interface{})
data["req_time"] = "20220714160009"
data["version"] = "3.0"
data["out_org_code"] = "OP00000003"
data2 := make(map[string]interface{})
data2["merchant_no"] = "822290070111135"
data2["term_no"] = "29034705"
//data2["out_trade_no"] = "FD660E1FAA3A4470933CDEDAE1EC1D8E"
data2["out_trade_no"] = "FD660E1FAA3A4470933CDEDAE1EC1D8E"
data2["auth_code"] = "135178236713755038"
data2["total_amount"] = "123"
//data2["out_order_no"] = "08F4542EEC6A4497BC419161747A92FA"
data2["out_order_no"] = "08F4542EEC6A4497BC419161747A92FA"
data["req_data"] = make(map[string]interface{})
data["req_data"] = data2
data3 := make(map[string]interface{})
data3["request_ip"] = "10.176.1.192"
data3["location"] = "+37.123456789,-121.123456789"
data2["location_info"] = make(map[string]interface{})
data2["location_info"] = data3
//data2["out_order_no"] = input.AttachInfo //商户订单号
//data2["total_amount"] = input.AttachInfo //订单金额,单位:分
//data2["order_efficient_time"] = input.AttachInfo //订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+2天
//data2["notify_url"] = input.AttachInfo //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
//data2["callback_url"] = input.AttachInfo //商户订单号
//data2["order_info"] = input.AttachInfo //订单标题,在使用收银台扫码支付时必输入,交易时送往账户端
//data2["goods_mark"] = input.AttachInfo //商品信息标识 (1:含商品信息,不填默认不含商品信息)
//var data model.LakalaParamInput
//data.Version = "3.0"
//data.ReqTime = "20220714160009"
//data.ReqData.OutOrderNo = input.AttachInfo //商户订单号
////data.ReqData.MerchantNo = //银联商户号
//data.ReqData.TotalAmount = input.GoodsPrice //订单金额,单位:分
////data.ReqData.OrderEfficientTime = //订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+2天
//data.ReqData.NotifyUrl = input.NoticeURL //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
//data.ReqData.CallbackUrl = input.ReturnURL //客户端下单完成支付后返回的商户网页跳转地址
////data.ReqData.OrderInfo = input.OrderId //订单标题,在使用收银台扫码支付时必输入,交易时送往账户端
//data.ReqData.GoodsMark = input.GoodsDes //商品信息标识 (1:含商品信息,不填默认不含商品信息)
//数据重组 - end
////var data = input.ReqData
//fmt.Println(111)
//fmt.Println(data)
data_json, err := json.Marshal(data)
if err != nil {
//this.Data["json"] = utils.CheckError(errors.New("Map转化为byte数组失败"),"异常")
//this.ServeJSON()
return nil, err
}
//url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder" //聚合主扫url
url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/micropay" //聚合被扫url
//url := "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create" //拉卡拉收银台订单创建url
//调拉卡拉接口
err, _, _ = lakala_post(url, data_json)
if err != nil {
//this.Data["json"] = utils.CheckError(err,"拉卡拉错误")
//this.ServeJSON()
return nil, err
}
return nil, nil
//response := make(map[string]string)
//response["m_web_url"] = m_web_url
//调拉卡拉接口
//err = lakala_post(url, data_json)
//if err != nil {
// this.Data["json"] = utils.CheckError(err,"拉卡拉错误")
// this.ServeJSON()
// return
//}
//
//this.Data["json"] = utils.Success(nil)
//this.ServeJSON()
}
func lakala_post(url string, data_json []byte) (error, string, interface{}) {
......@@ -423,6 +367,7 @@ func GetNoticeURL(sourceCode uint8) string {
//domainName := beego.AppConfig.String("DomainName")
domainName := setting.Conf.PayUrl.DomainName
//domainName = "http://tpay-v2.pet-dbc.cn:14880";
return domainName + "/api/v1/pay/wx_notice"
// <= 5 是微信
if sourceCode < 5 {
......@@ -576,4 +521,123 @@ func GetUID() string {
id := fmt.Sprintf("%s", u4)
return strings.Replace(id, "-", "", -1)
}
//聚合被扫
func UnifiedOrder2(input *models.PlaceAnOrderParamInput) (interface{}, error) {
//Params
//var input model.PlaceAnOrderParamInput
//if err := json.Unmarshal(this.Ctx.Input.RequestBody, &input); err != nil {
// this.Data["json"] = utils.CheckError(err, "")
// this.ServeJSON()
// return
// //this.Data["json"] = utils.CheckError(errors.New(languages.ParamsError), languages.SystemError)
// //this.ServeJSON()
// //return
//}
//
////validate
//if err := input.ValidPlaceAnOrderParamInput(); err != nil {
// this.Data["json"] = utils.CheckError(err,"")
// this.ServeJSON()
// return
//}
//if input.PayType==1 {
//
//}
data := make(map[string]interface{})
data["req_time"] = "20220714160009"
data["version"] = "3.0"
data["out_org_code"] = "OP00000003"
data2 := make(map[string]interface{})
data2["merchant_no"] = "822290070111135"
data2["term_no"] = "29034705"
//data2["out_trade_no"] = "FD660E1FAA3A4470933CDEDAE1EC1D8E"
data2["out_trade_no"] = "FD660E1FAA3A4470933CDEDAE1EC1D8E"
data2["auth_code"] = "135178236713755038"
data2["total_amount"] = "123"
//data2["out_order_no"] = "08F4542EEC6A4497BC419161747A92FA"
data2["out_order_no"] = "08F4542EEC6A4497BC419161747A92FA"
data["req_data"] = make(map[string]interface{})
data["req_data"] = data2
data3 := make(map[string]interface{})
data3["request_ip"] = "10.176.1.192"
data3["location"] = "+37.123456789,-121.123456789"
data2["location_info"] = make(map[string]interface{})
data2["location_info"] = data3
//data2["out_order_no"] = input.AttachInfo //商户订单号
//data2["total_amount"] = input.AttachInfo //订单金额,单位:分
//data2["order_efficient_time"] = input.AttachInfo //订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+2天
//data2["notify_url"] = input.AttachInfo //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
//data2["callback_url"] = input.AttachInfo //商户订单号
//data2["order_info"] = input.AttachInfo //订单标题,在使用收银台扫码支付时必输入,交易时送往账户端
//data2["goods_mark"] = input.AttachInfo //商品信息标识 (1:含商品信息,不填默认不含商品信息)
//var data model.LakalaParamInput
//data.Version = "3.0"
//data.ReqTime = "20220714160009"
//data.ReqData.OutOrderNo = input.AttachInfo //商户订单号
////data.ReqData.MerchantNo = //银联商户号
//data.ReqData.TotalAmount = input.GoodsPrice //订单金额,单位:分
////data.ReqData.OrderEfficientTime = //订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+2天
//data.ReqData.NotifyUrl = input.NoticeURL //订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
//data.ReqData.CallbackUrl = input.ReturnURL //客户端下单完成支付后返回的商户网页跳转地址
////data.ReqData.OrderInfo = input.OrderId //订单标题,在使用收银台扫码支付时必输入,交易时送往账户端
//data.ReqData.GoodsMark = input.GoodsDes //商品信息标识 (1:含商品信息,不填默认不含商品信息)
//数据重组 - end
////var data = input.ReqData
//fmt.Println(111)
//fmt.Println(data)
data_json, err := json.Marshal(data)
if err != nil {
//this.Data["json"] = utils.CheckError(errors.New("Map转化为byte数组失败"),"异常")
//this.ServeJSON()
return nil, err
}
//url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/preorder" //聚合主扫
url := "https://test.wsmsd.cn/sit/api/v3/labs/trans/micropay" //聚合被扫
//url := "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create" //聚合收银台
//调拉卡拉接口
err, _, _ = lakala_post(url, data_json)
if err != nil {
//this.Data["json"] = utils.CheckError(err,"拉卡拉错误")
//this.ServeJSON()
return nil, err
}
return nil, nil
//response := make(map[string]string)
//response["m_web_url"] = m_web_url
//调拉卡拉接口
//err = lakala_post(url, data_json)
//if err != nil {
// this.Data["json"] = utils.CheckError(err,"拉卡拉错误")
// this.ServeJSON()
// return
//}
//
//this.Data["json"] = utils.Success(nil)
//this.ServeJSON()
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment