readme.txt 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. ╭───────────────────────╮
  2. ────┤ 支付宝代码示例结构说明 ├────
  3. ╰───────────────────────╯
  4.  
  5.   接口名称:支付宝手机网页支付接口
  6.     代码版本:3.3
  7. 开发语言:PHP
  8. 版 权:支付宝(中国)网络技术有限公司
  9.   制 作 者:支付宝商户事业部技术支持组
  10. 联系方式:商户服务电话0571-88158090
  11. ─────────────────────────────────
  12. ───────
  13. 代码文件结构
  14. ───────
  15. WS_WAP_PAYWAP-PHP-UTF-8
  16. ├lib┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹
  17. │ │
  18. │ ├alipay_core.function.php ┈┈┈┈┈┈支付宝接口公用函数文件
  19. │ │
  20. │ ├alipay_notify.class.php┈┈┈┈┈┈┈支付宝通知处理类文件
  21. │ │
  22. │ ├alipay_submit.class.php┈┈┈┈┈┈┈支付宝各接口请求提交类文件
  23. │ │
  24. │ └alipay_rsa.function.php┈┈┈┈┈┈┈支付宝接口RSA函数文件
  25. ├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件
  26. ├alipay.config.php┈┈┈┈┈┈┈┈┈┈┈┈基础配置类文件
  27. ├alipayapi.php┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口入口文件
  28. ├notify_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈服务器异步通知页面文件
  29. ├call_back_url.php┈┈┈┈┈┈┈┈┈┈┈┈页面跳转同步通知文件
  30. ├key┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈私钥公钥文件夹(用法见下方※注意※)
  31. │ │
  32. │ ├rsa_private_key.pem┈┈┈┈┈┈┈┈┈商户的私钥文件
  33. │ │
  34. │ └alipay_public_key.pem┈┈┈┈┈┈┈┈支付宝的公钥文件
  35. ├openssl┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈缺省dll文件(用法见下方※注意※)
  36. │ │
  37. │ ├libeay32.dll
  38. │ │
  39. │ ├ssleay32.dll
  40. │ │
  41. │ └php_openssl.dll
  42. ├cacert.pem ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈用于CURL中校验SSL的CA证书文件
  43. └readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈使用说明文本
  44. ※注意※
  45. 1、必须开启curl服务
  46. (1)使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"即可
  47. (2)文件夹中cacert.pem文件请务必放置到商户网站平台中(如:服务器上),并且保证其路径有效,提供的代码demo中的默认路径是当前文件夹下——getcwd().'\\cacert.pem'
  48. 2、需要配置的文件是:
  49. alipay.config.php
  50. alipayapi.php
  51. key文件夹
  52. 3、秘钥解答:
  53. ●商户的私钥、商户的公钥、支付宝公钥
  54. key文件夹里面须存放.pem后缀名的商户私钥、支付宝的公钥两个文件。
  55. ◆商户的私钥
  56. 1、必须保证只有一行文字,即,没有回车、换行、空格等
  57. 2、不需要对刚生成的(原始的)私钥做pkcs8编码
  58. 3、不需要去掉去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”
  59. 简言之,只要维持刚生成出来的私钥的内容即可。
  60. ◆商户的公钥
  61. 1、必须保证只有一行文字,即,没有回车、换行、空格等
  62. 2、去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”,只保存这两条文字之中的部分
  63. 3、保存好后,命名须“合作者身份ID.dat”的命名方式,如:2088101568342279.dat
  64. 4、重命名后,交给支付宝
  65. ◆支付宝公钥
  66. 1、必须保证只有一行文字,即,没有回车、换行、空格等
  67. 2、须保留“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”这两条文字。
  68. 简言之,支付宝公钥只需要维持原样即可。
  69. ●openssl文件夹中的3个DLL文件用法
  70. 1、如果你的系统是windows系统,且system32文件目录下没有libeay32.dll、ssleay32.dll这两个文件
  71. 那么需要拷贝这两个文件到system32文件目录中
  72. 2、如果您的php安装目录下(php\ext)中没有php_openssl.dll
  73. 那么请把php_openssl.dll放在这个文件夹中
  74. ●本代码示例(DEMO)采用fsockopen()的方法远程HTTP获取数据、采用DOMDocument()的方法解析XML数据。
  75. 请根据商户网站自身情况来决定是否使用代码示例中的方式——
  76. 如果不使用fsockopen,那么建议用curl来代替;
  77. 如果环境不是PHP5版本或其以上,那么请用其他方法代替DOMDocument()。
  78. curl、XML解析方法需您自行编写代码。
  79. ─────────
  80. 类文件函数结构
  81. ─────────
  82. alipay_core.function.php
  83. function createLinkstring($para)
  84. 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
  85. 输入:Array $para 需要拼接的数组
  86. 输出:String 拼接完成以后的字符串
  87. function createLinkstringUrlencode($para)
  88. 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值urlencode
  89. 输入:Array $para 需要拼接的数组
  90. 输出:String 拼接完成以后的字符串
  91. function paraFilter($para)
  92. 功能:除去数组中的空值和签名参数
  93. 输入:Array $para 签名参数组
  94. 输出:Array 去掉空值与签名参数后的新签名参数组
  95. function argSort($para)
  96. 功能:对数组排序
  97. 输入:Array $para 排序前的数组
  98. 输出:Array 排序后的数组
  99. function logResult($word='')
  100. 功能:写日志,方便测试(看网站需求,也可以改成存入数据库)
  101. 输入:String $word 要写入日志里的文本内容 默认值:空值
  102. function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '')
  103. 功能:远程获取数据,POST模式
  104. 输入:String $url 指定URL完整路径地址
  105. String $cacert_url 指定当前工作目录绝对路径
  106. Array $para 请求的数据
  107. String $input_charset 编码格式。默认值:空值
  108. 输出:String 远程输出的数据
  109. function getHttpResponseGET($url, $cacert_url)
  110. 功能:远程获取数据,GET模式
  111. 输入:String $url 指定URL完整路径地址
  112. String $cacert_url 指定当前工作目录绝对路径
  113. 输出:String 远程输出的数据
  114. function charsetEncode($input,$_output_charset ,$_input_charset)
  115. 功能:实现多种字符编码方式
  116. 输入:String $input 需要编码的字符串
  117. String $_output_charset 输出的编码格式
  118. String $_input_charset 输入的编码格式
  119. 输出:String 编码后的字符串
  120. function charsetDecode($input,$_input_charset ,$_output_charset)
  121. 功能:实现多种字符解码方式
  122. 输入:String $input 需要解码的字符串
  123. String $_output_charset 输出的解码格式
  124. String $_input_charset 输入的解码格式
  125. 输出:String 解码后的字符串
  126. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
  127. alipay_md5.function.php
  128. function md5Sign($prestr, $key)
  129. 功能:MD5签名
  130. 输入:String $prestr 待签名数据
  131. String $key 私钥
  132. 输出:String 签名结果
  133. function md5Verify($prestr, $sign, $key)
  134. 功能:MD5验签
  135. 输入:String $data 待签名数据
  136. String $sign 签名结果
  137. String $key 私钥
  138. 输出:bool 验证结果
  139. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
  140. alipay_rsa.function.php
  141. function sign($data, $private_key_path)
  142. 功能:RSA签名
  143. 输入:String $data 待签名数据
  144. String $private_key_path 商户私钥文件路径
  145. 输出:String 签名结果
  146. function verify($data, $ali_public_key_path, $sign)
  147. 功能:RSA验签
  148. 输入:String $data 待签名数据
  149. String $ali_public_key_path 支付宝的公钥文件路径
  150. String $sign 要校对的的签名结果
  151. 输出:bool 验证结果
  152. function decrypt($content, $private_key_path)
  153. 功能:RSA解密
  154. 输入:String $content 需要解密的内容,密文
  155. String $private_key_path 商户私钥文件路径
  156. 输出:String 解密后内容,明文
  157. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
  158. alipay_notify.class.php
  159. function verifyNotify()
  160. 功能:对notify_url的认证
  161. 输出:Bool 验证结果:true/false
  162. function verifyReturn()
  163. 功能:对return_url的认证
  164. 输出:Bool 验证结果:true/false
  165. function decrypt($prestr)
  166. 功能:解密
  167. 输入:String $prestr 要解密数据
  168. 输出:String 解密后结果
  169. function sortNotifyPara($para)
  170. 功能:异步通知时,对参数做固定排序
  171. 输入:String $para 排序前的参数组
  172. 输出:String 排序后的参数组
  173. function getSignVeryfy($para_temp, $sign, $isSort)
  174. 功能:获取返回时的签名验证结果
  175. 输入:Array $para_temp 通知返回来的参数数组
  176. String $sign 支付宝返回的签名结果
  177. Bool $isSort 是否排序
  178. 输出:Bool 获得签名验证结果
  179. function getResponse($notify_id)
  180. 功能:获取远程服务器ATN结果,验证返回URL
  181. 输入:String $notify_id 通知校验ID
  182. 输出:String 服务器ATN结果
  183. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
  184. alipay_submit.class.php
  185. function buildRequestMysign($para_sort)
  186. 功能:生成要请求给支付宝的参数数组
  187. 输入:Array $para_sort 已排序要签名的数组
  188. 输出:String 签名结果
  189. function buildRequestPara($para_temp)
  190. 功能:根据反馈回来的信息,生成签名结果
  191. 输入:Array $para_temp 请求前的参数数组
  192. 输出:String 要请求的参数数组
  193. function buildRequestParaToString($para_temp)
  194. 功能:根据反馈回来的信息,生成签名结果
  195. 输入:Array $para_temp 请求前的参数数组
  196. 输出:String 要请求的参数数组字符串
  197. function buildRequestForm($para_temp, $method, $button_name)
  198. 功能:建立请求,以表单HTML形式构造(默认)
  199. 输入:Array $para_temp 请求前的参数数组
  200. String $method 提交方式。两个值可选:post、get
  201. String $button_name 确认按钮显示文字
  202. 输出:String 提交表单HTML文本
  203. function buildRequestHttp($para_temp)
  204. 功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果
  205. 输入:Array $para_temp 请求前的参数数组
  206. 输出:String 支付宝处理结果
  207. function buildRequestHttpInFile($para_temp, $file_para_name, $file_name)
  208. 功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果,带文件上传功能
  209. 输入:Array $para_temp 请求参数数组
  210. String $file_para_name 文件类型的参数名
  211. String $file_name 文件完整绝对路径
  212. 输出:String 支付宝返回处理结果
  213. function parseResponse($str_text)
  214. 功能:解析远程模拟提交后返回的信息
  215. 输入:String $str_text 要解析的字符串
  216. 输出:Array 解析结果
  217. function query_timestamp()
  218. 功能:用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数
  219. 输出:String 时间戳字符串
  220. ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
  221. ──────────
  222. 出现问题,求助方法
  223. ──────────
  224. 如果在集成支付宝接口时,有疑问或出现问题,可使用下面的链接,提交申请。
  225. https://b.alipay.com/support/helperApply.htm?action=supportHome
  226. 我们会有专门的技术支持人员为您处理