smartwalle / alipay Goto Github PK
View Code? Open in Web Editor NEW支付宝 AliPay SDK for Go, 集成简单,功能完善,持续更新,支持公钥证书和普通公钥进行签名和验签,支持文件上传和接口内容加密。
License: MIT License
支付宝 AliPay SDK for Go, 集成简单,功能完善,持续更新,支持公钥证书和普通公钥进行签名和验签,支持文件上传和接口内容加密。
License: MIT License
你好,使用TradeWapPay(p) 进行手机网页支付成功后,如果要进行退款,应该使用那一个接口呢?
这个代码开源采用的什么协议?
Yis-MacBook-Pro:main yixusong$ go build
../../../../smartwalle/alipay/notify_type.go:92:23: cannot use req (type *http.Request) as type url.Values in argument to verifySign
注释该行 后,客户端才可以拉起支付宝
比如用支付的生成工具生成了公钥 aaa 私钥 bbb
变成这样如字符串就行了吗?
-----BEGIN PUBLIC KEY-----
aaa
-----END PUBLIC KEY-----
私钥也是这样吗?
官方文档中total_amount的类型是Price,示例代码中的json是int,但是这个项目的代码生成的json却是string类型
可以添加当面付支持吗?
支付宝TradePreCreate 返回结果 success ,但是签名验证的时候 失败了,有遇见的吗? crypto/rsa: verification error
请教下,我在使用的时候一直验签不过,报错信息如下:
crypto/rsa: verification error
采用的是RSA2加密方式
库是采用最新版本
调用接口为:alipay.trade.precreate (统一收单线下交易预创建)
返回的验签数据如下:
{"code":"10000","msg":"Success","sub_code":"","sub_msg":"","out_trade_no":"123456789","qr_code":"https://qr.alipay.com/bax06556bw4qmhfcofn500a4"}
sign
JJLTxJM0T636iTPriJ7pUFikznjFZvQIilNUQI80AkReb3rHVxFpZzxhvG99G3Ms8pt0ePSPBAVonDYOOPUkcfGh +sCmVAAfZWY/IRlUB/F6Jw3N1NU9GxTbiGS2Q2VVpurIaRq5T8HTorbuUTHbeRM6/aut7H5QuP5o1lOhBOW0nKRVP3dhb/Xx0HP2c2E+6Edxl3TByLvVbqP3fpmxP58GBUbkHSUcEb8ShUB7M/l4pKy3u5dti4zeW3SWBqScZiH2mQbectrUY1n3uPromohiQmIfocviBGxATPj4nMzuKoDtl2Fuvp4TUctxBJNg2Z s2B64I2e93GUywMfwqEQ==
支付宝公钥:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqnjvtwG/VsfPReiaOhHt
Hbfu93W2RrSAJ61Hgod4M2iT78mD9tS/Wn7n7CxOR6I95pI8OAih8wCbNpx7bvFj
q/KvjNeXCIqXwqUA6BtaT/ECDZLijtV9Xvtr8TMVm+FXr59HQw8urdFpC+lUx/ZW
bgWtyIFIhvxdUNjmuXHV34FzN5A94N2fk75E9UOH8XF3Q2jWmUF5tM/cznBzQ/B9
SP0+0AjnzKQgeF65lF7pi8CcBVlU3IOuJNAZHRAZBDVZxOEOoXKfCGiFN6njlzcC
gbjpuyMF4WnK9ihCMcr3Lntjg6TWtVtXQbh6RWu9b5Jz+zjYUKlafAYAvU5JE6Wi
FwIDAQAB
-----END PUBLIC KEY-----
执行client.TradeAppPay(p)后,失败信息为:
asn1: structure error: tags don't match (2 vs {class:0 tag:16 length:13 isCompound:true}) {optional:false explicit:false application:false defaultValue:\u003cnil\u003e tag:\u003cnil\u003e stringType:0 timeType:0 set:false omitEmpty:false} @5
已检查私钥公钥是ok的。 查看历史issue,之前也有人遇到了这个问题,可以确定是签名的问题,那位兄弟是更换go版本后解决了, 我使用go1.10版本, 跟踪了下代码,发现返回错误的地方如下:
func SignPKCS1v15(src, key []byte, hash crypto.Hash) ([]byte, error) {
var h = hash.New()
h.Write(src)
var hashed = h.Sum(nil)
var err error
var block *pem.Block
block, _ = pem.Decode(key)
if block == nil {
return nil, errors.New("private key error")
}
var pri *rsa.PrivateKey
pri, err = x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return nil, err
}
... ...
具体出错的代码是: pri, err = x509.ParsePKCS1PrivateKey(block.Bytes), 该err为asn1: structure error: tags don't match。。。
补充:已跟踪到下面的代码问题, asn1.Unmarshal 失败了:
ParsePKCS1PrivateKey(der []byte) (*rsa.PrivateKey, error) {
var priv pkcs1PrivateKey
rest, err := asn1.Unmarshal(der, &priv)
我的环境信息:
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/shiqinfeng/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/shiqinfeng/Documents/go_workspace"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/1p/c_0vpz0j47sb4cvvwppl04mw0000gn/T/go-build629607236=/tmp/go-build -gno-record-gcc-switches -fno-common"
go version go1.10.2 darwin/amd64
授权转支付alipay.trade.pay,现在这个接口只返回order_str,咨询过蚂蚁技术了,需要调alipay.trade.pay发起请求
更新最新的版本后,原来的程序报错 private key error;这次版本改动没有兼容上次的版本呀?
秘钥和公钥都是正确的,报下面错误
asn1: structure error: tags don't match (2 vs {class:0 tag:16 length:13 isCompound:true}) {optional:false explicit:false application:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false} @5
`package tools
import (
"baby/controllers"
"github.com/smartwalle/alipay"
"github.com/astaxie/beego"
)
var (
appID = ""
partnerID = "**" //老版接口用
//RSA2签名 标准密钥格式除了首行和尾行外,每行64个字符
//这个是支付宝公钥
aliPublicKey = []byte(`-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+sfnysdoyMKAL/YUjWNa
....................
5Sw0RRDqARDnxBxijdhDn/iBLboSkS3veNMLmm0gGa8dSubkdnvW4gEOLG/LM8Zy
BQIDAQAB
-----END PUBLIC KEY-----`)
//
publicKey = []byte(`-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuyQ76zze1Abvvz7EL/pe
..................
SLKjRxEvNxqA5XQDpqO3JQKzzihaKd5CnD81e5erkMVAG51bNCeScw3jb3SJigU0
sQIDAQAB
-----END PUBLIC KEY-----`)
//RSA2签名 标准密钥格式除了首行和尾行外,每行64个字符
//这个是自己的私钥
privateKey = []byte(`-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAuyQ76zze1Abvvz7EL/peT3mMe8QlQO3ViqaMhpRVWO2vseI0
w3dP3F1Koqq9sdQas5kViontQ3FJeTqpcD5PtA/A6zVb+LYEj8/dzV09T+944ebt
*************
EYr3L550lFWavk6KWh8f+BV+jq+aCh7jwPRspHuugTngjfTpAgYR
-----END RSA PRIVATE KEY-----
`)
)
type AlipayController struct {
controllers.BaseController
}
var client = alipay.New(appID, partnerID, publicKey, privateKey, false)
func init() {
client.AliPayPublicKey = aliPublicKey
}
// @router /api/alipay/test
func (this *AlipayController) TestAlipayOrder() {
var p = alipay.AliPayTradePagePay{}
p.NotifyURL = "http://www.baituolebaby.com/alipay"
p.ReturnURL = "http://www.baituolebaby.com/alipayCallback"
p.Subject = "修正了中文的 Bug"
p.OutTradeNo = "trade_no_20170623011"
p.TotalAmount = "10.00"
p.ProductCode = "FAST_INSTANT_TRADE_PAY"
var url, e = client.TradePagePay(p)
beego.Error(url.String())
this.ReturnSuccess("e", e)
}
`
我得到的url永远都只是https://openapi.alipaydev.com/gateway.do 而且无论我的私钥,公钥怎么乱填,
那个 代表错误的e永远都是nil
wap.go文件里,TradeWapPay在服务端直接做了提交请求,难道不是由客户端提交的吗
$ go get -u github.com/smartwalle/alipay
package golang.org/x/crypto/pbkdf2: unrecognized import path "golang.org/x/crypto/pbkdf2" (https fetch: Get https://golang.org/x/crypto/pbkdf2?go-get=1: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)
有计划集成
alipay.trade.app.pay接口吗?
看了您的 https://github.com/smartwalle/alipay 觉得很好,现想用于业务中,但是看您有 一个master分支,一个dev分支
master分支是最近有修改
我该使用那个分支呢?
麻烦您了
SDK已经有一些测试用例了,可增加CI支持
文档中的
model.setAuthNo("2018041210002001660228733635"); // 填写预授权冻结交易号
AliPayTradePay这个struct中没有这个字段,刚开始误以为是AuthCode,后来把AuthCode的tag改为auth_no,接口才成功返回
请问alipay和weixinpay的接口是还在维护中吗?
建议新开一个develop分支来开发功能
执行x509.ParsePKCS1PrivateKey(block.Bytes)时报错
asn1: structure error: tags don't match (2 vs {class:0 tag:16 length:13 isCompound:true}) {optional:false explicit:false application:false private:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false}
很荣幸能使用这个库,目前在开发中遇到一个。我在沙箱环境的配置如下:
这个是阿里云公钥:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAscUcOO9OZUjknBCPE7X0VRs7957WWj0Gc
Zv2/guwyM1iB9mCopGMkUhBJTcXDbXB90gxWVr88grIu1tVSmWBLaB8RreFhyCcrFn49tKxjTB5awm1xp
bDG2OJqWBpmRYVR7BVP9N5KfVBjvswN/2uXmBkkzvv1fykBlfu2QhOT8HLBhLe4nCQTGZiUzi4/5SUG
R5UKZlWmYhGiNOGfMykyt8uX+m3P1DMIkkS5Jx8EKBnAap5/XP+2LeF2GmiZuhSZFgD/2NQZtmBIgOk
IzcmpQ8NgUMfSSytnS3TfK/xCjoATmwq2E7qA03Q8wE7Fi3+6kHevTqK30F/iv1/pdm+yQIDAQAB
-----END PUBLIC KEY-----
我的私钥:
MIIEowIBAAKCAQEAslgBTclEFZl7oLmILdpJhNAC1YKko13glLP1vVp84UpnB+q1d2pMHMiU4wqXFlU+rqrheYQh13MGmslxza5GrAvP7KOpRD8AiVj93777/rh14c7/cel+ByXkK2xMxcQaYi4bR9eLE6ac0KeOJnPuhQQjeRcdNsQUfwoBvc1+hJzUcP6WeikYUN/OBxnBTgPOiPCWx/kVJ1ZjqiXD3N2d2KALjtYVQQ7chObgsUdCNCh241Omdg1SDbJwcRjjRJSLoFqi3zh49Ms+xnCHPIReYdfUL9MqLEDMCWd3B7TrwJ/qE0cz4lyiQ1/JgQg2cKk2t/3B3HEcLSdoREJIpnWZ9wIDAQABAoIBAHasrSFv3oho+6U2EHJCoU1phZlCOAAlxf3tyoZYImVgNzNDccGm0EMPDlQOhf9sdiuQtj1AOay+dBSoG7x8TbbKnW+gcFBjhB3hQ/6RfepAIOFD9yN79ksXYb+rb2LiXZQbjje+LGPFKPCHrsXTu1J0MI6xXNVGoUTwCbydc6UWAXCkKAY7Bb4TxSKSCTeVmbHHqyw30f32GJOZTfKY1rB5rrgfP8S6UV6lpKLK+JoAyL9BzPmub0zPIEGDiJYiWsk4pJF5bGRldR+mfm9pXAYmSvJ0pYHezfT9Zrm0XaWJQZIDty06aszTEj2fbFHPdLvIIcvcPZNztjuYo3OHlUECgYEA6zdUSde7JVls9gyvlWvb26KNxWEOqzab0aAp/GlG2TuoaLOiE3yXGJNTwK5WWpjnnnMXy3hNGWnHowX9U3ZqmIMZRGX/yTe/BAeWSMlrr/+QFnRmWYZMy3YvzZYsPL1bNgBNTpPr4dM9Kelcpp5l74ORDpMfSPvhbuIKNJiUhzECgYEAwho0CLzB0qaGU145lz134cM3JlU6kIJJPKoWodLzqZc5XSGKTLfttYtSRm9yx+bOekGoBMRF8F7kidw3Vsi19ek2oLZal/cU4o6B95i/yTayqqBFlyoB821PtTxy9LdceKX7c0EeEFAGo8SaTcAvEdZX7xqasHpTkkiGoJwPuacCgYEAu9rbmYIPODwcdsIY9ThIRjikC3CBm6IofhnxjmKyL8qirMRSfEe0EO+RI0DZPNADpBt9dIZm5RYDWCLveFoJtjZ11pez2ouIJfq9PvKG6/AqrpRWLcfBy3lfokz+laARmaZSF6Cx8hCYN8HlujilZs3n6wD7KnnoSHuE9Q6rCPECgYB2AcBI35lnHF7mKI8S6AgOdcT9xStJ2Cv2eeIwmDQTkyEJAe83HUuj6AQpVnCOIEDAC1K/MyTiMo73Ua9DT9twmkzgAH2rjkhgRQu3IGLZTivpmG82rA9rk7W2Ff490YyivSbWt2wztrOStWCqjIERcyMa9y28xWIxuW5ADyFwWQKBgFpabJllRYx3M1j6x7Su8hvckACemC/MvtD6Hgnyo65RWB9pyRjn344ScYWIlfPu/UBlx6AFbT6WIwRIvTPeea1HnnNgxoQ9H188bb31A/uQWw08fiq8BQUZxTNWgmBco5VL3wNZLOHK02kbLeLSp6BIKVNi1OkvPQ2wYBb9Q/g6
应用公钥:
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAslgBTclEFZl7oLmILdpJhNAC1YKko13glLP1vVp84UpnB+q1d2pMHMiU4wqXFlU+rqrheYQh13MGmslxza5GrAvP7KOpRD8AiVj93777/rh14c7/cel+ByXkK2xMxcQaYi4bR9eLE6ac0KeOJnPuhQQjeRcdNsQUfwoBvc1+hJzUcP6WeikYUN/OBxnBTgPOiPCWx/kVJ1ZjqiXD3N2d2KALjtYVQQ7chObgsUdCNCh241Omdg1SDbJwcRjjRJSLoFqi3zh49Ms+xnCHPIReYdfUL9MqLEDMCWd3B7TrwJ/qE0cz4lyiQ1/JgQg2cKk2t/3B3HEcLSdoREJIpnWZ9wIDAQAB
开发中一直返回:
private key error
请问是我的配置文件哪里不对吗?谢谢!
alipay.trade.query (统一收单线下交易查询) 支付宝返回的数据,需不需要验证签名?为了安全起见,希望增加一个函数,把响应的结构体转化成 request 对象,再传入你写好 verify_rsa2 进行验签。
我看到代码里是实现了 rsa 的签名方式了,能否加个参数控制前面方式?
你好,首先感谢开发出这个SDK,很好用。
我在使用时发现,调用 alipay.New 时会传入 publicKey,但是 publicKey 变量仅仅做了赋值操作,在后续的代码中并没有被使用到,而是使用了 AliPay.AliPayPublicKey 字段作为验签的公钥。感觉这样使用起来并不是很直观,请问这么设计是有意为之还是bug呢?
谢谢
看了一些实现,有些地方还比较细,但代码封装过于冗余。能否接受极简式的封装。还有一个问题代码中太多var 式的写法与 不要使用this 这个关键字,如能接受极简封装我可以pr
我发几个重点修改点设计
type AliSign interface {
Get_Signtype() string
Sign(keys []string, param url.Values) (string, error)
CanVerify() bool
VerifyResponseData(data []byte, sign string) error
}
type RSA_sign struct {
sig *SignPKCS
sign_type string
hash crypto.Hash
}
type SignPKCS struct {
pri *rsa.PrivateKey
pub *rsa.PublicKey
}
....
var (
RSA = &RSA_sign{sign_type: K_SIGN_TYPE_RSA, hash: crypto.SHA1}
RSA2 = &RSA_sign{sign_type: K_SIGN_TYPE_RSA2, hash: crypto.SHA256}
)
麻烦修改一下ali_sms.go里用到的这个方法,好像你引用的goroom的rand.String变成了rand.GetRand().String(),
1、TradeWapPay 返回一个url有何用?原支付宝SDK是返回一个body,再把body response回到浏览器内执行。
2、为何现行网站上ProductCode 是 QUICK_WAP_WAY 而不是当前这个SDK内的值?
3、调完后,返回的内容是
“原来浏览器版本低是硬伤!
建议使用UC、Chrome、IE10等高版本浏览器”
不解
go test trade.go
./trade.go:10: undefined: AliPay
./trade.go:10: undefined: AliPayTradePagePay
./trade.go:33: undefined: AliPay
./trade.go:33: undefined: AliPayTradeQueryResponse
./trade.go:33: undefined: AliPayTradeQuery
./trade.go:39: undefined: AliPay
./trade.go:39: undefined: AliPayTradeCloseResponse
./trade.go:39: undefined: AliPayTradeClose
./trade.go:45: undefined: AliPay
./trade.go:45: undefined: AliPayTradeRefundResponse
./trade.go:45: too many errors
流程如下:
这里第 2 步和第 4 步都需要调用服务端接口,请问服务端应该分别调用 SDK 里的哪个接口?
alipay.trade.wap.pay接口的Subject参数是中文时,接口调用返回的url用浏览器打开后进行支付时订单信息显示乱码是怎么解决的?
我看了你的代码很简洁,不知道兄台,对同步数据验签,有没有做过实际的测试?支持你的项目
Hi,
我现在遇到一个非常奇怪的问题。
单笔转账支付在本地测试都是ok的,但是一到线上服务器,同样的代码,参数,结果就返回 “crypto/rsa: verification error”, 请问有人遇到过同样的问题吗?
本地环境
request------------->>>{ 01234 ALIPAY_LOGONID [email protected] 0.10 xxx }
response------------->>>&{{10000 Success 01234 20180423110070001502150080693587 2018-04-23 09:35:38} LEEG+P+BbCqIFt4t7s0ik/RcsdNx1NFVXg1aiNQRmnfM/15KJGKqzkga/KYJSGfzJaRtp8yY8z/mBsTBGVb53F3jPEqOITPl985U0awS3KdXs5Q1LbAetLn+5HVjpvfvb17dyLrA2IedSJ1bbh5uL7kTDCnLU1OWZeT7yeZaDO0m6zDTNus7XG+C+m6ksx0iBlyGmN1cVN/yGXndWIRWkj09SqNBjklk2JZ/RF2bSmJbT3RAG2p/pcVC9IHZVv8BQzlKSatJdGavcay4+ZSK4hgs2DTk97QQsycffHa5ktSHNuD4wZ88d2Jb15rfyAMQoFuuKaoLGglIb4mguawNyg==}
线上执行结果:
(线上虽然报这个错误,但是转账实际上已经完成)
request------------->>>{ 01234 ALIPAY_LOGONID [email protected] 0.10 xxx }
2018-04-23 10:35:46.767 ERROR:28050:payment/transfer.go:21: response------------->>><nil>
2018-04-23 10:35:46.767 ERROR:28050:payment/transfer.go:23: crypto/rsa: verification error
2018-04-23 10:35:46.767 ERROR:28050:cmsd/p.go:49: crypto/rsa: verification error
请尽快支持分账功能的接口
本 SDK 中的签名方法默认为 RSA2,采用支付宝提供的 RSA签名&验签工具 生成秘钥时,秘钥的格式必须为 PKCS1,秘钥长度推荐 2048。所以在支付宝管理后台请注意配置 RSA2(SHA256)密钥。
这里用支付宝的 pkcs1 2048 生成的应用私钥,使用 x509.ParsePKCS1PrivateKey
解析错误。
asn1: structure error: tags don't match (16 vs {class:0 tag:13 length:45 isCompound:true}) {optional:false explicit:false application:false private:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false} pkcs1PrivateKey @2
我看了下,这个项目使用的是按参数组合URL,
官方现在文档上是从服务端获取表单内容然后直接输出到商户页面里面,
这两者实现的区别是什么?
这项目的实现方式是否为支付宝接口1.0?
如果是按1.0的老版本接口实现的话,那么这个项目的兼容性是否在将来会有问题?
下载支付宝提供的那个RSA签名工具生成公私钥,需要进行App支付,工具上有2种密钥格式,PKCS8 和 PKCS1。
那么我应该选择的是哪一种密钥格式?
GOOS: darwin macOS High Sierra 10.13.6 (17G7024)
GOVersion: go version go1.12 darwin/amd64
// Author: Turing Zhu
// Date: 2019-06-17 13:43
// File : main.go
package main
import (
"crypto"
"encoding/base64"
"fmt"
"github.com/smartwalle/alipay/encoding"
)
func main() {
s := "app_id=2016093000630659&auth_app_id=2016093000630659&buyer_id=2088102178211755&buyer_logon_id=lpp***@sandbox.com&buyer_pay_amount=398.00&charset=utf-8&fund_bill_list=[{\"amount\":\"398.00\",\"fundChannel\":\"ALIPAYACCOUNT\"}]&gmt_create=2019-06-17 19:03:08&gmt_payment=2019-06-17 19:03:08&invoice_amount=398.00¬ify_id=2019061700222190309011751000293349¬ify_time=2019-06-17 19:03:09¬ify_type=trade_status_sync&out_trade_no=Rent20190617190239201906171902396218&point_amount=0.00&receipt_amount=398.00&[email protected]&seller_id=2088102177935681&subject=充值&total_amount=398.00&trade_no=2019061722001411751000039062&trade_status=TRADE_SUCCESS&version=1.0"
data := []byte(s)
sign := "QaaRXf6owI8G7haQrJI2E6oR+R8SOMb9VxS27LFdpy04/lZA3YSvobGluQPGF/p3uIGXrW/iRPZYR+FXVSUFNUhddG1VDemUgmZvfpxEQ1zjzYyQOOpXXZC7Di8riUEu+7dtYk2RgbGywNopVnceo5gPRRHtudfc+jI9B/jxH6iWenqE2eXWCbfNR53qGxgfkXYc+SkpnICReoSHZ86v+WqBAU2jXucdgBJmcopzlHQ5Vj63MFXPCIVJECp4s5ay2F2Bg/GWfoMEJMrcxU/PZAEKt/PsAd31v+ImxXpoNIC7m2MtdcLjhMQgcVvqNKMafVWopsXyK91ffSSIso7BPw=="
signType := "RSA"
publicKey := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVFboC7U6EH8Jp+Nk8O7ZUQa9D7gdKDCkX0y/kYu9UBwdD1OMF9E8AD//U9mQmYunrPjys1gX40sqa5nyqp/PcPVxFRYT4sRTDGY328vPqO0t1hKeGzSxDRbzhsxaltLcK55kFIAs7PrFwCIxnLkzg6wpMrobgMFSw4MsrCFvNTF9chOAcR6eeZlWCtxBJBU7WrRoJByRlo8vVcRCGpGqDh7ulb8OKq4fZ8eSAXqnnxuZcWChI40VuEsswvmaPpTi0CpLdpmW72n6EBuYryztifKgNIWJCLBtnJdekLlOThpi7GPAOr8EjZG6v6Thz7jpwk32QHLTRuqeYZ++Pny3wIDAQABMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwiNFPnamdp5PBgC02xDgk/ZwGPTbaqXQNSaQbrsi9uK/g5XVHlTbFV3uN+5OA1Ib7iK5uIC5cbIUjLqFXmTcDdRavaovmhwEL8QSOEQJXwWtNte/I1dFCdwxqJhiBiHqn55JldwAExq/4H5ecbHRXZIcPyxG/e0zp085uIleFv3F6RR6ZLyqEsHTcvU3YsTbnUF/cxLxAP1FO35lJmYaLRZg48NhMUab/VMVOzyROFDFdWlnrrinIxHKfiJ3xNkeeLjcyDDz8UYw9FZaxXrdum0ZwmClPzKuvfvFJ36ymxCQE78CPp+xP5Ieyn1iwMrvxgOXCL7w0/vtzvFfo03w2QIDAQAB"
ok, err := verifyData(data, signType, sign, []byte(encoding.FormatPublicKey(publicKey)))
fmt.Printf("ok=%v, err=%s\n", ok, err)
}
func verifyData(data []byte, signType, sign string, key []byte) (ok bool, err error) {
signBytes, err := base64.StdEncoding.DecodeString(sign)
if err != nil {
return false, err
}
err = encoding.VerifyPKCS1v15(data, signBytes, key, crypto.SHA256)
if err != nil {
return false, err
}
return true, nil
}
ok=false, err=x509: trailing data after ASN.1 of public-key
(*´▽`)ノノ你好,想问一下各位大佬,wap支付的参数对了,为什么返回的url是这个:https://openapi.alipaydev.com/gateway.do。app支付用了挺好用的
此接口RSA2 方式,sign 生成 是空字符串,返回参数如下:
app_id=2015082000223895&biz_content={"body":"iPhone7 ","subject":"iPhone7 ","out_trade_no":"20170531220","timeout_express":"90m","total_amount":"1.00","seller_id":"1011007","product_code":"QUICK_MSECURITY_PAY"}&charset=utf-8&format=JSON&method=alipay.trade.app.pay¬ify_url=https://domain.com/trade_notify&sign=&sign_type=RSA2×tamp=2017-05-31 02:24:23&version=1.0
在配置应用时是:接口内容加密方式: AES密钥,你们有这个吗?用test的密钥生成的支付URL是带参的,可是我自己的密钥生成的没有带参,导致无法使用,怎么解决呢?
在收到回调通知验签的过程中,VerifyPKCS1v15报”public key error“。我的ALIPAY_PUBLIC = 支付宝沙盒配置那里的“查看支付宝公钥”,是否还需要对这个公钥进行转换么?
appPay没有实现?
asn1: structure error: tags don't match (2 vs {class:0 tag:16 length:13 isCompound:true}) {optional:false explicit:false application:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false} @5
Line 54 in a68491d
没有发起请求
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.