目录 前言 一、下载SDK 二、配置 三、实际操作 1.引入SDK 2.代码参考 四、回调 总结 前言 先整理一下调起微信支付的流程: Adapay成功发起支付请求 -> 将请求成功中的 pay_info 返回给前端-> 前端使用 pay
目录
先整理一下调起微信支付的流程:
Adapay成功发起支付请求 -> 将请求成功中的 pay_info 返回给前端-> 前端使用 pay_info 调用微信
官网文档:
找到你对应的语言下载SDK:这里我下载PHP
创建支付对象:
完整文件:所有方法都在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": "私钥"}
# 加载基础 adapay 基础类# SDK 初始化文件加载include_once dirname(__FILE__) . "../../../../vendor/adapay_sdk_php/adapay_sdk_php_v1.4.4/AdapaySdk/init.php";# 在文件中设置 DEBUG 为 true 时, 则可以打印日志到指定的日志目录下 LOG_DIRinclude_once dirname(__FILE__) . "../../../../vendor/adapay_sdk_php/adapay_sdk_php_v1.4.4/AdapaySdk/config.php";
定义app_id:
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实现商家分账的功能,看大家有没有需求
来源地址:https://blog.csdn.net/arlene12345/article/details/127665894
--结束END--
本文标题: PHP 实现汇聚adapay调用微信支付
本文链接: https://lsjlt.com/news/393370.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0