panjjo / unionpay

Unionpay payments API for Go (golang) 支持5.1.0最新加密方式 golang后台版本接口支持
10 stars 3 forks source link

unionpay

中国银联接口 golang实现方法,可做后台请求银联使用

使用方法

package main

import (
    "fmt"

    "github.com/panjjo/unionpay"
)

func main() {
    var err error
    //初始化证书
    //pfxpath和pfxpwd同时存在,privatepath和certpath同时存在,两组传任意一组皆可
    err = unionpay.LoadCert(&unionpay.Config{

        //银联提供的pfx证书存放路径,商户私钥
        PfxPath: "/tmp/up/700000000000001_acp.pfx",

        //pfx证书密码
        PfxPwd: "000000",

        //数据加密证书路径,银联公钥
        EncryptCertPath: "/tmp/up/verify_sign_acp.cer",

        //用户私钥地址,私钥通过pfx解析得到
        // openssl pkcs12 -in xxxx.pfx -nodes -out server.pem 生成为原生格式pem 私钥
        // openssl rsa -in server.pem -out server.key  生成为rsa格式私钥文件
        PrivatePath: "/tmp/up/private.key",

        //用户证书,通过pfx解析得到
        // openssl pkcs12 -in xxxx.pfx -clcerts -nokeys -out key.cert
        CertPath: "/tmp/up/key.cert",
    })
    if err != nil {
        fmt.Println(err)
        return
    }
    //配置环境信息
    unionpay.SetConfig(&unionpay.Config{
        // 商户号
        MerId: "777290058143951",
        //域名信息
        Url: "https://gateway.test.95516.com",
    })
    //实例化 代付
    payforanthoer, err := unionpay.NewPayForAnother(unionpay.ApiConfig{
        //域名信息
        Url: "https://gateway.test.95516.com",
    })
    fmt.Println(err)
    customer := unionpay.CustomerInfo{}
    customer.CustomerNm = "全渠道"
    customer.PhoneNo = "13552535506"
    read := unionpay.RequestParams{}
    read.AccNo = "6216261000000000018"
    read.Customer = &customer
    //实名认证
    /*result, err := payforanthoer.RealNameAuth("1233", &read)
    fmt.Println(result, err)*/
    //支付
    result, err := payforanthoer.Pay(100, &read)
    fmt.Println(result, err)
}