前一阵开发的网站的网上支付部分终于拿到工商银行的文档了,开始做网站与工行的连接了。
下面公布一下SH接口模式的文档。
HS通知接口模式
商户通过在订单支付表单中的interfaceType字段中写入值“HS”来通知工行该笔订单使用HS模式将交易结果信息通知商户。
此接口为工行最新提供的通知接口模式之一。在此通知接口模式中,商户需要开发一个CGI程序,开发语言由商户任意选择,可以是ASP,JAVA,PHP,Perl等。该CGI程序完成接收工行通过http协议发送过来的交易结果信息,交易结果信息作为URL地址中的参数传递至商户,在传送给商户的参数中,包含使用工行私钥对交易结果数据的数字签名。商户应该先用工行的证书文件验证该数字签名,确认该通知信息的有效性。
工行调用商户端CGI程序的位置和程序名称由商户在订单支付表单中的merURL字段定义,如http://www.toICBCpay.com/sendOrder.asp等,URL中可以包括端口号。
客户在支付时,如果未能支付成功,可以对一笔订单多次发起支付请求。在HS模式中,工行通过订单支付表单中的hsmsgType字段决定什么情况下给商户发送交易结果。如果该字段为0,则客户对一笔订单的每一次支付操作结果无论成功失败都将发送给商户,因此商户对应一笔订单接收到的可能有多笔失败信息或全为失败信息,但一笔订单工行最多只会发送给商户一笔成功信息。如果该字段为1,则工行只会将最后一个成功的交易结果发送给商户,而无论客户对一笔订单支付了多少次,如果订单始终未能成功支付,工行不会向商户发送任何信息。
此通知接口模式还能够提供对信息化商品(如IP电话卡)等没有商品实体的实时取货功能。在将交易结果发送给商户后,如果商户认为该笔支付成功,需要向客户显示信息化商品的内容(如IP电话卡的卡号,卡密码等),则商户应将取货的URL地址作为回应信息传给工行,工行将该URL链接附加上工行的交易数据传递给客户浏览器,由客户浏览器端发起取货(页面使用javascript自动调用该链接)。
程序示例
支付表单格式如下: