Files
littleTiger/plugins/payment/alipay/app_notify
2019-02-28 19:48:21 +08:00
..
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00
2019-02-28 19:48:21 +08:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

            ╭───────────────────────╮
    ────┤           支付宝代码示例结构说明             ├────
            ╰───────────────────────╯ 

       代码版本3.3
         开发语言PHP
         版    权:支付宝(中国)网络技术有限公司
        制 作 者:支付宝商户事业部技术支持组
         联系方式商户服务电话0571-88158090

    ─────────────────────────────────

───────
 代码文件结构
───────

php-UTF-8
  │
  ├lib┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹
  │  │
  │  ├alipay_core.function.php ┈┈┈┈┈┈支付宝接口公用函数文件
  │  │
  │  ├alipay_notify.class.php┈┈┈┈┈┈┈支付宝通知处理类文件
  │  │
  │  └alipay_rsa.function.php┈┈┈┈┈┈┈支付宝接口RSA函数文件
  │
  ├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件
  │
  ├alipay.config.php┈┈┈┈┈┈┈┈┈┈┈┈基础配置类文件
  │
  ├notify_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈服务器异步通知页面文件
  │
  ├key┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈私钥公钥文件夹用法见下方※注意※
  │  │
  │  ├rsa_private_key.pem┈┈┈┈┈┈┈┈┈商户的私钥文件
  │  │
  │  └alipay_public_key.pem┈┈┈┈┈┈┈┈支付宝的公钥文件
  │
  ├openssl┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈缺省dll文件用法见下方※注意※
  │  │
  │  ├libeay32.dll
  │  │
  │  ├ssleay32.dll
  │  │
  │  └php_openssl.dll
  │
  ├cacert.pem ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈用于CURL中校验SSL的CA证书文件
  │
  └readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈使用说明文本

※注意※

1、必须开启curl服务
1使用Crul需要修改服务器中php.ini文件的设置找到php_curl.dll去掉前面的";"即可
2文件夹中cacert.pem文件请务必放置到商户网站平台中服务器上并且保证其路径有效提供的代码demo中的默认路径是当前文件夹下——getcwd().'\\cacert.pem'

2、需要配置的文件是
alipay.config.php
alipayapi.php
key文件夹


3、秘钥解答
●商户的私钥、商户的公钥、支付宝公钥

key文件夹里面须存放.pem后缀名的商户私钥、支付宝的公钥两个文件。

◆商户的私钥
1、必须保证只有一行文字没有回车、换行、空格等
2、不需要对刚生成的原始的私钥做pkcs8编码
3、不需要去掉去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”
简言之,只要维持刚生成出来的私钥的内容即可。

◆商户的公钥
1、必须保证只有一行文字没有回车、换行、空格等
2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存这两条文字之中的部分
3、保存好后命名须“合作者身份ID.dat”的命名方式2088101568342279.dat
4、重命名后交给支付宝

◆支付宝公钥
1、必须保证只有一行文字没有回车、换行、空格等
2、须保留“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”这两条文字。
简言之,支付宝公钥只需要维持原样即可。


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

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

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


●本代码示例DEMO采用fsockopen()的方法远程HTTP获取数据、采用DOMDocument()的方法解析XML数据。

请根据商户网站自身情况来决定是否使用代码示例中的方式——
如果不使用fsockopen那么建议用curl来代替
如果环境不是PHP5版本或其以上那么请用其他方法代替DOMDocument()。

curl、XML解析方法需您自行编写代码。


─────────
 类文件函数结构
─────────

alipay_core.function.php

function createLinkstring($para)
功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
输入Array  $para 需要拼接的数组
输出String 拼接完成以后的字符串

function createLinkstringUrlencode($para)
功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串并对参数值urlencode
输入Array  $para 需要拼接的数组
输出String 拼接完成以后的字符串

function paraFilter($para)
功能:除去数组中的空值和签名参数
输入Array  $para 签名参数组
输出Array  去掉空值与签名参数后的新签名参数组

function argSort($para)
功能:对数组排序
输入Array  $para 排序前的数组
输出Array  排序后的数组

function logResult($word='')
功能:写日志,方便测试(看网站需求,也可以改成存入数据库)
输入String $word 要写入日志里的文本内容 默认值:空值

function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '')
功能远程获取数据POST模式
输入String $url 指定URL完整路径地址
      String $cacert_url 指定当前工作目录绝对路径
      Array  $para 请求的数据
      String $input_charset 编码格式。默认值:空值
输出String 远程输出的数据

function getHttpResponseGET($url, $cacert_url)
功能远程获取数据GET模式
输入String $url 指定URL完整路径地址
      String $cacert_url 指定当前工作目录绝对路径
输出String 远程输出的数据

function charsetEncode($input,$_output_charset ,$_input_charset)
功能:实现多种字符编码方式
输入String $input 需要编码的字符串
      String $_output_charset 输出的编码格式
      String $_input_charset 输入的编码格式
输出String 编码后的字符串

function charsetDecode($input,$_input_charset ,$_output_charset) 
功能:实现多种字符解码方式
输入String $input 需要解码的字符串
      String $_output_charset 输出的解码格式
      String $_input_charset 输入的解码格式
输出String 解码后的字符串

┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉

alipay_rsa.function.php

function sign($data, $private_key_path)
功能RSA签名
输入String $data 待签名数据
      String $private_key_path 商户私钥文件路径
输出String 签名结果

function verify($data, $ali_public_key_path, $sign)
功能RSA验签
输入String $data 待签名数据
      String $ali_public_key_path 支付宝的公钥文件路径
      String $sign 要校对的的签名结果
输出bool 验证结果

function decrypt($content, $private_key_path)
功能RSA解密
输入String $content 需要解密的内容,密文
      String $private_key_path 商户私钥文件路径
输出String 解密后内容,明文

┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉


alipay_notify.class.php

function verifyNotify()
功能对notify_url的认证
输出Bool  验证结果true/false

function verifyReturn()
功能对return_url的认证
输出Bool  验证结果true/false

function getSignVeryfy($para_temp, $sign)
功能:获取返回时的签名验证结果
输入Array $para_temp 通知返回来的参数数组
      String $sign 支付宝返回的签名结果
输出Bool 获得签名验证结果

function getResponse($notify_id)
功能获取远程服务器ATN结果,验证返回URL
输入String $notify_id 通知校验ID
输出String 服务器ATN结果

┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉