Maison > développement back-end > tutoriel php > Comment accéder à la fonction de paiement instantané d'Alipay avec PHP

Comment accéder à la fonction de paiement instantané d'Alipay avec PHP

墨辰丷
Libérer: 2023-03-28 22:38:01
original
1975 Les gens l'ont consulté

这篇文章主要介绍了PHP 接入支付宝即时到账功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下

首先请到支付宝那边申请一个及时到账的接口账户,需要提交相关材料申请。然后根据即时到账的API文档进行接入。API文档提供了各种语言版本的demo,我这里是下的php版demo,然后再进行相关修改操作。你也可以将demo版本的代码重新整合,我这里暂时为了走通充值及时到账流程,就不进行代码重构了。

API文档:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7386797.0.0.eZb8FX&treeId=108&articleId=103950&docType=1

前台表单提交

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

<form action="/pay/alipayapi.php" class="tm-panel-small uk-form uk-form-stacked" method="post" target="_blank">                            

  <p class="element" style="margin-top:60px;">                                                             

  </p>                                                                                 

  <p class="uk-form-row">                                                                       

  <p class="uk-form-controls">                                                                     

      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">订单序号:</label>   

      <input class="uk-form-width-large" type="text" name="WIDout_trade_no" id="out_trade_no" value="<?php echo trim($_GET[&#39;orderid&#39;]);?>" >            

      <br>                                                                              

  </p>                                                                                 

  </p>                                                                                 

  <p class="uk-form-row">                                                                       

  <p class="uk-form-controls">                                                                     

      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">商品名称:</label>   

      <input class="uk-form-width-large" type="text" name="WIDsubject" value="<?php echo trim($_GET[&#39;orderid&#39;]);?>" >                        

      <br>                                                                              

  </p>                                                                                 

  </p>                                                                                 

  <p class="uk-form-row">                                                                       

  <p class="uk-form-controls">                                                                     

      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">付款金额:</label>   

      <input class="uk-form-width-large" type="text" name="WIDtotal_fee" value="<?php echo trim($_GET[&#39;amt&#39;]);?>">                          

      <br>                                                                              

  </p>                                                                                 

  </p>                                                                                 

  <p class="uk-form-row">                                                                       

  <p class="uk-form-controls">                                                                     

      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">商品描述:</label>   

      <input class="uk-form-width-large" type="text" name="WIDbody" value="订单测试支付">                                      

      <br>                                                                              

  </p>                                                                                 

  </p>                                                                                 

 <input type="hidden" name="uid" value="<?php echo $_GET[&#39;uid&#39;];?>">                                                   

 <input type="hidden" name="codes" value="<?php echo $_GET[&#39;code&#39;];?>">                                                 

 <input type="hidden" name="tags" value="<?php echo $_GET[&#39;tag&#39;] ?>">                                                  

  <p class="uk-form-row">                                                                       

   <input class="uk-button uk-button-primary uk-button-large uk-width-1-1" type="submit" class="alisubmit" value ="确认支付">                   

  </p>                                                                                 

 </p>                                                                                 

 </form>

Copier après la connexion

设置alipay.config.php配置文件,主要配置一下几个参数

$alipay_config['partner'] 设置签约账号ID
$alipay_config['key'] 设置MD5校验key
$alipay_config['notify_url'] 设置异步回调地址
$alipay_config['return_url'] 设置回调返回地址
$alipay_config['transport'] 设置协议类型,默认为http

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

$alipay_config[&#39;partner&#39;]        = &#39;xxxxxxxxxxxx&#39;;                                 

//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号                   

$alipay_config[&#39;seller_id&#39;]   = $alipay_config[&#39;partner&#39;];                               

// MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm         

$alipay_config[&#39;key&#39;]          = &#39;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#39;;                       

// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问           

$alipay_config[&#39;notify_url&#39;] = "http://xx.xx.xx.xx/pay/notify_url.php";                          

// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问          

$alipay_config[&#39;return_url&#39;] = "http://xx.xx.xx.xx/pay/return_url.php";                          

//签名方式                                                        

$alipay_config[&#39;sign_type&#39;]  = strtoupper(&#39;MD5&#39;);                                    

//字符编码格式 目前支持 gbk 或 utf-8                                           

$alipay_config[&#39;input_charset&#39;]= strtolower(&#39;utf-8&#39;);                                   

//ca证书路径地址,用于curl中ssl校验                                            

//请保证cacert.pem文件在当前文件夹目录中                                         

$alipay_config[&#39;cacert&#39;]  = getcwd().&#39;\\cacert.pem&#39;;                                  

//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http                     

$alipay_config[&#39;transport&#39;]  = &#39;http&#39;;                                         

// 支付类型 ,无需修改                                                  

$alipay_config[&#39;payment_type&#39;] = "1";                                           

// 产品类型,无需修改                                                   

$alipay_config[&#39;service&#39;] = "create_direct_pay_by_user";

Copier après la connexion

交易处理完成后会发送订单信息及交易状态到你指定好的回传return_url.php中,你可以通过回传给你的订单状态判断交易是否成功,成功则进入下一步逻辑(你自己的订单处理逻辑),否则返回失败。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

<?php

/* *

 * 功能:支付宝页面跳转同步通知页面

 * 版本:3.3

 * 日期:2012-07-23

 * 说明:

 * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。

 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

 *************************页面功能说明*************************

 * 该页面可在本机电脑测试

 * 可放入HTML等美化页面的代码、商户业务逻辑程序代码

 * 该页面可以使用PHP开发工具调试,也可以使用写文本函数logResult,该函数已被默认关闭,见alipay_notify_class.php中的函数verifyReturn

 require_once("alipay.config.php");

 require_once("lib/alipay_notify.class.php");

 ?>

 <!DOCTYPE HTML>

 <html>

   <head>

     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

 <?php

 //计算得出通知验证结果

 $alipayNotify = new AlipayNotify($alipay_config);

 $verify_result = $alipayNotify->verifyReturn();

 if($verify_result) {//验证成功

     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

     //请在这里加上商户的业务逻辑程序代码

     //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——

   //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

     //商户订单号^M

     $out_trade_no = $_GET[&#39;out_trade_no&#39;];

     //支付宝交易号^M

     $trade_no = $_GET[&#39;trade_no&#39;];

     //交易状态

     $trade_status = $_GET[&#39;trade_status&#39;];

     $total_fee = $_GET[&#39;total_fee&#39;];

     //获取用户返回数据

     $user_info = $_GET[&#39;extra_common_param&#39;];

     $user_arr = explode(&#39;.&#39;,$user_info);

     $uid = $user_arr[0];

     $code = $user_arr[1];

     $tags = $user_arr[2];

   if($_GET[&#39;trade_status&#39;] == &#39;TRADE_FINISHED&#39; || $_GET[&#39;trade_status&#39;] == &#39;TRADE_SUCCESS&#39;) {

         $types = "alipay";

         $user_url = "/user_obj/do_orderinfo.php";

         die("<script>;window.location=&#39;{$user_url}?uid={$uid}&code={$code}&tags={$tags}&payAmount={$total_fee}&order={$out_trade_no}&types={$types}&#39;;</script>");

         //判断该笔订单是否在商户网站中已经做过处理

         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序

         //如果有做过处理,不执行商户的业务程序

   }

   else {

    echo "trade_status=".$_GET[&#39;trade_status&#39;];

   }

 var_dump($verify_result);

     echo "验证成功<br />";

     //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 }

 else {

   //验证失败

   //如要调试,请看alipay_notify.php页面的verifyReturn函数

   echo "验证失败";

 }

 ?>

     <title>支付宝即时到账交易接口</title>

     </head>

   <body>

   </body>

 </html>

Copier après la connexion

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

PHP仿微信发红包领红包效果

php将服务端的文件读出来显示在web页面实例

利用php实现一周之内自动登录存储机制

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal