摘要:微信支付的接入,如果不使用成熟的开发包,将是巨大的工作量。回调处理请见下文教程分钟实现小程序微信支付接入下回调发货逻辑已知异常如果你不添加,可能会报容器找不到这个应用的报错。
微信支付的接入,如果不使用成熟的开发包,将是巨大的工作量。
依赖 EasyWechat先在 laravel 项目中依赖 easywechat 这个包
</>复制代码
composer require "overtrue/laravel-wechat":"^4.0"
配置
在 .env 中添加微信支付的 key 配置
</>复制代码
WECHAT_PAYMENT_SANDBOX=false
WECHAT_PAYMENT_APPID=wx64c***
WECHAT_PAYMENT_MCH_ID=150***
WECHAT_PAYMENT_KEY=ZZDDD***
WECHAT_PAYMENT_CERT_PATH=/home/secret/apiclient_cert.pem
WECHAT_PAYMENT_KEY_PATH=/home/secret/apiclient_key.pem
WECHAT_PAYMENT_NOTIFY_URL=https://www.mysite.com/gateway/wxpay/callback
如果你需要额外的配置,可以运行 php artisan vendor:publish --provider="OvertrueLaravelWeChatServiceProvider" ,然后在 config/wechat.php 中可以看到 easywecaht 可以支持的全部配置。
编写接口逻辑新建一个 App/Repositories/PayRepository.php
</>复制代码
wxpay = app("easywechat.payment");
$unify = $this->wxpay->order->unify([
"body" => $this->transfer->name . " " . $this->tickets->count() . "张票",
"out_trade_no" => "订单号",
"total_fee" => bcmul("价格:单位元", 100),
"trade_type" => "JSAPI",
"openid" => $user->openid, // 用户的openid
]);
if ($unify["return_code"] === "SUCCESS" && !isset($unify["err_code"])) {
$pay = [
"appId" => config("wechat.payment.default.app_id"),
"timeStamp" => (string) time(),
"nonceStr" => $unify["nonce_str"],
"package" => "prepay_id=" . $unify["prepay_id"],
"signType" => "MD5",
];
$pay["paySign"] = generate_sign($pay, config("wechat.payment.default.key"));
return $pay;
} else {
$unify["return_code"] = "FAIL";
return $unify;
}
}
}
新建一个 App/Http/Controllers/PayController.php
</>复制代码
pay_repository = $pay_repository;
}
/**
* 微信支付
*
* @return Response
*/
public function pay()
{
$user = auth()->user();
$pay = $this->pay_repository->pay($user);
return Response::success(["pay" => $pay]);
}
}
绑定路由 routes/api.php
</>复制代码
name("pay");
编写JS逻辑
在页面 JS 里面编辑支付逻辑
</>复制代码
onPay: function (e) {
wx.request({
url: "/api/buy/pay",
method: "POST",
success: (res) => {
if (res.data.pay.result_code != "SUCCESS") {
return wx.showModal({
content: res.data.pay.return_msg + res.data.pay.err_code_des,
showCancel: false
});
}
res.data.pay.success = (res) => {
wx.showModal({
content: "您已成功支付",
showCancel: false
});
};
res.data.pay.fail = (res) => {
if (res.errMsg == "requestPayment:fail cancel") {
return wx.showToast({
icon: "none",
title: "用户取消支付",
});
}
};
wx.requestPayment(res.data.pay);
}
});
},
在页面按钮上调用
效果 支付成功回调</>复制代码
关于回调处理请期待下一篇文章。~
回调处理请见下文:Laravel教程: 3分钟实现小程序微信支付接入(下)——回调发货逻辑
如果你不添加.env,可能会报容器找不到这个应用的报错。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29337.html
摘要:接上文教程分钟实现小程序微信支付接入上唤起支付编码绑定回调路由注意前一篇文章的添加与此处路由的要保持一致。 接上文: Laravel教程: 3分钟实现小程序微信支付接入(上)——唤起支付 编码 绑定回调路由 routes/api.php Route::any(/gateway/wxpay/callback, PayController@callback)->name(pay.callb...
摘要:本文是浅析微信支付系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。浅析微信支付前篇大纲微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。目前微信支付支持手机系统有苹果安卓和。 本文是【浅析微信支付】系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下。 浅析微信支...
摘要:浅析微信支付前篇大纲本文是浅析微信支付系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。下面讲一下我是如何去学习微信支付的。 浅析微信支付:前篇大纲 本文是【浅析微信支付】系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。 以下会分几个步骤讲一下我学习微信支付的过程,也是一部辛酸史,也是希望朋友们不要再次跌进...
阅读 2101·2019-08-30 15:53
阅读 3095·2019-08-30 15:44
阅读 2954·2019-08-30 14:11
阅读 2948·2019-08-30 14:01
阅读 2739·2019-08-29 15:16
阅读 3834·2019-08-29 13:10
阅读 1283·2019-08-29 10:56
阅读 2560·2019-08-26 13:58