教你如何设置快速结帐方式 第三方支付宝结账接口整合

导读:上篇文章已经给大家简单介绍了“支付宝在线支付接口的自定义付款页面教程”本文我们继续上篇说道的更多关于自定义网站付款的详情

导读:上篇文章已经给大家简单介绍了“支付宝在线支付接口的自定义付款页面教程”本文我们继续上篇说道的更多关于自定义网站付款的详情

快速结账接口(即时到账接口)给你的买家一个简化的结账体验,让他们到本地网站在支付授权的过程,让他们用他们的支付宝余额,银行帐户或信用卡支付,不共享或进入你网站上的任何敏感信息。

获取PID

1.开发者登录支付宝开放平台,点击右上角的“账户中心”。

1f7f00033bfd35cf3536

购买已经开通支付接口的企业支付宝账号联系q q:305710439

2.选择“mapi网关产品密钥”,即可查询到合作伙伴身份(PID),以2088开头的16位纯数字。

1f7f00033bf8510a0855

配置密钥

即时到账接口支持DSA、RSA、MD5三种签名方式,请根据实际业务需求选择合适的签名方式。

步骤1:RSA公私钥生成

生成方式一(推荐):使用支付宝提供的一键生成工具(内附使用说明)

  • Windows:下载

  • MAC OSX:下载

解压打开文件夹,直接运行“支付宝RAS密钥生成器SHAwithRSA1024_V1.0.bat”(WINDOWS)或“SHAwithRSA1024_V1.0.command”(MACOSX),点击“生成RSA密钥”,会自动生成公私钥,然后点击“打开文件位置”,即可找到工具自动生成的密钥。

注意:工具不支持含中文或空格的路径,请下载到英文目录下使用。

生成方式二:也可以使用OpenSSL工具命令生成

首先进入OpenSSL工具,再输入以下命令。

经过以上步骤,开发者可以在当前文件夹中(OpenSSL运行文件夹),看到rsa_private_key.pem(RSA私钥)、rsa_private_key_pkcs8.pem(pkcs8格式RSA私钥)和rsa_public_key.pem(对应RSA公钥)3个文件。开发者将私钥保留,将公钥提交给支付宝网关,用于验证签名。以下为私钥文件和公钥文件示例。

注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和PHP的开发者来说,无需进行pkcs8命令行操作。

标准的私钥文件示例(PHP、.NET使用)

PKCS8处理后的私钥文件示例(Java使用)

公钥文件示例

步骤2:上传公钥&获取支付宝公钥

  1. 开发者登录开放平台,点击右上角的“账户中心”。

  2. 选择“mapi网关产品密钥”。

  3. 点击“RSA(SHA1)密钥”处的“设置开发者公钥”(如已设置则显示“查看开发者公钥”,可修改),将公钥文件去除头尾、换行和空格,仅需填入字符串。

    例如转换前公钥pem文件格式:

    转换后得到的字符串为:

1f820006016743e82a7b

1dc600034f33ec5fe66c

  1. 点击“RSA(SHA1)密钥”处的“查看支付宝公钥”,即可获取支付宝公钥,用于支付宝返回数据的验签。

    对于支付宝公钥,看到的是一个字符串,如下:

    如果需要使用文件方式(如使用服务端SDK的PHP/.NET版本)读取支付宝公钥,需要在头尾加入标示后保存至文件,文件内容如下:

  1. 开发者登录开放平台,点击右上角的“账户中心”,选择“mapi网关产品密钥”。

  2. 点击“MD5密钥”处的“查看”,通过手机校验后即可获取MD5 Key,用于请求数据的签名和支付宝返回数据的验签。

1f8000033ddf4fbca2de

步骤1:DSA公私钥生成

进入OpenSSL工具,再输入以下命令。

OpenSSL> dsaparam -out dsa_param.pem 1024 #生成参数文件OpenSSL> gendsa -out dsa_private_key.pem dsa_param.pem #生成私钥OpenSSL> pkcs8 -topk8 -inform PEM -in dsa_private_key.pem -outform PEM -nocrypt -out dsa_private_key_pkcs8.pem #Java开发者需要将私钥转换成PKCS8格式OpenSSL> dsa -in dsa_private_key_pkcs8.pem -pubout -out dsa_public_key.pem #生成公钥OpenSSL> exit #退出OpenSSL程序

步骤2:上传公钥&获取支付宝公钥

经过以上步骤,开发者可以在当前文件夹中(OpenSSL运行文件夹),看到dsa_private_key.pem(DSA私钥)、dsa_private_key_pkcs8.pem(pkcs8格式DSA私钥)、dsa_public_key.pem(对应DSA公钥)和dsa_param.pem(参数文件)4个文件。开发者将私钥保留,将公钥提交给支付宝网关,用于验证签名。

注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和PHP的开发者来说,无需进行pkcs8命令行操作。

  1. 开发者登录开放平台,点击右上角的“账户中心”,选择“mapi网关产品密钥”。

  2. 点击“DSA密钥”处的“设置开发者公钥”(如已设置则显示“查看开发者公钥”,可修改),将公钥文件去除头尾、换行和空格,仅需填入字符串。

1f7c00060ed7b9a9da58

点击“DSA密钥”处的“查看支付宝公钥”,即可获取支付宝公钥,用于支付宝返回数据的验签。

在配置文件中找到以下参数进行对应配置:

partner 合作者身份ID,签约账号,当你成为支付宝的签约用户时会分配一个以2088开头由16位纯数字组成的字符串,参见获取PID。
seller_id 收款支付宝账号,一般情况下收款账号就是签约账号,使用partner即可。
  • 在本地生成商户自己的RSA私钥和公钥->详见“配置密钥——配置RSA密钥”;

  • 将生成的公钥去掉“—–BEGIN PUBLIC KEY—–”和“—–END PUBLIC KEY—–”且去空格去回车,上传到支付宝->详见“配置密钥——配置RSA密钥”。

配置完成并且放至对应环境(环境需要自己搭建)服务器,即可运行DEMO,进行支付体验。

  • JAVA:JDK1.5以上。

  • .NET:framework 3.5以上

  • PHP:PHP5.0以上,且需要开启CURL服务、SSL服务。

  • 商户端是否有对DNS设置,是否有做防火墙策略。

  • 是否有限制端口,需要开通的端口:80或443。

配置同步返回(同步跳转通知)和异步回调(异步通知)。在配置文件中有return_url和notiry_url两个参数,可分别配置到DEMO中的return_url页面和notify_url页面。

注意:DEMO两个页面的处理区别在于以下两点,其他相同。

以JAVA版DEMO异步通知页面处理逻辑为例

  1. 使用POST方式接收所有数据

  2. 将数据使用AlipayNotify.verify() 验签方法验证。

    (1)验证签名是否正确。

    (2)验证是否是支付宝发来的通知。

  3. 通过返回参数中的trade_status字段(交易状态)判断并可写入执行业务逻辑代码。

  4. 使用out.print(“success”); 打印success。不可有其他任何HTML代码。

注:notify_url页面只能返回success,异步通知页面上不可有任何HTML代码。支付结果请以异步通知为准。

最后需要确认是否是https,如果是https,那么需要安装ssl证书,证书要求如下:

要求“正规的证书机构签发,不支持自签名”,如果不理解请咨询证书供应商。


为您推荐了相关的技术文章:

  1. HTTPS 原理详解 - 又拍云 - 客户服务平台
  2. openSSL命令、PKI、CA、SSL证书原理
  3. ActiveMQ
  4. HTTPS那些事 - Galaxy Lab
  5. Python + js 通过RSA算法对post表单数据进行加密处理

原文链接: www.freebuf.com