From 61987f3a259bf8e8bedba6c5dfc24842032403b9 Mon Sep 17 00:00:00 2001 From: huangjuajun <102564160@qq.com> Date: Wed, 1 Jun 2022 10:35:46 +0800 Subject: [PATCH] =?UTF-8?q?add=20Reverse:for=20v1.3.0=20=E8=87=AA=E6=9C=89?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=20=E6=94=AF=E4=BB=98=E5=AE=9D=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pay/pay_by_own.go | 261 ++++++++++++++++++++++------------------------ 1 file changed, 122 insertions(+), 139 deletions(-) diff --git a/pay/pay_by_own.go b/pay/pay_by_own.go index beb088c..39cf97b 100644 --- a/pay/pay_by_own.go +++ b/pay/pay_by_own.go @@ -4,163 +4,146 @@ import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/lib/local_alipay" local_wxpay "code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/lib/local_wechat" "code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/md" + zhios_pay_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/utils" + "fmt" "github.com/pkg/errors" - "github.com/syyongx/php2go" - "strings" ) -//自有支付 支付宝 -func Alipay(req map[string]string) (interface{}, error) { +/** +自有支付 支付宝 +req 传参 + +ord_id //订单号 +amount //总金额 +subject //描述 +order_type //订单类型 +notify_url //自有支付回调地址 +platform //平台 由前端header传来的 +pay_app_cert_sn //应用公钥证书存放路径 +pay_alipay_root_cert_sn //支付宝根证书存放路径 +pay_alipayrsa_public_key //支付宝公钥证书存放路径 +pay_ali_use_type //支付宝选择版本 0旧版 1新版 +private_key //支付宝商户私钥 数据库字段 旧版 pay_ali_private_key 新版 pay_ali_new_private_key +app_id //支付宝appId 数据库字段 旧版 pay_ali_app_id 新版 pay_ali_new_app_id +rsa //支付宝密钥长度 旧版使用 数据库字段 pay_ali_key_len_type +pkcs //支付宝密钥格式 旧版使用 数据库字段 pay_ali_key_format_type + +page_url //支付宝wap支付成功跳转链接 + +wx_applet_filepath_url //这是服务器的路径 cfg.WxappletFilepath.URL +*/ + +func AlipayApp(args map[string]string) (string, error) { var paySet = &md.PayData{ - PayAppCertSn: req["pay_app_cert_sn"], - PayAlipayRootCertSn: req["pay_alipay_root_cert_sn"], - PayAlipayrsaPublicKey: req["pay_alipayrsa_public_key"], - PayAliUseType: req["pay_ali_use_type"], - WxAppletFilepathUrl: req["wx_applet_filepath_url"], + PayAppCertSn: args["pay_app_cert_sn"], + PayAlipayRootCertSn: args["pay_alipay_root_cert_sn"], + PayAlipayrsaPublicKey: args["pay_alipayrsa_public_key"], + PayAliUseType: args["pay_ali_use_type"], + WxAppletFilepathUrl: args["wx_applet_filepath_url"], } - if req["private_key"] == "" || req["app_id"] == "" { + if args["private_key"] == "" || args["app_id"] == "" { return "", errors.New("请在后台正确配置支付宝") } - prd := false - if req["cfg_prd"] == "1" { - prd = true + param, err := local_alipay.TradeAppPay(args["app_id"], args["private_key"], args["subject"], args["ord_id"], args["amount"], args["notify_url"], args["rsa"], args["pkcs"], paySet) + if err != nil { + fmt.Println("支付宝错误日志") + fmt.Println(param) + fmt.Println(err) + return "", errors.New("支付宝订单创建失败") } - var param interface{} - var err error - switch req["platform"] { - case md.PLATFORM_ALIPAY_APPLET: - param, err = local_alipay.TradeCreate(req["app_id"], req["private_key"], req["subject"], req["ord_id"], req["amount"], req["notify_url"], req["rsa"], req["pkcs"], paySet) - case md.PLATFORM_WAP: - if req["pay_type"] == "self" { - param, err = local_alipay.TradeCreate(req["app_id"], req["private_key"], req["subject"], req["ord_id"], req["amount"], req["notify_url"], req["rsa"], req["pkcs"], paySet) - } else if req["pay_type"] == "thirdParty" { - var actualPayMethod string - payConfigs := map[string]string{ - "ord_id": req["ord_id"], - "notify_url": req["kudian_notify_url"], - "subject": req["subject"], - "amount": req["amount"], - "pay_third_party_id": req["pay_third_party_id"], - "user_id": req["user_id"], - } - if strings.Contains(req["browser"], "ali_pay_browser") && req["user_id"] != "" { //判断是否在支付宝内浏览器打开 - actualPayMethod = "JSPAI" - payConfigs["trade_type"] = actualPayMethod - } else { - actualPayMethod = "H5" - payConfigs["trade_type"] = actualPayMethod - payConfigs["wap_mame"] = "支付" - payConfigs["return_url"] = "" - payConfigs["wap_url"] = req["wap_url"] - } - payParams := &md.KuDianAliAppPayParams{} - payParams, err = KuDianAlipayConfig(req, payConfigs) - if err != nil { - return nil, err - } - var r string + return zhios_pay_utils.AnyToString(param), nil +} - r, err = AliJsApiPayByKuDian(payParams, prd) - if err != nil { - return nil, err - } - if actualPayMethod == "H5" { - r = php2go.URLEncode(r) - } - usePayMethod := "third_party" - return map[string]string{ - "params": r, +func AlipayWap(args map[string]string) (string, error) { - "actual_pay_method": actualPayMethod, - "use_pay_method": usePayMethod, - "orderId": req["ord_id"], - }, nil - } - case md.PLATFORM_ANDROID, md.PLATFORM_IOS: - if req["pay_type"] == "self" { - param, err = local_alipay.TradeAppPay(req["app_id"], req["private_key"], req["subject"], req["ord_id"], req["amount"], req["notify_url"], req["rsa"], req["pkcs"], paySet) - } else if req["pay_type"] == "thirdParty" { - payConfigs := map[string]string{ - "ord_id": req["ord_id"], - "notify_url": req["kudian_notify_url"], - "subject": req["subject"], - "amount": req["amount"], - "pay_third_party_id": req["pay_third_party_id"], - } - payParams := &md.KuDianAliAppPayParams{} - payParams, err = KuDianAlipayConfig(req, payConfigs) - if err != nil { - return nil, err - } - var r string - r, err = AliAppPayByKuDian(payParams, prd) - if err != nil { - return nil, err - } - r = php2go.URLEncode(r) - usePayMethod := "third_party" - return map[string]string{ - "params": r, - "use_pay_method": usePayMethod, - "orderId": req["ord_id"], - }, nil - } - default: - return "", errors.New("渠道不存在") + var paySet = &md.PayData{ + PayAppCertSn: args["pay_app_cert_sn"], + PayAlipayRootCertSn: args["pay_alipay_root_cert_sn"], + PayAlipayrsaPublicKey: args["pay_alipayrsa_public_key"], + PayAliUseType: args["pay_ali_use_type"], + WxAppletFilepathUrl: args["wx_applet_filepath_url"], + } + if args["private_key"] == "" || args["app_id"] == "" { + return "", errors.New("请在后台正确配置支付宝") } + param, err := local_alipay.TradeWapPay(args["app_id"], args["private_key"], args["subject"], args["ord_id"], args["amount"], args["notify_url"], args["rsa"], args["pkcs"], args["page_url"], paySet) if err != nil { - return "", err + fmt.Println("支付宝错误日志") + fmt.Println(param) + fmt.Println(err) + return "", errors.New("支付宝订单创建失败") } - return param, nil + return zhios_pay_utils.AnyToString(param), nil } -//自有支付 微信支付 -func WxPay(params map[string]string) (interface{}, error) { - var r interface{} - var err error - prd := false - if params["cfg_prd"] == "1" { - prd = true +func AlipayApplet(args map[string]string) (string, error) { + var paySet = &md.PayData{ + PayAppCertSn: args["pay_app_cert_sn"], + PayAlipayRootCertSn: args["pay_alipay_root_cert_sn"], + PayAlipayrsaPublicKey: args["pay_alipayrsa_public_key"], + PayAliUseType: args["pay_ali_use_type"], + WxAppletFilepathUrl: args["wx_applet_filepath_url"], } - client := local_wxpay.NewClient(params["pay_wx_appid"], params["pay_wx_mch_id"], params["pay_wx_api_key"], true) - switch params["platform"] { - case md.PLATFORM_WX_APPLET: - if params["pay_type"] == "self" { //自有支付 - r, err = local_wxpay.TradeMiniProgPay(client, params["subject"], params["ord_id"], params["amount"], params["notify_url"], params["third_party_wechat_openid"]) - } else if params["pay_type"] == "thirdParty" { - payConfigs := map[string]string{ - "ord_id": params["ord_id"], - "notify_url": params["ku_dian_notify_url"], - "subject": params["subject"], - "amount": params["amount"], - "pay_third_party_id": params["pay_third_party_id"], - } - payParams := &md.KuDianWxPayParams{} - payParams, err = KuDianWxConfig(params, payConfigs) - if err != nil { - return nil, err - } - r, err = WxAppletPayByKuDian(payParams, prd) - r = map[string]interface{}{ - "params": r, - "orderId": params["ord_id"], - } - } - case md.PLATFORM_WAP: - if strings.Contains(params["browser"], "wx_pay_browser") { - r, err = local_wxpay.TradeJSAPIPay(client, params["subject"], params["ord_id"], params["amount"], params["notify_url"], params["third_party_wechat_openid"]) - - } else { - r, err = local_wxpay.TradeH5Pay(client, params["subject"], params["ord_id"], params["amount"], params["notify_url"]) - } - case md.PLATFORM_ANDROID, md.PLATFORM_IOS, md.PLATFORM_JSAPI: - r, err = local_wxpay.TradeAppPay(client, params["subject"], params["ord_id"], params["amount"], params["notify_url"]) - default: - return nil, errors.New("渠道不存在") + if args["private_key"] == "" || args["app_id"] == "" { + return "", errors.New("请在后台正确配置支付宝") } + param, err := local_alipay.TradeCreate(args["app_id"], args["private_key"], args["subject"], args["ord_id"], args["amount"], args["notify_url"], args["rsa"], args["pkcs"], paySet) if err != nil { - return nil, err + fmt.Println("支付宝错误日志") + fmt.Println(param) + fmt.Println(err) + return "", errors.New("支付宝订单创建失败") } - return r, nil + return zhios_pay_utils.AnyToString(param), nil +} + +// 微信app支付v2 +func WxAppPay(params map[string]string) (map[string]string, error) { + appId := params["pay_wx_appid"] + mchId := params["pay_wx_mch_id"] + apiKey := params["pay_wx_api_key"] + notifyUrl := params["notify_url"] + client := local_wxpay.NewClient(appId, mchId, apiKey, true) + r, err := local_wxpay.TradeAppPay(client, params["subject"], params["ord_id"], params["amount"], notifyUrl) + return r, err +} + +// 微信H5支付v2 +func WxH5Pay(params map[string]string) (map[string]string, error) { + appId := params["pay_wx_appid"] + mchId := params["pay_wx_mch_id"] + apiKey := params["pay_wx_api_key"] + notifyUrl := params["notify_url"] + client := local_wxpay.NewClient(appId, mchId, apiKey, true) + r, err := local_wxpay.TradeH5Pay(client, params["subject"], params["ord_id"], params["amount"], notifyUrl) + return r, err +} +// 微信小程序v2 +func WxMiniProgPay(params map[string]string) (map[string]string, error) { + appId := params["pay_wx_appid"] + mchId := params["pay_wx_mch_id"] + apiKey := params["pay_wx_api_key"] + notifyUrl := params["notify_url"] + client := local_wxpay.NewClient(appId, mchId, apiKey, true) + if params["third_party_wechat_openid"] == "" { + return nil, errors.New("请先授权微信") + } + r, err := local_wxpay.TradeMiniProgPay(client, params["subject"], params["ord_id"], params["amount"], notifyUrl, params["third_party_wechat_openid"]) + return r, err +} + +// 微信JSAPI支付 +func WxAppJSAPIPay(params map[string]string) (map[string]string, error) { + appId := params["pay_wx_appid"] + mchId := params["pay_wx_mch_id"] + apiKey := params["pay_wx_api_key"] + notifyUrl := params["notify_url"] + + client := local_wxpay.NewClient(appId, mchId, apiKey, true) + if params["third_party_wechat_openid"] == "" { + return nil, errors.New("请先授权微信") + } + r, err := local_wxpay.TradeJSAPIPay(client, params["subject"], params["ord_id"], params["amount"], notifyUrl, params["third_party_wechat_openid"]) + return r, err }