There are questions remain, We'll search for the answers together. But one thing we known for sure,the future is not set!

【原创文章】ecmobile修改进阶篇三-介绍下ecmobile android版正确配置支付宝支付的方法

ecmobile 百蔬君 65803℃ 已收录 7评论

ecmobilezhifubao

在之前的一篇文章中:调试解决ecmobile支付宝付款之后后台任然显示未付款的问题及分析支付宝验证签名失败的原因 https://www.baishujun.com/jun/2015/11/18/debug-the-alipay-of-ecmobile/,我介绍了遇到的支付宝配置的一些问题,在文章的最后我简要介绍了下怎样配置支付宝,但是说的不够详细,很多朋友应当遇到这种问题。那么我想仔细介绍一下怎样正确去配置ecmobile android版中的支付宝支付。

要想在ecmobile中使用支付宝,首先你得拥有一个公司注册的支付宝,比如这样的

Snap1

因为有了公司支付宝之后才有手机网站支付和移动支付,下面黄色标注的就是我们需要开启的协议。

 

Snapa1

有了这个基础之后,我们可以来设置ecmobile中设置支付宝支付的配置了。

开通上面两个协议后,ecmobile中的支付宝支付有两种,一种是支付宝支付,一种是支付宝wap支付,APP中主要是下面黄色标注的“支付宝支付”,大部分问题也是集中于这个支付吧,如下图

Screenshot_2015-11-20-16-32-21.jpeg

如果支付宝的id和安全码设置正确,但是秘钥没有设置正确,那么就会出现下图所示的已经支付成功了,但是我们后台还是显示待付款,这个在开头所说那篇文章中进行了详细分析。

 

Screenshot_2015-11-17-14-09-56.jpeg

 

下面就来说这个支付宝的配置问题。

ecmobile中支付宝支付的配置有两个地方需要自己动手去制作,配置好,第一个地方就是php端key目录中的两个pem文件,分别为alipay_public_key.pem和rsa_private_key.pem,,如图

Snap2

第二个地方就是ecmobile中的ecmobilemanager.java中的设置,如图

Snap3

先说php端的制作,这个pem的制作需要工具openssl.exe的帮忙,这个我们直接利用:支付宝钱包支付接口开发包2.0标准版(201602022)(点击下载),或者下载这个工具包中open sll for windows,下载好这个工具包后,里面有非常详细的使用说明。

打开“支付宝钱包支付接口开发包2.0标准版(20160223)\DEMO\openssl\bin”目录下面的openssl.exe,输入制作商户私钥的命令:genrsa -out rsa_private_key.pem 1024

Snap4

这里输入命令按ctrl+v是不行,点击右键也不粘贴,也不弹出右键,除了手动输入以外,我们可以点击窗口左上角的图标,弹出的菜地里面有一个“编辑”,里面就有“粘贴”选项了。输入命令之后确定,就生成了rsa_private_key.pem,这个文件请上传服务器ecmobile/payment/alipay/key目录。

接下来我们输入rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem命令,确定后生成 rsa_public_key.pem文件,即商户公钥。

Snap5

好了,在这里我们就制作好了商户的私钥和公钥,两个文件分别为rsa_private_key.pem,rsa_public_key.pem

有人说要将RSA私钥转换成PKCS8格式,我这里是没有转换的,ecmobile中我也是输入的RSA格式的私钥,支付没有问题!!

好了,现在说ecmobile中几个参数的设置。

// 获取支付宝parterID(合作者身份)
public static String getAlipayParterId(Context context)
{
return “20886****************”;
}

// 获取支付宝sellerID(收款账户)
public static String getAlipaySellerId(Context context)
{
return “93845@maiseed.com”;
}

// 获取支付宝key
public static String getAlipayKey(Context context)
{
return “2g3cfq5my8b*******************”;
}

// 获取支付宝rsa_alipay_public(公钥)
public static String getRsaAlipayPublic(Context context)
{
return “MIGfMA0GCSqGSIb3DQEB***********************************************”;
}

// 获取支付宝rsa_private(私钥)
public static String getRsaPrivate(Context context)
{
return “MIICWwIBAAKBgQDey95dA*****************************************************”;
}

// 获取支付宝回调地址
public static String getAlipayCallback(Context context)
{
return “http://www.maiseed.com/ecmobile/payment/alipay/sdk/notify_url.php”;
}

 

进入支付宝后,点击查看PID和KEY,就可以看到我们的合作者身份和安全检验码

Snapsdfgs

上面代码中的“获取支付宝parterID(合作者身份)”就是图中的合作者身份(PID),上面代码中的“获取支付宝key”就是上图中的“安全检验码”。

打开我们刚开始制作的rsa_public_key.pem,将前面的—–BEGIN PUBLIC KEY—–和末尾的—–END PUBLIC KEY—–去掉,将加密内容去掉换行符,转折符之类的排成一行。

Snap7

不要保存rsa_public_key.pem文件,后面要用到,复制整理好的内容,输入支付宝中的安全检验码中的“RSA加密”,点击添加秘钥输入刚刚复制的内容就好了,因为我已经添加过了,所里这里显示的是“查看秘钥”,如果正确无误,会显示上传成功的。之后点击“查看支付宝公钥”就可以获得我们需要的支付宝公钥。

Snap8

非常重要的支付宝公钥就是它了,也就是上面代码中的“获取支付宝rsa_alipay_public(公钥)”中所需要填写的值。

将最开始制作的rsa_private_key.pem打开,像上面整理rsa_public_key.pem文件一样,去头掐尾,只要中间的加密内容,排成一行,填写到上面代码中的“获取支付宝rsa_private(私钥)”中。

“获取支付宝sellerID(收款账户)”这个里面的返回值就是公司支付宝账号,比如百蔬网这里是93845@maiseed.com。

获取支付宝回调地址,比如在百蔬网上是http://www.maiseed.com/ecmobile/payment/alipay/sdk/notify_url.php,换成您的域名就好了。

最后一步,我们来说alipay_public_key.pem的制作,因为秘钥文件不允许有注释、空格、换行,那些什么换行符,转折符之类的又看不清,容易出错,这里有个小技巧。

打开开始制作的rsa_public_key.pem文件,这个是支付宝生成的公钥文件,格式应当是没问题的,如果前面保存了那么这个格式就没有了。我们将上图中的支付宝公钥复制出来,然后粘贴到rsa_public_key.pem文件中,然后比对截取。

Snap9

然后将上面的支付宝公钥依次剪贴替换原来rsa_public_key.pem中对应的内容。比如讲第一行以”6bkra”结尾的64位字符剪贴替换掉以”i3kvqt”结尾的那行字符,前三行64位字符,最后一行24位字符,全部替换后,然后另存为alipay_public_key.pem,之后上传到ecshop服务器的ecmobile/payment/alipay/key目录,这样就大功告成了,试试这样做的效果吧!

个人见解:

getAlipayParterId

getAlipaySellerId

getAlipayKey

这三个值设置正确的话,那么付款就应当会成功。如果付款成功,但是后台没有更新,那么与这里关系不大,一般情况应当是与秘钥的设置有关系。

应该主要在

rsa_alipay_public

rsa_private

getAlipayCallback

这三个参数的设置上及服务器端设置上仔细检查。

 

欢迎交流讨论

转载请注明:百蔬君 » 【原创文章】ecmobile修改进阶篇三-介绍下ecmobile android版正确配置支付宝支付的方法

喜欢 (6)or分享 (0)
发表我的评论
取消评论

请证明您不是机器人(^v^):

表情
(7)个小伙伴在吐槽
  1. 按照你的方法试过了,怎么配置支付的时候都是一直显示正在支付调用不出来支付页面。这个是什么问题啊。。。
    jason2015-11-23 20:22 回复
    • 回调地址设置正确了吗?如果支付不成功的话,可能是id那边有问题
      百蔬君2015-11-25 19:28 回复
  2. 请问还需要在ecmobile\payment\alipay\sdk\alipay.config.php 修改路径吗?
    米饭2015-11-26 18:58 回复
    • 最好截取您的路径看一下,有时候这个路径和服务器环境有关系的。如果后面的RSA加密能够正确读取秘钥即无所谓了
      百蔬君2015-11-29 19:47 回复
  3. 我当前已经支付成功,我的支付宝已经将钱扣除掉了。但是,在后台数据库显示我没有支付。请问这个是怎么回事?
    showlight2015-12-12 17:25 回复
    • 应当是秘钥和公钥的问题,检查下这个
      baishu2015-12-24 00:31 回复
  4. 能给一份吗? 谢谢
    q4564002016-12-07 09:09 回复