前几天做APP开发,用到了支付宝接口,简单写一下我做的APP接入支付宝支付的过程,希望对做APP支付宝支付的童鞋有帮助,

不懂的可以先去支付平台看一下支付宝支付的文档,我是下的demo看的,这个是用tp5.0做的,先上图:

至于支付接口的接口包文件自己下吧,这个我就不提供地址链接了,这个支付接口我用的是异步回调,好像现在版本的支付宝同步回调只能用来跳转页面用了,哎,不说了,看代码吧。

做这个支付宝支付我总共用到了三个控制器:

1:支付宝支付控制器。

2:支付宝支付配置参数控制器。

3:支付宝回调地址控制器。

好了,首先创建个支付宝支付的控制器,是由上个页面选择好支付方式之后确认支付后需要经过的控制器(这里选择的是支付宝支付),代码 如下:

 1 <?php
 2 namespace app\mobile\controller;
 3 use app\mobile\model\Goods;
 4 use app\mobile\model\OrderGoods;
 5 use think\Controller;
 6
 7 class Pay extends Controller
 8 {
 9     public function pay_order()
10     {
11         $res = new OrderGoods();
12         //获取订单号
13         $where['id'] = input('post.order_sn');
14         $reoderSn = input('post.order_sn');
15         //查询订单信息
16         $order_info = $res->where($where)->find();
17         //获取支付方式
18         $pay_type = input('post.pay_type');//微信支付 或者支付宝支付
19         //获取支付金额
20         $money = input('post.totle_sum');
21         //判断支付方式
22         switch ($pay_type) {
23             case 'ali';//如果支付方式为支付宝支付
24
25                 //更新支付方式为支付宝
26                 $type['pay_type'] = 'ali';
27                 $res->where($where)->update($type);
28
29                 //实例化alipay类
30                 $ali = new Alipay();
31
32                 //异步回调地址
33                 $url = 'XXXXXXXXXXXXXXXXXX/Callback/aliPayBack';
34
35                 $array = $ali->alipay('商品名称', $money,$reoderSn,  $url);
36
37                 if ($array) {
38                     return $array;
39                 } else {
40                     echo json_encode(array('status' => 0, 'msg' => '对不起请检查相关参数!@'));
41                 }
42                 break;
43             case 'wx';
44
45                 break;
46         }
47     }
48 }

然后又创建了一个Alipay控制器,写支付宝配置参数,代码如下:

 1 class AliPay extends Controller
 2 {
 3
 4     protected $appId = '';//支付宝AppId
 5     protected $rsaPrivateKey = '';//支付宝私钥
 6     protected $aliPayRsaPublicKey = '';//支付宝公钥
 7     private $seller = '';
 8
 9     /*
10      * 支付宝支付
11      */
12     public function aliPay($body, $total_amount, $product_code, $notify_url)
13     {
14         /**
15          * 调用支付宝接口。
16          */
17         /*import('.Alipay.aop.AopClient', '', '.php');
18         import('.Alipay.aop.request.AlipayTradeAppPayRequest', '', '.php');*/
19         Loader::import('Alipay\aop\AopClient', EXTEND_PATH);
20         Loader::import('Alipay\aop\request\AlipayTradeAppPayRequest', EXTEND_PATH);
21
22         $aop = new \AopClient();
23
24         $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
25         $aop->appId = $this->appId;
26         $aop->rsaPrivateKey = $this->rsaPrivateKey;
27         $aop->format = "json";
28         $aop->charset = "UTF-8";
29         $aop->signType = "RSA2";
30         $aop->alipayrsaPublicKey = $this->aliPayRsaPublicKey;
31         $request = new \AlipayTradeAppPayRequest();
32         $arr['body'] = $body;
33         $arr['subject'] = $body;
34         $arr['out_trade_no'] = $product_code;
35         $arr['timeout_express'] = '30m';
36         $arr['total_amount'] = floatval($total_amount);
37         $arr['product_code'] = 'QUICK_MSECURITY_PAY';
38
39         $json = json_encode($arr);
40         $request->setNotifyUrl($notify_url);
41         $request->setBizContent($json);
42
43         $response = $aop->sdkExecute($request);
44         return $response;
45
46     }
47
48
49     function createLinkstring($para)
50     {
51         $arg = "";
52         while (list ($key, $val) = each($para)) {
53             $arg .= $key . "=" . $val . "&";
54         }
55         //去掉最后一个&字符
56         $arg = substr($arg, 0, count($arg) - 2);
57
58         //如果存在转义字符,那么去掉转义
59         if (get_magic_quotes_gpc()) {
60             $arg = stripslashes($arg);
61         }
62
63         return $arg;
64     }
65
66
67     function argSort($para)
68     {
69         ksort($para);
70         reset($para);
71         return $para;
72     }
73 }

Alipay支付demo我放在extend目录下了,用这种方法来实现支付宝支付的话,上面的那个支付宝配置参数控制器的内容除了支付宝Appid,支付宝公钥,私钥,收款人账号,其他的照搬下来就行了,现在已经写了两个控制器了,接下来还有一个异步回调地址。这个异步回调有点坑了,支付成功有时候就是不回调,先上代码吧

 1 <?php
 2 namespace app\mobile\controller;
 3 use app\mobile\model\OrderGoods;
 4 use app\mobile\model\IntegralRecord;
 5 use app\admin\model\SystemSettings;
 6 use app\mobile\model\Members;
 7 use think\Controller;
 8 use think\Request;
 9 use think\Db;
10
11 class Callback extends Controller
12 {
13     /*
14      * 支付宝支付回调修改订单状态
15      */
16     public function aliPayBack()
17     {
18
19         if ($_POST['trade_status'] == 'TRADE_SUCCESS') {//如果支付成功
20             //===============修改订单状态===========================//
21             $order = new OrderGoods();//实例化
22             $orderSn = $_POST['out_trade_no'];//获取订单号
23                 $where['order_sn'] = $orderSn;
24                 $data1['type'] = 2;
25             $order->where($where)->update($data1);//修改订单状态
26             echo 'success';
27             exit;
28         }
29     }
30 }

OK现在代码写完了。执行支付宝支付订单的时候先进入支付宝Pay控制器接收POST传递的三个参数,订单号,金额,支付方式。接收到之后写商品名称,商品描述,回调地址等 然后实例化Alipay类调用这个类里面的aliPay方法进行支付,调用结果返回一个签名,把这个签名反馈给app端进行支付,支付成功后执行异步回调,修改订单状态,当然还有一些细节操作就不说了,我是已经弄好了,回调这个地方是个坑,大家做的时候一定要仔细认真,耐心才行。现在流程已经走完了,希望能对做这个功能的童鞋有所帮助。

本文属原创内容,为了尊重他人劳动,转载请注明本文地址:

http://www.cnblogs.com/luokakale/p/7612365.html

转载于:https://www.cnblogs.com/luokakale/p/7612365.html

ThinkPHP5.0 实现 app支付宝支付功能相关推荐

  1. 如何在app应用中添加支付宝支付功能

    推广排名q.q①⑨⑨⑦〇⑦④⑥*如何在app应用中添加支付宝支付功能 作为一枚普通的商户,或者 App 的开发人员,如何在对支付完全不了解的情况下,让 App 成功接入支付功能呢? 1)App 想接入 ...

  2. App接入阿里支付宝支付,app如何开通接入支付宝支付功能,APP如何申请阿里支付宝支付

    注意时间,现在是 2021年8月12日 首先,需要注册一个支付宝企业身份的账号. 然后开始. 1.进入蚂蚁金服开放平台https://open.alipay.com/platform/home.htm ...

  3. AndroidSDK结合SpringBoot实现支付宝支付功能

    开发者注册: 1. 创建应用,获取AppID:开发者可在沙箱中完成. 沙箱应用网址:https://openhome.alipay.com/platform/appDaily.htm 2. 在支付宝助 ...

  4. Android App接入支付功能

    微信支付,请参考我另一篇:Android App接入支付功能--微信篇 因为项目中用到支付功能,而且支付宝文档和微信文档写的很简洁,不仔细研究,真的无法集成成功 老样子,上效果图由于涉及到输入密码,我 ...

  5. app支付宝支付java后台_支付宝app支付java后台流程demo

    支付宝app支付java后台流程demo 使用ssm框架实现支付宝支付功能. 支付宝测试环境代码测试 源代码 https://github.com/OUYANGSIHAI/sihai-maven-ss ...

  6. 支付宝支付功能的实现

    支付宝支付功能实现 一.环境准备 二.配置沙箱环境 1.浏览器搜索 支付宝开放平台 2.找到开发服务,选择沙箱 3.根据文档提示,一步步配置 4.配置完成后的样子 5.下载好支付宝手机开放平台助手,可 ...

  7. APP支付宝支付接入

    1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...

  8. UniApp + SpringBoot 实现接入支付宝支付功能和退款功能

    一.支付宝开放平台设置 注册支付宝支付功能需要个体工商户或企业才可以!需要有营业执照才能去申请哦! 1.登录到控制台 进入支付宝开放平台 控制台 2.开发设置 3.产品绑定APP支付 如果没有绑定AP ...

  9. 【APP支付】关于APP支付宝支付那些事

    昨天整理了关于APP微信支付的东西,今天在整理代码之后,来谈谈支付宝的APP支付. 两者有很大相似之处,也有区别,只要理解了一个,另一个就很好理解了,如果是第一次做服务端的支付的话,建议先看看上面那篇 ...

  10. Spring MVC+Spring+Mybatis实现支付宝支付功能(附完整代码)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://urlify.cn/aYrmIr 前言 本教 ...

最新文章

  1. 视频写操作,通道分离与合并
  2. 阶段-关口系统-stage2立项分析阶段---学习记录
  3. SVN错误:Attempted to lock an already-locked dir
  4. UITableView 系列三 :分类显示和改变外观 (实例)
  5. easypoi 列合并_SpringBoot整合EasyPOI实现Excel、Word的导入导出功能
  6. BGP Ethernet Virtual Private Network技术原理
  7. Duplicate File Finder pro如何查找删除相似照片
  8. 1450. Russian Pipelines(spfa)
  9. 22. jQuery 遍历 - 同胞
  10. 大势至服务器共享文件监控软件8.6,大势至服务器共享文件夹监控软件、局域网共享管理软件、局域网共享设置软件...
  11. 英雄联盟一直连接服务器win10,手把手修复win10系统英雄联盟连接不上服务器的解决方法...
  12. 华中师范大学计算机学院学分绩,华中师范大学全日制本科交换生学分转换、成绩认定管理办法...
  13. RFC请求注解(Request for Comments)介绍|internet最重要的文献资源
  14. 理财十问:1.你知道自己的风险偏好吗?
  15. 批量注册163邮箱的代码
  16. discuz数据字典
  17. 如何用word 2007在指定页插入页码和页眉页脚?
  18. php生成本地word文件怎么打开,php生成word文件的简单范例
  19. linux用fdisk创建分区,在Linux下用fdisk创建分区
  20. GAN Step By Step -- Step4 CGAN

热门文章

  1. html里面怎么引入swiper,JavaScript库——使用swiper.js创建嵌套的swiper
  2. matlab指定的数据范围无效,c – 如何检查迭代器指定的范围是否有效?
  3. java mysql存储图片_Java存储图片到Mysql
  4. 手机能识别sim卡但是没信号_一篇文章扫盲手机SIM卡相关知识
  5. Dubbo不向zookeeper/nacos注册
  6. c语言创建增加删除单向动态链表,C语言实现简单的单向链表(创建、插入、删除)及等效STL实现代码...
  7. anaconda 换源_Anaconda下安装tensorflow1.15过程记录
  8. java递推_【Java】递归递推的应用
  9. 【渝粤教育】国家开放大学2018年春季 8639-22T食品营养与健康 参考试题
  10. 【渝粤教育】广东开放大学 微信平台开发与应用 形成性考核 (54)