WeChat에서는 WeChat 결제 호출을 위해 JS SDK를 제공하여 WeChat에서 WeChat 결제 호출 기능을 구현하는 데 도움을 줍니다. 구체적인 구현 단계는 다음과 같습니다.
첫 번째 단계는 WeChat 결제를 구현하는 데 필요한 패키지를 설치하는 것입니다.
우리는 여전히 Omnipay Wechat을 사용합니다. Pay Bao Lai는 WeChat 결제를 구현하는 데 도움을 줍니다. 실제로 이전 기본 스캔 코드 결제 방법과 유사하지만 사용되는 인터페이스가 다릅니다. 다음은 제가 개발한 WeChat 웹사이트에서 사용된 라이브러리입니다. 말할 필요도 없이 처음 두 개는 WeChat 결제에 사용되는 Omnipay 라이브러리입니다. WordPress Dispatcher는 사용자 정의 URL을 구현하는 데 사용되는 WordPress 라우터 시스템입니다. Valitron은 주로 사용자가 제출한 데이터를 확인하는 데 사용됩니다.
"require": { "omnipay/omnipay": "~2.0", "lokielse/omnipay-wechatpay": "^1.0", "thefold/wordpress-dispatcher": "^1.0", "vlucas/valitron": "^1.2", },
작성기 설치 명령을 실행하세요. 설치가 완료되면 자동 로딩 파일을 테마나 플러그인에 추가하세요.
require_once( get_template_directory() . '/vendor/autoload.php' );
프런트 엔드 구현: WeChat JS SDK 구성 및 WeChat 결제 구현
여기에 있는 jssdk.php는 WeChat 공식에서 제공하며 다음과 같습니다. WeChat JS SDK 초기화를 위한 서명 패키지를 제공하기 위해 구현되었습니다. 위챗 결제를 구현해야 하는 페이지에 이 파일을 삽입한 후 JSSDK 클래스를 초기화합니다.
require_once( get_template_directory() . '/inc/jssdk.php' ); $jssdk = new JSSDK( "xxxxx", "xxxxxxxxxxxxxxxx" ); $signPackage = $jssdk->GetSignPackage();
WeChat JS SDK 초기화, WeChat 결제 수단을 호출하여 WeChat 결제 구현
우선 WeChat JS SDK가 페이지 JavaScript 파일 jweixin-1.0.0.js의 헤드에 있습니다. 위에서 얻은 $signPackage를 기반으로 아래 코드에서 다음 작업을 완료했습니다.
wx.config를 사용하여 js SDK를 초기화하고 wx.ready를 사용하여 js SDK가 성공적으로 초기화되었는지 확인하면 WeChat js SDK에서 제공하는 인터페이스를 사용하여 작동할 수 있습니다. 결제 버튼을 클릭하면 Ajax 요청이 서버로 전송되어 WeChat 주문을 받은 다음 wx.chooseWXPay를 사용하여 WeChat 비밀번호를 입력하기 위해 WeChat에서 볼 수 있는 팝업 인터페이스인 WeChat 결제를 시작합니다.
jQuery(document).ready(function ($) { // 配置 js sdk wx.config({ debug: false, appId: '<?php echo $signPackage[ "appId" ];?>', timestamp: <?php echo $signPackage[ "timestamp" ];?>, nonceStr: '<?php echo $signPackage[ "nonceStr" ];?>', signature: '<?php echo $signPackage[ "signature" ];?>', jsApiList: ['chooseWXPay'] // 这里的 jsApiList 需要什么就填写什么 }); // 一定要检查 js sdk 是否已经准备好了 wx.ready(function () { $("#topay").click(function () { $.ajax({ url: '/order/', type: 'POST', dataType: 'json', data: $("#wepay").serialize(), success: function (order) { var params = { 'timestamp': order.timeStamp, 'nonceStr': order.nonceStr, 'package': order.package, 'signType': order.signType, 'paySign': order.paySign }; wx.chooseWXPay(params); }, error: function (order) { c-alert(order.message); } }); return false; }); });});
다음 상황에서는 결제창이 깜박였다가 사라집니다
위챗에서 위챗 결제를 테스트하다 보면 위챗 결제가 자주 발생합니다 창이 깜박입니다 가 사라지며, 결제 비밀번호 입력 인터페이스가 보이지 않는 경우, 가능한 이유는 다음과 같으니 주의 깊게 확인해 주시기 바랍니다.
jssdk가 구성되지 않았습니다. 위 코드에서 wx.config 및 wx.readyAjax가 반환한 데이터가 잘못된지 확인하세요. Ajax 요청의 반환 데이터에 잘못된 도메인 이름 보안 설정이 있는지 확인하세요. WeChat 관리 백그라운드에서 보안 도메인 이름이 올바르게 설정되었는지 확인하십시오. 테스트 도메인 이름이 보안 도메인 이름에 추가되었습니다
백엔드 구현: 주문 데이터 확인 및 전송 # 🎜🎜#
백엔드 구현은 매우 간단합니다. 위의 Ajax를 받기만 하면 됩니다. 제출된 데이터는 WeChat 결제에 필요한 Json 데이터에 대해 처리되고 주문은 사이트 데이터베이스에 저장됩니다. 후속 쿼리 및 후속 알림 콜백.// 获取微信支付网关的函数function get_wechat_gateway() { $gateway = Omnipay::create( 'WechatPay_Js' ); $gateway->setAppId( ' xxxxxxxx' ); $gateway->setMchId( 'xxxxxxxx' ); $gateway->setApiKey( 'xxxxxxxx' ); //注意这里的 ApiKey 是我们在微信商户后台设置的一个32位的随机字符串,和微信公众号里面的 App Secrit 不是一回事。 return $gateway;}/** * 处理订单信息, 跳转到微信支付 */new Dispatch( [ 'wepay/order' => function ( $request ) { // 检查用户提交的数据是否有错,如果有错误,返回错误信息 $v = new Validator( $_POST ); $v->rule( 'required', [ 'count', 'buyer_name', 'buyer_phone', 'buyer_address' ] ); if ( ! $v->validate() ) { $msg = [ 'success' => '0', 'message' => '下单失败, 请检查所有必填项。', ]; wp_send_json( $msg ); } $user = wp_get_current_user(); $req = Request::createFromGlobals(); $pid = $req->get( 'pid' ); $count = $req->get( 'count' ); $open_id = $req->cookies->get( 'open_id' ); $prod = get_post( $pid ); $price = get_post_meta( $pid, '_prod_price', true ); $total_fee = $price * $count * 100; $tn = date( 'YmdHis' ) . mt_rand( 1000, 9999 ); // 在实际开发过程中,我们需要把用户提交的订单数据保存到数据库一份 // 订单参数 $order = [ 'body' => $prod->post_title', 'out_trade_no' => $tn, 'total_fee' => $total_fee, 'spbill_create_ip' => wizhi_get_real_ip(), 'fee_type' => 'CNY', 'open_id' => $open_id, ]; // 发送支付请求到微信并获取返回信息 $gateway = get_wechat_gateway(); $gateway->setNotifyUrl( 'https://www.wpzhiku.com/order/return' ); $response = $gateway->purchase( $order )->send(); $wechat_return = $response->getJsOrderData(); wp_send_json( $wechat_return ); },] );
wordpress tutorial 열을 방문하여 알아보세요!
위 내용은 WordPress에서 WeChat 결제를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!