zoukankan      html  css  js  c++  java
  • ASP.NET实现支付宝接口功能

    最近做系统,需要实现在线支付功能,毫不犹豫,选择的是支付宝的接口支付功能。这里我用的是即时到帐的接口,具体实现的步骤如下:
    一、下载支付宝接口包
    下载地址:
    https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabId=4#ps-tabinfo-hash
    具体如何下载,我就不在罗嗦了~~
    很多人反映,用支付宝的接口到最后面会出现验证错误。其实,这里需要对接口程序进行一下改造。需要添加几个自定义函数。为了让大家以后避免出现同样的问题,我把我改造好的支付宝接口程序上传了( --> 猛戳这里下载附件 )。大家可以下载下来,解压后放到框架的Vendor目录中即可~
    二、重新整理接口包文件,这一步应该算是比较关键的(个人认为)
    下载下来的接口包文件有很多语言的源码,

    我们选择 create_direct_pay_by_user-PHP-UTF-8 这个名称的接口文件。里面包括如下文件:

    images文件里是支付宝相关的一些标志的图片,我们暂不管他,lib文件很重要,是整个接口的核心类文件;
    alipay.config.php是相关参数的配置文件
    alipayapi.php  是支付宝接口入口文件
    notify_url.php 是服务器异步通知页面文件;
    return_url.php 是页面跳转同步通知文件;
    在ThinkPHP的框架文件下,找到Extend 进入,再进入Vendor,在Vendor文件夹下,新建文件夹Alipay,把支付宝作为第三方类库引入。然后,复制支付宝接口文件包中lib文件里的所有文件。一共4个文件,如下:

    现在对以上文件进行重命名,
    alipay_core.function.php重命名为:Corefunction.php;
    alipay_md5.function.php重命名为:Md5function.php;
    alipay_notify.class.php重命名为:Notify.php;
    alipay_submit.class.php重命名为:Submit.php;
    然后,打开Submit.php文件,把以下代码去掉;

    1 require_once("alipay_core.function.php");
    2 require_once("alipay_md5.function.php");

    同样,打开Notify.php文件,把以下两段代码去掉

    1 require_once("alipay_core.function.php");
    2 require_once("alipay_md5.function.php");

    为什么要去掉以上两个文件中的这两段代码,因为在项目中调用接口文件的时候,我把所有4个核心文件都通过vendor来进行引入。所以,这不再需要导入。
    到此,支付宝接口包相关核心类库的整理基本完成。现在开始在项目中调用;
    三、在项目中调用支付宝接口
    调用分两步:
    1、在配置文件中Conf/Config.php文件中对支付宝相关参数进行配置:

    //支付宝配置参数
    'alipay_config'=>array(
            'partner' =>'20********50',   //这里是你在成功申请支付宝接口后获取到的PID;
         'key'=>'9t***********ie',//这里是你在成功申请支付宝接口后获取到的Key
         'sign_type'=>strtoupper('MD5'),
         'input_charset'=> strtolower('utf-8'),
         'cacert'=> getcwd().'\cacert.pem',
         'transport'=> 'http',
           ),
          //以上配置项,是从接口包中alipay.config.php 文件中复制过来,进行配置;
         
    'alipay'   =>array(
      //这里是卖家的支付宝账号,也就是你申请接口时注册的支付宝账号
    'seller_email'=>'pay@xxx.com',
    
    //这里是异步通知页面url,提交到项目的Pay控制器的notifyurl方法;
    'notify_url'=>'http://www.xxx.com/Pay/notifyurl', 
    
    //这里是页面跳转通知url,提交到项目的Pay控制器的returnurl方法;
    'return_url'=>'http://www.xxx.com/Pay/returnurl',
    
    //支付成功跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参payed(已支付列表)
    'successpage'=>'User/myorder?ordtype=payed',   
    
    //支付失败跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参unpay(未支付列表)
    'errorpage'=>'User/myorder?ordtype=unpay', 
    ),

    参考网址
    http://www.thinkphp.cn/code/240.html

  • 相关阅读:
    Linux之nginx服务
    设计模式-总结
    linux rabbitmq 远程登录
    swagger常用注解
    nginx总结
    mysql-sql
    dubbo-文档
    JVM总结-Java语法糖与Java编译器
    JVM总结-synchronized
    JVM总结-java内存模型
  • 原文地址:https://www.cnblogs.com/wanzhongjun/p/6876344.html
Copyright © 2011-2022 走看看