目录

前言

一、下载SDK

二、配置

三、实际操作

1.引入SDK

2.代码参考

四、回调

总结


前言

先整理一下调起微信支付的流程:

Adapay成功发起支付请求 -> 将请求成功中的 pay_info 返回给前端-> 前端使用 pay_info 调用微信

官网文档:

帮助开发者了解所有技术对接参数和请求_开发者_Adapay


一、下载SDK

找到你对应的语言下载SDK:这里我下载PHP

帮助开发者了解所有技术对接参数和请求_开发者_Adapay

创建支付对象:

帮助开发者了解所有技术对接参数和请求_开发者_Adapay

二、配置

完整文件:所有方法都在Adapay下(Demo文件中有参考示例)

我们要使用的重要文件:

Payment.php:

发起支付的方法

config.php:

配置文件,引入参数文件(根据你自己的参数文件调整路径)

config/config.php :

这个文件是存放【api_key_live、api_key_live、rsa_public_key、rsa_private_key 】这几个重要参数。需要自己新建或者或则直接从Demo中复制到Adapay中然后进行修改

# 将以下四个参数替换成你自己真实的
{"*************DO NOT CHANGE CONTENT*************": "","api_key_live": "api_live_真实参数","api_key_test": "api_test_真是参数","rsa_public_key": "公钥","*************DO NOT CHANGE CONTENT*************": "","rsa_private_key": "私钥"
}

三、实际操作

1.引入SDK

# 加载基础 adapay 基础类# SDK 初始化文件加载
include_once  dirname(__FILE__) . "../../../../vendor/adapay_sdk_php/adapay_sdk_php_v1.4.4/AdapaySdk/init.php";# 在文件中设置 DEBUG 为 true 时, 则可以打印日志到指定的日志目录下 LOG_DIR
include_once  dirname(__FILE__) . "../../../../vendor/adapay_sdk_php/adapay_sdk_php_v1.4.4/AdapaySdk/config.php";

定义app_id:

2.代码参考

    public function launch_pay(){# 初始化支付类$payment = new \AdaPaySdk\Payment();# 自定义的订单号:这里我用time举例,你可以根据你的需要变更$order_no = date("YmdHis") . rand(100000, 999999);# 付款金额保留两位数(这里需要注意就算是正数也需要保留两位小数)$pay_amt = number_format("付款金额", 2);# 付款人微信 open_id$open_id = "这里要先通过微信获取 《付款人》 的openid";# 发起之前建议在这里单独存储一下订单信息(如:订单号、金额、付款人openid、以及其他你需要的信息,方便后面使用)# 支付设置$payment_params = array(# 引用枚举定义的app_id"app_id"      => test::app_id,# 订单号"order_no"    => $order_no,# 支付渠道(官网文档有说明,根据实际来选择(这里我测试用公众号))                                                        "pay_channel" => "wx_pub",# 商品_付款总金额                                                        "pay_amt"     => $pay_amt,# 商品_标题                                                        "goods_title" => "测试商品",# 商品_描述                                                   "goods_desc"  => "body",# 通知回调地址"notify_url"  => "http://域名(或ip)/这里放你接收回调的方法路径",# (微信)付款人open_id  "expend"      => ["open_id" => $open_id                                                          ]);# 发起支付$payment->create($payment_params);# 对支付结果进行处理(可以在这一步将成功失败信息存储起来)if ($payment->isError()) {# 失败处理$aData = ["app_id"      => $payment->result["app_id"],"error_code"  => $payment->result["error_code"],"error_msg"   => $payment->result["error_msg"],"error_type"  => $payment->result["error_type"],"order_no"    => $payment->result["order_no"],"pay_amt"     => $payment->result["pay_amt"],"pay_channel" => $payment->result["pay_channel"],"status"      => $payment->result["status"],];Db::table("日志表名")->insert($aData);return $payment->result;} else {$aData = ["request_id"   => $payment->result["id"],"created_time" => $payment->result["created_time"],"order_no"     => $payment->result["order_no"],"prod_mode"    => $payment->result["prod_mode"],"app_id"       => $payment->result["app_id"],"pay_channel"  => $payment->result["pay_channel"],"pay_amt"      => $payment->result["pay_amt"],"query_url"    => $payment->result["query_url"],"status"       => $payment->result["status"],"expend"       => $payment->result["expend"]["pay_info"],];# 成功处理_返回pay_info信息给前端Db::table("日志表名")->insert($aData);# 这里很重要!! 需要将 pay_info 返回给前端取调起微信支付return $payment->result["expend"]["pay_info"];}}

四、回调

        # 回调接收(接收回调要用post方式)$post_data      = json_decode($_POST["data"], 1);switch ($post_data["status"]) {case "succeeded":# 回调成功# 这里建议在发起支付之前存储一下订单信息(在回调成功之后使用订单号作为查询条件)$exist = Db::table("支付成功表")->where("order_no", $post_data["order_no"])->find();# 如果已经存储过就不再存储了(因为Adapay的回调基本上会发送四次过来,为了避免重复的存储所以在这里规避一下)if (!empty($exist) || $exist !== false || $exist != null) {break;}$aData = [# 官方返回数据id "request_id"   => $post_data["id"],# 时间"created_time" => $post_data["created_time"],# 订单号"order_no"     => $post_data["order_no"],# app_id"app_id"       => $post_data["app_id"],# 支付渠道"pay_channel"  => $post_data["pay_channel"],# 付款金额"pay_amt"      => $post_data["pay_amt"],# 手续费"fee_amt"      => $post_data["fee_amt"],# 状态"status"       => $post_data["status"],# openid"sub_open_id"  => $post_data["expend"]["sub_open_id"]];Db::table("成功表")->insert($aData);unset($aData);break;default:# 回调失败return \json_data(0, "回调错误", $post_data);}# 其他业务

总结

支付到这里就结束了,代码中有些自身数据要根据你的实际情况来修正哦!

下一篇准备分享一下使用Adapay实现商家分账的功能,看大家有没有需求

PHP 实现汇聚adapay调用微信支付相关推荐

  1. 微信公众号页面支付接口java,[Java教程]微信公众号支付(三):页面调用微信支付JS并完成支付...

    [Java教程]微信公众号支付(三):页面调用微信支付JS并完成支付 0 2015-09-15 15:00:30 一.调用微信的JS文件 1.首先要绑定[JS接口安全域名],"公众号设置&q ...

  2. 调用微信支付接口总结

        项目里面用到了微信支付的功能,照着文档学习了一下,这里做个总结来记录.项目用到的是anglusJS来做前端开发,我这边简化了,用的ajax进行异步的调用,然后业务也直接写在了控制层(不过不应该 ...

  3. H5页面调用微信支付

    1.H5页面使用微信支付,首先需要注册微信公众号,在设置与开发>公众号设置>功能设置中配置业务域名.JS接口安全域名.网页授权域名.支付功能页面需在此域名链接下的页面. 2.加入域名后,就 ...

  4. php 调用微信支付的时间戳,前端调用微信支付接口

    支付按钮的点击事件$(´.Save_Patient_Msg´).click(function(){ $(´.Save_Patient_Msg´).off(´click´); var hrdfId = ...

  5. ios调用微信支付提示当前页面的URL未注册

      ios调用JSAPI微信支付提示"当前页面的URL未注册",而页面手动刷新后再次支付则正常,安卓也正常,肯定不是授权目录配置问题.   在微信支付页面,当通过JSAPI微信支付 ...

  6. 关于IOS调用微信支付jsapi不起作用的解决方法

    关于IOS调用微信支付jsapi不起作用的解决方法 参考文章: (1)关于IOS调用微信支付jsapi不起作用的解决方法 (2)https://www.cnblogs.com/randy619/p/5 ...

  7. 移动端页面调用微信支付

    1.话不对说,先来个小漩涡 2.步骤: (1)第一个接口 创建订单号,并且后端携带电子签名 (2)第二个接口 通过后端返回信息,调用微信支付接口callpay方法 3,上代码 //创建订单,做了一些接 ...

  8. 小程序开发调用微信支付以及微信回调地址配置

    首先观看微信提供的文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1 清楚调用微信支付必 ...

  9. android kotlin webview内H5调用微信支付问题

    问题 商家参数格式有误,请联系商家解决 微信文档描述 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4 解决方法 文档说明白了,要在 ...

最新文章

  1. 新进展!英伟达用 AI 给纪录片配音,情绪语调拿捏得稳稳地
  2. 顾险峰: 庞加莱猜测的证明和应用
  3. SAP R3 FI 上线 顾问设置教程(一)
  4. 金融领域下的数据挖掘算法应用:智能推荐算法模型
  5. 使用CEfSharp 下载文件 弹出保存框 IDownloadHandler
  6. CommonJS概述及使用
  7. JavaScript通过 new FileReader() 获取图片base64 无组件上传图片
  8. 一步步编写操作系统 61 任务状态段 TSS
  9. 第四版源码技术导航网自适应
  10. OpenCV之图像的运算(笔记05)
  11. 收集一些常用的CDN链接!无需下载快速使用!
  12. mate30pro鸿蒙系统刷机包下载,华为 Mate 30 Pro 的鸿蒙 2.0 Beta 版刷机包流出(附下载地址)...
  13. java autorun_玩转Autorun.inf
  14. 修改蒙特卡洛树搜索让人工智能像人类一样玩视频游戏
  15. 车性能测试软件是什么,3DMark制造商推首款汽车性能测试软件
  16. 视觉工程师出差过多必会出现的问题
  17. filecoin benchmarks v25 GeForce GTX 1080 Ti
  18. DCMM认证评估机构,你都知道吗?
  19. ubuntu不支持安装搜狗_ubuntu搜狗输入法安装失败,导致无法进入桌面
  20. 机器学习面试1000题 1 - 255

热门文章

  1. 4G无线模块 电力通信模块
  2. 公司金融01.现值与贴现
  3. SL651-2014 《水文监测数据通信规约》 中心站查询遥测站实时数据详解
  4. 怎样训练左右手协调_学钢琴左右手不协调怎么办?几个小技巧拿走不谢
  5. Android 学习之那些年我们遇到的BUG1:This view is not constrained, it only has designtime positions
  6. 解决for循环有时只输出最后一个结果
  7. 中职计算机应用专业课堂教学,谈谈中职计算机应用基础课程教学中翻转课堂研究...
  8. Biopython操作DNA,RNA和蛋白质序列
  9. java熔断技术_Hystrix熔断器技术解析-HystrixCircuitBreaker
  10. python格式化字符串 时间戳 转 UTC(2023-01-11T16:00:00Z)格式时间