|
- package local_alipay
-
- import (
- "code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/md"
- "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" {
- client.SetAppCertSN(paySet.PayAppCertSn)
- aliPayRootCertSN := "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6"
- client.SetAliPayRootCertSN(aliPayRootCertSN)
- client.SetAliPayPublicCertSN(paySet.PayAlipayrsaPublicKey)
- }
- 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 "", 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) {
- //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" {
- client.SetAppCertSN(paySet.PayAppCertSn)
- aliPayRootCertSN := "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6"
- client.SetAliPayRootCertSN(aliPayRootCertSN)
- client.SetAliPayPublicCertSN(paySet.PayAlipayrsaPublicKey)
- }
- //请求参数
- 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 "", 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" {
- client.SetAppCertSN(paySet.PayAppCertSn)
- aliPayRootCertSN := "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6"
- client.SetAliPayRootCertSN(aliPayRootCertSN)
- client.SetAliPayPublicCertSN(paySet.PayAlipayrsaPublicKey)
- }
- //请求参数
- body := make(gopay.BodyMap)
- body.Set("subject", subject)
- // 支付宝小程序支付时 buyer_id 为必传参数,需要提前获取,获取方法如下两种
- // 1、local_alipay.SystemOauthToken() 返回取值:rsp.SystemOauthTokenResponse.UserId
- // 2、client.SystemOauthToken() 返回取值:aliRsp.SystemOauthTokenResponse.UserId
- buyer_id, err := client.SystemOauthToken(body)
- if err != nil {
- return nil, 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, err
- }
-
- return aliRsp, nil
-
- }
|