支付宝:手机网页即时到账功能的配置开发

浅显易懂的描述:

配置部署好后:

首先会向支付宝请求一个授权token,请求成功后将授权token与支付请求的数据包组合向支付宝发起支付请求

支付宝进行校验,支付请求处理

支付完成后会根据你设置的call_back_url跳转(当然是跳转回我们的网站根据他携带的数据进行下一步业务处理啦),同时也会根据你设置的notify_url异步通知支付结果

异步notify使用的是post,跳转call_back_url使用的是get,你可以获取数据来进行支付完成后的业务处理。下面就是你自己业务处理了。

                                                                                                                                          

详细步骤:
1、签约审核完成

开始自助集成,下载demo包。

2、确认你的服务器是否开启php_openssl扩展

php_curl一般都是默认开启的(这个也必须开启,不开启就真没戏了),但php_openssl一般都是默认关闭的。如果你是租用的虚拟主机,很可能没有开启这项扩展。

开启了openssl,采用RSA方式,sign_type设为'001',需要公钥和私钥:

默认使用的签名方式sign_type是RSA,支付宝采用‘001’来代表它,需要openssl的支持,私钥rsa_private_key.pem、公钥alipay_public_key.pem需要自己手动生成(其实就是自己配置的一把钥匙和一把锁,钥匙给用户,锁留在自己手里,客户来了拿钥匙开锁,打开了继续下一步,打不开就say bye,强迫症患者可以去阅读下密码学的相关书籍,入门级知识点)。

生成方法:

开发包里自带openssl工具,运行openssl.exe:

生成RSA私钥:

openssl>genrsa -out rsa_private_key.pem 1024

生成RSA公钥:

openssl>rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

将RSA私钥转换成PKCS8格式:

openssl>pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

在openssl.exe文件夹下就能看到rsa_private_key.pem和alipay_public_key.pem两个文件了,放到你demo包里的key文件夹下就可以了。

没有开启openssl,采用MD5模式,sign_type为 'MD5',不需要公钥和私钥,但key必须设置:

没有开启openssl且没办法去对php进行配置的虚拟主机也不要慌张,签名方式sign_type选择MD5即可。

这里一句话来说就是:你的服务器能openssl就用RSA签名,生成你的私钥和公钥,不能openssl就用MD5签名就好。

3、明确采用那种签名方式后我们再进行下一步

概览:

───────

代码文件结构

───────

WS_WAP_PAYWAP-PHP-UTF-8
  │
  ├lib┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹
  │  │
  │  ├alipay_core.function.php ┈┈┈┈┈┈支付宝接口公用函数文件
  │  │
  │  ├alipay_notify.class.php┈┈┈┈┈┈┈支付宝通知处理类文件【异步notify和跳转call_back_url的校验】
  │  │
  │  ├alipay_submit.class.php┈┈┈┈┈┈┈支付宝各接口请求提交类文件【生成支付请求的提交模块】
  │  │
  │  └alipay_rsa.function.php┈┈┈┈┈┈┈支付宝接口RSA函数文件【公钥私钥的校验模块】
  │
  ├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件
  │
  ├alipay.config.php┈┈┈┈┈┈┈┈┈┈┈┈基础配置类文件【partnerid,key,call_back_url,notify_url等】
  │
  ├alipayapi.php┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口入口文件
  │
  ├notify_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈服务器异步通知页面文件【支付完成后的异步通知】
  │
  ├call_back_url.php┈┈┈┈┈┈┈┈┈┈┈┈页面跳转同步通知文件【支付完成后的跳转通知】
  │
  ├key┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈私钥公钥文件夹【用于RSA签名校验】
  │  │
  │  ├rsa_private_key.pem┈┈┈┈┈┈┈┈┈商户的私钥文件
  │  │
  │  └alipay_public_key.pem┈┈┈┈┈┈┈┈支付宝的公钥文件
  │
  ├openssl┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈缺省dll文件(用法见下方※注意※)
  │  │
  │  ├libeay32.dll【win的dll组件】
  │  │
  │  ├ssleay32.dll【win的dll组件】
  │  │
  │  └php_openssl.dll【php的ext扩展】
  │
  └cacert.pem ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈用于CURL中校验SSL的CA证书文件

注:

openssl文件夹中的3个DLL文件用法

1、如果你的系统是windows系统,且system32文件目录下没有libeay32.dll、ssleay32.dll这两个文件
   那么需要拷贝这两个文件到system32文件目录中


2、如果您的php安装目录下(php\ext)中没有php_openssl.dll
   那么请把php_openssl.dll放在这个文件夹中

需要配置的文件是:

alipay.config.php【基本的不可或缺的参数设置】

partner 商户id  

key 商户安全校验码【MD5签名方式】 

private_key_path/ali_public_key_path 公私密钥路径【001签名方式】 

sign_type ‘001’ or ‘MD5’

input_charset 建议‘utf-8'’

cacert  cacert.pem的路径,curl的校验

transport http或https,看你支不支持https了

alipayapi.php【参数主要用于支付请求的数据包的生成】

notify_url 支付成功后服务器的异步通知页面路径

call_back_url 支付成功后的页面跳转,即同步通知页面路径

merchant_url 支付中操作中断返回地址

seller_email 卖家支付宝帐户【自己部署时固定就好】

out_trade_no 商户订单号 【自己部署时生成就好,升级后28位】

subject 订单名称【本次订单的描述】

total_fee 付款金额 【本次订单的金额】

key文件夹

放你的公钥私钥文件,当然,放哪都行,你只要保证private_key_path/ali_public_key_path的路径正确即可

4、发起验证请求获取授权码token

    配置OK后,访问index.php,

支付宝:手机网页即时到账功能的配置开发

这是demo的发起请求的页面,以后这些参数我们完全可以封装在自己的程序里,确认后会将数据post到alipayapi.php来请求token,代码里是

//获取request_token
$request_token = $para_html_text['request_token'];

这样写的

5、发起支付请求

然后用$request_token去发起支付请求:

//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter, 'get', '确认');
echo $html_text;

$html_text其实是一个确认支付请求的链接,支付宝把这货写成自动确认提交的了,大家可以去lib/alipay_submit.class下的buildRequestForm函数里面把document.forms['alipaysubmit'].submit();删掉就好。

6、支付宝进行支付请求的处理

...付钱吧骚年付钱付钱付钱付钱!!!

7、支付完成

跳转会call_back_url设置的地址,并且带着支付完成后的get参数返回你的网站,具体参数项我忘了,大家可以var_dump($_GET)一下看看,在这里你则进行下一步的业务处理,修改订单状态啊什么的。notify_url也会收到异步post通知。业务逻辑就靠你们了~~~

OK,到这里就结束了,下面说几个常见的问题

1、通用参数中少了如service、partner等必填参数

确认你选得sign_type模式,MD5时一定要设置key,001(RSA)是一定要生成公私密钥、设置好公私密钥的路径,设置好cacert的路径。

2、function openssl_get_privatekey/openssl_get_publickey is not found什么的

你php没有开启openssl扩展啦。


你可能感兴趣的:(支付宝手机网页即时到账)