1. 公众号 登录

2. 微信支付
DLC
鹿和sa0ChunLuyu 2 years ago
parent b2985d56c5
commit c844d9fed3

@ -11,6 +11,7 @@ use WeChatPay\Crypto\Rsa;
use WeChatPay\Formatter;
use WeChatPay\Util\PemUtil;
use Yo;
use Lu;
class WeChatPayController extends Controller
{
@ -215,4 +216,31 @@ class WeChatPayController extends Controller
'info' => $info
]);
}
public function callback_test($app_id)
{
$input = file_get_contents('php://input');
$headers = request()->header();
$we_chat_pay = WeChatPay::where('app_id', $app_id)->first();
if (!$we_chat_pay) return false;
$res = $this->callback($input, $headers, $we_chat_pay->v3, 'file://' . base_path($we_chat_pay->crt));
if (!!$res) {
if ($res['trade_state'] == 'SUCCESS') {
$we_chat_pay_log = WeChatPayLog::where('out_trade_no', $res['out_trade_no'])->first();
if (!!$we_chat_pay_log) {
$we_chat_pay_log->callback = json_encode([
'type' => 'callback',
'input' => $input,
'headers' => $headers,
'res' => $res,
], JSON_UNESCAPED_UNICODE);
$we_chat_pay_log->save();
}
}
}
return Lu::exit([
'code' => 'SUCCESS',
'message' => '成功',
]);
}
}

@ -19,6 +19,7 @@ Route::get("open/Gzh/auth", [\App\Http\Controllers\WeChatController::class, 'aut
Route::get("api/Test/Excel/excel_test", [\App\Http\Controllers\ExcelController::class, 'excel_test']);
Route::post("api/Test/Email/email_test", [\App\Http\Controllers\EmailController::class, 'email_test']);
Route::post("api/Test/WeChatPay/callback_test/{app_id}", [\App\Http\Controllers\WeChatPayController::class, 'callback_test']);
Route::post("api/Test/WeChatPay/pay_test", [\App\Http\Controllers\WeChatPayController::class, 'pay_test']);
Route::post("api/Test/WeChat/login_test", [\App\Http\Controllers\WeChatController::class, 'login_test']);

@ -3,6 +3,7 @@ import {
} from '@/lu/axios.js'
import $config from '@/config.js'
const app_path = 'App'
export const OpenGzhAuthUrl = `${$config.url}/open/Gzh/auth`
export const WeChatPayPayTestAction = async (data) => await $post({
url: `${$config.url}/api/Test/WeChatPay/pay_test`,
data

@ -1,4 +1,5 @@
let url = 'http://127.0.0.1:8000'
let url = 'http://lucode3.sa0.online'
let login = 'http://127.0.0.1:5173/h5/#/pages/package/gzh_auth/gzh_auth?'
let env = 'online'
if (process.env.NODE_ENV == 'development') {
env = 'dev'
@ -7,10 +8,13 @@ if (process.env.NODE_ENV == 'development') {
// env = 'dev'
if (env === 'dev') {
url = 'http://127.0.0.1:8000'
login = 'http://127.0.0.1:5173/h5/#/pages/package/gzh_auth/gzh_auth?'
}
export default {
title: '鹿和开发套件',
app_id: 'wx0d92d2990ec16a55',
gzh_id: 'wx526430047d34c85c',
login,
token: '0995452A-0D59-44B6-B6CA-88D8B1E257A0',
url,
}

@ -19,6 +19,13 @@
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "gzh_auth/gzh_auth",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}]
}],
"tabBar": {

@ -0,0 +1,76 @@
<script setup>
/**
* name
* usersa0ChunLuyu
* date2022-04-20 09:02:17
*/
import {
ref
} from 'vue'
import {
OpenGzhAuthUrl,
WeChatLoginTestAction,
$response
} from '@/api'
const user_code = ref('')
const wxGetUserInfo = (res) => {
if (!res.detail.iv) {
uni.$lu.toast("您取消了授权,登录失败");
return false;
}
uni.login({
provider: 'weixin',
success: (loginRes) => {
let d = loginRes
user_code.value = JSON.stringify(d, null, 4)
drawer_ref.value.open()
},
});
}
const drawer_ref = ref(null)
const drawerRef = (e) => {
drawer_ref.value = e
}
const copyContent = () => {
uni.setClipboardData({
data: user_code.value
})
}
const WeChatLoginTest = async () => {
let appid = uni.$lu.config.gzh_id
let state = encodeURIComponent(uni.$lu.config.login)
let redirect_uri = encodeURIComponent(OpenGzhAuthUrl);
const url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appid + '&redirect_uri=' +
redirect_uri + '&response_type=code&scope=snsapi_base&state=' + state + '#wechat_redirect';
window.location = url;
}
</script>
<template>
<uni-drawer :ref="drawerRef" mode="right">
<view class="navbar_wrapper"></view>
<textarea :maxlength="-1" class="textarea_wrapper" v-model="user_code" />
<view class="button_line_wrapper">
<button size="mini" @click="copyContent()"></button>
<button size="mini" @click="WeChatLoginTest()"></button>
</view>
</uni-drawer>
<uni-section title="用户Code" type="line">
<view class="uni-ma-5 uni-pb-5 example_item_wrapper">
<button size="mini" open-type="getUserInfo" @getuserinfo="wxGetUserInfo" withCredentials="true">获取Code</button>
</view>
</uni-section>
</template>
<style scoped>
.button_line_wrapper {
display: flex;
justify-content: space-around;
}
.textarea_wrapper {
margin-top: 100rpx;
height: 400rpx;
}
</style>

@ -14,6 +14,7 @@
import UserNicknameComponent from './UserNickname/UserNickname.vue' //
import UserInfoComponent from './UserInfo/UserInfo.vue' //
import UserCodeComponent from './UserCode/UserCode.vue' //
import UserGzhComponent from './UserGzh/UserGzh.vue' //
import UserPhoneComponent from './UserPhone/UserPhone.vue' //
import PayTestComponent from './PayTest/PayTest.vue' //
@ -38,6 +39,7 @@
<UserNicknameComponent></UserNicknameComponent>
<UserInfoComponent></UserInfoComponent>
<UserCodeComponent></UserCodeComponent>
<UserGzhComponent></UserGzhComponent>
<UserPhoneComponent></UserPhoneComponent>
<PayTestComponent></PayTestComponent>
<view class="bottom_blank_wrapper"></view>

@ -0,0 +1,31 @@
<script setup>
/**
* name
* usersa0ChunLuyu
* date2023年8月13日 23:56:28
*/
import {
ref
} from 'vue'
import {
$response
} from '@/api'
import {
onShow
} from '@dcloudio/uni-app'
const $props = defineProps({
code: {
type: String,
default: ''
}
});
</script>
<template>
<view>
Yo {{ $props.code }}
<view class="blank_wrapper"></view>
</view>
</template>
<style scoped>
</style>
Loading…
Cancel
Save