lokielse / omnipay-unionpay

UnionPay driver for the Omnipay PHP payment processing library
MIT License
112 stars 43 forks source link

UpopRsaCert.cer 无法打开 #1

Closed unizhu closed 9 years ago

unizhu commented 9 years ago

Hi,

$gateway->setEnvironment('production'); 使用正式环境,验证付款成功后 回调的签名签名验证出错了: UpopRsaCert.cer 无法打开。 openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! 用openssl命令行 也无法读取这个文件。。

然而,银联的help上说用不到UpopRsaCert.cer这个文件,可以删除。

下载的正式环境证书目录里有3个文件: EbppRsaCert.cer , encryptpub.cer, UpopRsaCert.cer

然而,下载的正式环境证书的帮助里写: ebpp.cer 生产验签证书 encryptpub.cer 生产加密证书

已经搞不清这些了。。求帮助。

lokielse commented 9 years ago

可访问 https://open.unionpay.com/ajweb/account/testPara 下载以下两个文件

下载后放到一个目录下, 使用$gateway->setCertDir($dir) 将证书目录设置为该目录路径

unizhu commented 9 years ago

使用测试证书,放在正式环境里?

lokielse commented 9 years ago

不好意思,之前没有注意你表述的是正式环境。

我这边下载银联提供的demo只看到过有 UpopRsaCert.cer 这个文件,没有见过你说的EbppRsaCert.cer 和 encryptpub.cer

UpopRsaCert.cer银联的正式环境公钥证书,在支付成功后通知服务器,验签的时候会用到。

建议你先看看银联提供的demo及sdk代码,虽然比较混乱,但是基本的逻辑和文件的用户还是很明了的。

如果你又新的发现或问题,请在此继续跟踪反馈。

unizhu commented 9 years ago

是你的示例代码误导了,应该写成: return $gateway->completePurchase(['request_params'=>$request->all()])->send(); 这样就验证成功了。

request_params 这个key是你写死的,不是返回回来的key值。改改 read me 吧, 顺便把$gateway->setEnvironment('production'); 也写进去吧。

谢谢。

unizhu commented 9 years ago

然后最好做个config文件,方便维护。 比如把 测试,生产环境 证书目录 证书名称 商户id 写在配置里

lokielse commented 9 years ago

谢谢提醒,README已经更正。