Cara mengintegrasikan pembayaran WeChat menggunakan PHP dan OAuth
Pengenalan:
Dengan populariti pembayaran mudah alih, pembayaran WeChat telah menjadi kaedah pembayaran pilihan ramai orang. Mengintegrasikan WeChat Pay ke dalam tapak web atau aplikasi boleh memberikan pengguna pengalaman pembayaran yang mudah. Artikel ini akan memperkenalkan cara menggunakan PHP dan OAuth untuk penyepaduan pembayaran WeChat dan memberikan contoh kod yang berkaitan.
1. Mohon WeChat Pay
Sebelum menggunakan WeChat Pay, anda perlu memohon akaun pedagang WeChat Pay dan kunci berkaitan. Untuk proses permohonan khusus, sila rujuk dokumen rasmi WeChat Pay.
2. Pemilihan perpustakaan PHP OAuth
OAuth ialah standard terbuka untuk kebenaran, yang membolehkan pengguna membenarkan aplikasi pihak ketiga mengakses maklumat mereka. Dalam WeChat Pay, OAuth digunakan dalam proses log masuk dan pembayaran kebenaran pengguna. Dalam PHP, terdapat banyak perpustakaan OAuth sumber terbuka untuk dipilih, seperti OAuth1 dan OAuth2.
3. Pasang dan konfigurasikan perpustakaan OAuth
composer require thephpleague/oauth2-client
<?php class Config { public static $wechatPayConfig = [ 'clientId' => 'YOUR_CLIENT_ID', 'clientSecret' => 'YOUR_CLIENT_SECRET', 'redirectUri' => 'YOUR_REDIRECT_URI', 'wechatPayApiUrl' => 'https://api.mch.weixin.qq.com/pay/unifiedorder', 'wechatPayAppId' => 'YOUR_APP_ID', 'wechatPayMchId' => 'YOUR_MCH_ID', 'wechatPayApiKey' => 'YOUR_API_KEY' ]; } ?>
4. Gunakan OAuth untuk penyepaduan pembayaran WeChat
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => Config::$wechatPayConfig['clientId'], 'clientSecret' => Config::$wechatPayConfig['clientSecret'], 'redirectUri' => Config::$wechatPayConfig['redirectUri'], 'urlAuthorize' => 'https://open.weixin.qq.com/connect/oauth2/authorize', 'urlAccessToken' => 'https://api.weixin.qq.com/sns/oauth2/access_token', 'urlResourceOwnerDetails' => 'https://api.weixin.qq.com/sns/userinfo' ]); // 获取授权码 if (!isset($_GET['code'])) { $authorizationUrl = $provider->getAuthorizationUrl(); $_SESSION['oauth2state'] = $provider->getState(); header('Location: ' . $authorizationUrl); exit(); } try { $accessToken = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); $resourceOwner = $provider->getResourceOwner($accessToken); $openid = $resourceOwner->getValues()['openid']; // TODO: 将openid保存到数据库中 } catch (Exception $e) { // 错误处理 } ?>
<?php require 'vendor/autoload.php'; $wechatPay = new WechatPay(Config::$wechatPayConfig); $prepayInfo = $wechatPay->unifiedOrder([ 'body' => '支付测试', 'out_trade_no' => time(), 'total_fee' => '1', 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], 'notify_url' => 'http://www.example.com/notify.php', 'trade_type' => 'JSAPI', 'openid' => $openid ]); $prepayParams = $wechatPay->getJSSDKParams($prepayInfo['prepay_id']); // 将$prepayParams传递给前端进行支付 ?>
notify_url
yang ditentukan untuk memaklumkan keputusan pembayaran. Ini boleh dicapai melalui contoh kod berikut: <?php require 'vendor/autoload.php'; use WechatPayNotify; $notify = new Notify(Config::$wechatPayConfig); $notifyResult = $notify->handleNotify(); // 处理支付结果通知 if ($notifyResult) { // TODO: 更新数据库中的订单状态 echo 'success'; // 返回给微信服务器,表示已成功处理通知 } else { // TODO: 删除数据库中的订单,或者进行其他处理 echo 'fail'; } ?>
Ringkasan:
Melalui langkah di atas, kami boleh melaksanakan fungsi pembayaran WeChat berdasarkan PHP dan OAuth. Mula-mula, laksanakan log masuk kebenaran pengguna melalui OAuth dan dapatkan openid pengguna. Kemudian, gunakan openid dan parameter yang berkaitan untuk membuat permintaan pembayaran. Akhir sekali, dalam pemberitahuan hasil pembayaran, hasil pembayaran diproses dan status pesanan yang berkaitan dikemas kini. Melalui kaedah ini, kami boleh mengintegrasikan pembayaran WeChat dengan mudah dalam tapak web atau aplikasi.
Di atas ialah contoh kod artikel ini, saya harap ia akan membantu semua orang apabila menyepadukan pembayaran WeChat menggunakan PHP dan OAuth.
Atas ialah kandungan terperinci Cara menggunakan PHP dan OAuth untuk penyepaduan pembayaran WeChat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!