支付宝公钥证书支付示例
支付宝平台仅提供了普通公钥签名方式的电脑支付DEMO(下载),并未提供使用公钥证书的电脑支付DEMO,在阅读了老版的SDK之后,自己编写了这个DEMO。
效果图
支付测试页面
支付宝默认支付页面
前置支付生成的支付二维码,用于嵌在商品页面。
开发前的准备
创建支付应用
登录支付宝开放平台,创建新的应用。依次点击”创建应用“ --> ”网页&移动应用“–>”支付接入“,根据页面提示,补充完整所需信息。
添加支付能力
生成公钥证书
使用阿里支持提供的公钥证书在线生成工具生成公钥证书。
密钥长度推荐选择RAS2,密钥格式分为JAVA适用和非JAVA适用两种,本文中使用的PHP,所以选择了非JAVA适用。
点击”生成CSR“按钮,会弹出新的窗口用来填写创建证书文件所需的信息。点击”生成CSR并保存“按钮,会自动下载一个压缩包文件,这其中包含了三个文件:应用公钥、应用私钥和CSR文件。
至此,离证书生成还有一步之遥。回到支付宝开放平台,并进入刚刚创建的支付应用,点击左侧的”应用信息“菜单,设置接口加签方式。
在这里选择公钥证书,并上传刚刚通过加密工具生成的CSR文件。
CSR证书验通过后,可以看到如下图所示的三个证书下载链接。
保存好这三份证书文件,以及通过密钥工具生成的应用公钥和私钥。
验证密钥证书是否匹配
通常情况下是可以跳过这一步的。在测试阶段如果遇到类似错误提示密钥不匹配时,可以按照支付宝官方文档指导来验证密钥证书是否匹配。
下载服务器端SDK
PHP SDK(老版) 下载
编写DEMO
待上面所有准备工作完成后,我们就可以真刀实枪的开始编写测试DEMO了。
支付测试页面
我们需要先编写效果图中的支付测试页面,用于灵活录入支付所需的一些参数,如商户订单号、订单名称、商品描述、订单金额等。
<body text=#000000 bgColor="#ffffff" leftMargin=0 topMargin=4>
<header class="am-header">
<h1>支付宝电脑网站支付(公钥证书)支付体验入口页</h1>
</header>
<div id="main">
<form name=alipayment action=pagepay.php method=post target="_blank">
<div id="body1" name="divcontent">
<dl class="content">
<dt>商户订单号 Out Trade No :</dt>
<dd>
<input type="text" id="WIDout_trade_no" name="WIDout_trade_no" />
</dd>
<hr class="one_line">
<dt>订单名称 Subject :</dt>
<dd>
<input type="text" id="WIDsubject" name="WIDsubject" value="Payment order for Learning Mall course"/>
</dd>
<hr class="one_line">
<dt>付款金额 Amount:</dt>
<dd>
<input type="text" id="WIDtotal_amount" name="WIDtotal_amount" value="0.01"/>
</dd>
<hr class="one_line">
<dt>商品描述 Body:</dt>
<dd