|
|
@@ -1,261 +0,0 @@ |
|
|
|
package alipay |
|
|
|
|
|
|
|
import ( |
|
|
|
"applet/app/cfg" |
|
|
|
"applet/app/utils/logx" |
|
|
|
"fmt" |
|
|
|
|
|
|
|
"github.com/iGoogle-ink/gopay" |
|
|
|
"github.com/iGoogle-ink/gopay/alipay" |
|
|
|
) |
|
|
|
|
|
|
|
// TradeAppPay is 支付宝APP支付 |
|
|
|
// 抖音头条小程序使用APP调起 |
|
|
|
func TradeAppPay(appID, priKey, subject, orderID, amount, notiURL, RSA, PKCS string, paySet *md.PayData) (string, error) { |
|
|
|
//初始化支付宝客户端 |
|
|
|
// appID 是在支付宝申请的APPID |
|
|
|
// priKey 是支付宝私钥 |
|
|
|
// subject 是支付订单的主题 |
|
|
|
// orderID 是智莺这边生成的订单id |
|
|
|
// amount 是付费金额 |
|
|
|
// notiURL 通知地址url |
|
|
|
// passback_params 回调通知参数 |
|
|
|
|
|
|
|
client := alipay.NewClient(appID, priKey, true) |
|
|
|
client.DebugSwitch = gopay.DebugOn |
|
|
|
//判断密钥的类型 |
|
|
|
rsa_type := alipay.RSA2 |
|
|
|
pkcs_type := alipay.PKCS1 |
|
|
|
if RSA == "1" { |
|
|
|
rsa_type = alipay.RSA |
|
|
|
} |
|
|
|
if PKCS == "1" { |
|
|
|
pkcs_type = alipay.PKCS8 |
|
|
|
} |
|
|
|
if paySet.PayAliUseType == "1" { |
|
|
|
rsa_type = alipay.RSA2 |
|
|
|
pkcs_type = alipay.PKCS8 |
|
|
|
} |
|
|
|
//配置公共参数 |
|
|
|
client.SetCharset("utf-8"). |
|
|
|
SetSignType(rsa_type). |
|
|
|
SetPrivateKeyType(pkcs_type) |
|
|
|
if notiURL != "" { |
|
|
|
client.SetNotifyUrl(notiURL) |
|
|
|
} |
|
|
|
//新支付宝支付 |
|
|
|
if paySet.PayAliUseType == "1" { |
|
|
|
appCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAppCertSn) |
|
|
|
fmt.Println("-应用-") |
|
|
|
fmt.Println(appCertSN) |
|
|
|
if err != nil { |
|
|
|
fmt.Println(err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
if appCertSN == "" { |
|
|
|
fmt.Println(err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
client.SetAppCertSN(appCertSN) |
|
|
|
//aliPayRootCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAlipayRootCertSn) |
|
|
|
aliPayRootCertSN := "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6" |
|
|
|
client.SetAliPayRootCertSN(aliPayRootCertSN) |
|
|
|
aliPayPublicCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAlipayrsaPublicKey) |
|
|
|
fmt.Println("-公钥-") |
|
|
|
fmt.Println(aliPayPublicCertSN) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
fmt.Println(err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
if aliPayPublicCertSN == "" { |
|
|
|
fmt.Println(err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
client.SetAliPayPublicCertSN(aliPayPublicCertSN) |
|
|
|
} |
|
|
|
fmt.Println(client) |
|
|
|
//请求参数 |
|
|
|
body := make(gopay.BodyMap) |
|
|
|
body.Set("subject", subject) |
|
|
|
body.Set("body", subject) |
|
|
|
body.Set("out_trade_no", orderID) |
|
|
|
body.Set("total_amount", amount) |
|
|
|
body.Set("timeout_express", "30m") |
|
|
|
|
|
|
|
// body.Set("passback_params", orderID) |
|
|
|
//手机APP支付参数请求 |
|
|
|
payParam, err := client.TradeAppPay(body) |
|
|
|
if err != nil { |
|
|
|
return "", logx.Warn(err) |
|
|
|
} |
|
|
|
return payParam, nil |
|
|
|
} |
|
|
|
|
|
|
|
// TradeAppPay is 支付宝H5支付 |
|
|
|
func TradeWapPay(appID, priKey, subject, orderID, amount, notiURL, RSA, PKCS, page_url string, paySet *md.PayData) (string, error) { |
|
|
|
fmt.Println("notifyURL is:>>>>>>>>>>", notiURL) |
|
|
|
//aliPayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1wn1sU/8Q0rYLlZ6sq3enrPZw2ptp6FecHR2bBFLjJ+sKzepROd0bKddgj+Mr1ffr3Ej78mLdWV8IzLfpXUi945DkrQcOUWLY0MHhYVG2jSs/qzFfpzmtut2Cl2TozYpE84zom9ei06u2AXLMBkU6VpznZl+R4qIgnUfByt3Ix5b3h4Cl6gzXMAB1hJrrrCkq+WvWb3Fy0vmk/DUbJEz8i8mQPff2gsHBE1nMPvHVAMw1GMk9ImB4PxucVek4ZbUzVqxZXphaAgUXFK2FSFU+Q+q1SPvHbUsjtIyL+cLA6H/6ybFF9Ffp27Y14AHPw29+243/SpMisbGcj2KD+evBwIDAQAB" |
|
|
|
privateKey := priKey |
|
|
|
//判断密钥的类型 |
|
|
|
rsa_type := alipay.RSA2 |
|
|
|
pkcs_type := alipay.PKCS1 |
|
|
|
if RSA == "1" { |
|
|
|
rsa_type = alipay.RSA |
|
|
|
} |
|
|
|
if PKCS == "1" { |
|
|
|
pkcs_type = alipay.PKCS8 |
|
|
|
} |
|
|
|
if paySet.PayAliUseType == "1" { |
|
|
|
rsa_type = alipay.RSA2 |
|
|
|
pkcs_type = alipay.PKCS8 |
|
|
|
} |
|
|
|
//初始化支付宝客户端 |
|
|
|
// appId:应用ID |
|
|
|
// privateKey:应用秘钥 |
|
|
|
// isProd:是否是正式环境 |
|
|
|
client := alipay.NewClient(appID, privateKey, true) |
|
|
|
//配置公共参数 |
|
|
|
client.SetCharset("utf-8"). |
|
|
|
SetSignType(rsa_type). |
|
|
|
SetPrivateKeyType(pkcs_type). |
|
|
|
SetReturnUrl(page_url). |
|
|
|
SetNotifyUrl(notiURL) |
|
|
|
//新支付宝支付 |
|
|
|
if paySet.PayAliUseType == "1" { |
|
|
|
appCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAppCertSn) |
|
|
|
if err != nil { |
|
|
|
fmt.Println("appCertSn_err:>>>>>>>>", err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
if appCertSN == "" { |
|
|
|
fmt.Println(err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
client.SetAppCertSN(appCertSN) |
|
|
|
//aliPayRootCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAlipayRootCertSn) |
|
|
|
//if err != nil { |
|
|
|
// |
|
|
|
// fmt.Println("rootcertsn_err:>>>>>>>>>>", err) |
|
|
|
// fmt.Println("rootcertsn_err:>>>>>>>>>>", cfg.WxappletFilepath.URL) |
|
|
|
// fmt.Println("rootcertsn_err:>>>>>>>>>>", paySet.PayAlipayRootCertSn) |
|
|
|
// return "", err |
|
|
|
//} |
|
|
|
//if aliPayRootCertSN == "" { |
|
|
|
// fmt.Println(err) |
|
|
|
// return "", err |
|
|
|
//} |
|
|
|
aliPayRootCertSN := "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6" |
|
|
|
client.SetAliPayRootCertSN(aliPayRootCertSN) |
|
|
|
aliPayPublicCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAlipayrsaPublicKey) |
|
|
|
if err != nil { |
|
|
|
fmt.Println("publicCertSn_err:>>>>>>>>>>>", err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
if aliPayPublicCertSN == "" { |
|
|
|
fmt.Println(err) |
|
|
|
return "", err |
|
|
|
} |
|
|
|
client.SetAliPayPublicCertSN(aliPayPublicCertSN) |
|
|
|
} |
|
|
|
//请求参数 |
|
|
|
body := make(gopay.BodyMap) |
|
|
|
body.Set("subject", subject) |
|
|
|
body.Set("out_trade_no", orderID) |
|
|
|
// quit_url is 用户付款中途退出返回商户网站的地址 |
|
|
|
body.Set("quit_url", notiURL) |
|
|
|
body.Set("total_amount", amount) |
|
|
|
// product_code is 销售产品码,商家和支付宝签约的产品码 |
|
|
|
body.Set("product_code", "QUICK_WAP_WAY") |
|
|
|
//手机网站支付请求 |
|
|
|
payUrl, err := client.TradeWapPay(body) |
|
|
|
if err != nil { |
|
|
|
return "", logx.Warn(err) |
|
|
|
|
|
|
|
} |
|
|
|
return payUrl, nil |
|
|
|
} |
|
|
|
|
|
|
|
// TradeAppPay is 支付宝小程序本身支付 |
|
|
|
func TradeCreate(appID, priKey, subject, orderID, amount, notiURL, RSA, PKCS string, paySet *md.PayData) (*alipay.TradeCreateResponse, error) { |
|
|
|
//aliPayPublicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1wn1sU/8Q0rYLlZ6sq3enrPZw2ptp6FecHR2bBFLjJ+sKzepROd0bKddgj+Mr1ffr3Ej78mLdWV8IzLfpXUi945DkrQcOUWLY0MHhYVG2jSs/qzFfpzmtut2Cl2TozYpE84zom9ei06u2AXLMBkU6VpznZl+R4qIgnUfByt3Ix5b3h4Cl6gzXMAB1hJrrrCkq+WvWb3Fy0vmk/DUbJEz8i8mQPff2gsHBE1nMPvHVAMw1GMk9ImB4PxucVek4ZbUzVqxZXphaAgUXFK2FSFU+Q+q1SPvHbUsjtIyL+cLA6H/6ybFF9Ffp27Y14AHPw29+243/SpMisbGcj2KD+evBwIDAQAB" |
|
|
|
privateKey := priKey |
|
|
|
rsa_type := alipay.RSA2 |
|
|
|
pkcs_type := alipay.PKCS1 |
|
|
|
if RSA == "1" { |
|
|
|
rsa_type = alipay.RSA |
|
|
|
} |
|
|
|
if PKCS == "1" { |
|
|
|
pkcs_type = alipay.PKCS8 |
|
|
|
} |
|
|
|
if paySet.PayAliUseType == "1" { |
|
|
|
rsa_type = alipay.RSA2 |
|
|
|
pkcs_type = alipay.PKCS8 |
|
|
|
} |
|
|
|
//初始化支付宝客户端 |
|
|
|
// appId:应用ID |
|
|
|
// privateKey:应用私钥,支持PKCS1和PKCS8 |
|
|
|
// isProd:是否是正式环境 |
|
|
|
client := alipay.NewClient(appID, privateKey, true) |
|
|
|
//配置公共参数 |
|
|
|
client.SetCharset("utf-8"). |
|
|
|
SetSignType(rsa_type). |
|
|
|
SetPrivateKeyType(pkcs_type). |
|
|
|
SetNotifyUrl(notiURL) |
|
|
|
if paySet.PayAliUseType == "1" { |
|
|
|
appCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAppCertSn) |
|
|
|
if err != nil { |
|
|
|
fmt.Println(err) |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
if appCertSN == "" { |
|
|
|
fmt.Println(err) |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
client.SetAppCertSN(appCertSN) |
|
|
|
//aliPayRootCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAlipayRootCertSn) |
|
|
|
//if err != nil { |
|
|
|
// fmt.Println(err) |
|
|
|
// return nil, err |
|
|
|
//} |
|
|
|
//if aliPayRootCertSN == "" { |
|
|
|
// fmt.Println(err) |
|
|
|
// return nil, err |
|
|
|
//} |
|
|
|
aliPayRootCertSN := "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6" |
|
|
|
client.SetAliPayRootCertSN(aliPayRootCertSN) |
|
|
|
aliPayPublicCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + paySet.PayAlipayrsaPublicKey) |
|
|
|
if err != nil { |
|
|
|
fmt.Println(err) |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
if aliPayPublicCertSN == "" { |
|
|
|
fmt.Println(err) |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
client.SetAliPayPublicCertSN(aliPayPublicCertSN) |
|
|
|
} |
|
|
|
//请求参数 |
|
|
|
body := make(gopay.BodyMap) |
|
|
|
body.Set("subject", subject) |
|
|
|
// 支付宝小程序支付时 buyer_id 为必传参数,需要提前获取,获取方法如下两种 |
|
|
|
// 1、alipay.SystemOauthToken() 返回取值:rsp.SystemOauthTokenResponse.UserId |
|
|
|
// 2、client.SystemOauthToken() 返回取值:aliRsp.SystemOauthTokenResponse.UserId |
|
|
|
buyer_id, err := client.SystemOauthToken(body) |
|
|
|
if err != nil { |
|
|
|
return nil, logx.Warn(err) |
|
|
|
} |
|
|
|
body.Set("buyer_id", buyer_id) |
|
|
|
body.Set("out_trade_no", orderID) |
|
|
|
body.Set("total_amount", amount) |
|
|
|
//创建订单 |
|
|
|
aliRsp, err := client.TradeCreate(body) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
return nil, logx.Warn(err) |
|
|
|
} |
|
|
|
logx.Warn("aliRsp:", *aliRsp) |
|
|
|
logx.Warn("aliRsp.TradeNo:", aliRsp.Response.TradeNo) |
|
|
|
return aliRsp, nil |
|
|
|
|
|
|
|
} |