>백엔드 개발 >PHP 튜토리얼 >Laravel WeChat 결제 개발 사례

Laravel WeChat 결제 개발 사례

小云云
小云云원래의
2018-05-26 14:08:484437검색

이 기사에서는 주로 Laravel WeChat 결제 개발 사례를 공유합니다. 현재 WeChat 결제는 특히 휴대폰에서 간단한 조작만으로 결제를 완료할 수 있기를 바랍니다.

1. 종속성 패키지 설치

프로젝트 루트 디렉터리에서 다음 명령을 실행하여 종속성을 설치합니다.

composer require overtrue/laravel-wechat 2.1.*

설치가 완료된 후 config/app.php에 서비스 공급자를 등록합니다.

OvertrueLaravelWechatServiceProvider::class
코드에 추가하려면 WeChat 파사드를 통해 config/app.php의 별칭 배열에 추가하면 됩니다:

'Wechat' => Overtrue\LaravelWechat\Facade::class

2. WeChat 공개 계정 설정을 구성합니다
위 작업을 완료한 후 다음을 실행합니다. 구성 파일을 config 디렉터리에 게시하는 명령:

php artisan vendor:publish

Run 성공 후 config/wechat.php 파일을 편집합니다.

<?php
  return [
      &#39;use_alias&#39; => env(&#39;WECHAT_USE_ALIAS&#39;, false),
      &#39;app_id&#39; => env(&#39;WECHAT_APPID&#39;, &#39;Your AppId&#39;), // 必填
      &#39;secret&#39; => env(&#39;WECHAT_SECRET&#39;, &#39;Your Secret&#39;), // 必填
      &#39;token&#39; => env(&#39;WECHAT_TOKEN&#39;, &#39;Your Token&#39;), // 必填
      &#39;encoding_key&#39; => env(&#39;WECHAT_ENCODING_KEY&#39;, &#39;Your Encoding AES Key&#39;) // 只有加密模式需要
  ];

WeChat 공개 계정의 관련 정보를 해당 구성에 입력합니다. WeChat 결제 기능을 사용하려면 인증된 공개 계정이 필요하며 현재 WeChat 공개 플랫폼 테스트 계정은 결제 인터페이스를 지원하지 않습니다.

WeChat 결제를 사용하기 전에 WeChat 공개 플랫폼으로 이동하여 인증 디렉터리, 테스트 계정 및 기타 정보를 구성해야 합니다. WeChat 결제 개발 문서는 https://pay.weixin.qq.com/wiki/doc/api/index.html

3을 참조하세요. 사용 예제

참고: Laravel 5는 기본적으로 CSRF 미들웨어를 활성화합니다. WeChat 메시지가 게시되었으므로 CSRF 확인이 실행되고 메시지가 올바르게 응답되지 않습니다. 따라서 지정된 URL이 CSRF 확인에서 제외될 수 있습니다. 자세한 내용은 Laravel의 CSRF에서 지정된 URL을 제외하는 방법을 참조하세요.
PHP

<?php
use Overtrue\Wechat\Payment;  
use Overtrue\Wechat\Payment\Order;  
use Overtrue\Wechat\Payment\Business;  
use Overtrue\Wechat\Payment\UnifiedOrder;
/**   * 第 1 步:定义商户   */  
$business = new Business(      APP_ID,      APP_KEY,      MCH_ID,      MCH_KEY  );
/**   * 第 2 步:定义订单   */  
$order = new Order();  
$order->body = &#39;test body&#39;;  
$order->out_trade_no = md5(uniqid().microtime());  
$order->total_fee = &#39;1&#39;; // 单位为 “分”, 字符串类型  
$order->openid = OPEN_ID;  
$order->notify_url = &#39;http://xxx.com/wechat/payment/notify&#39;;
/**   * 第 3 步:统一下单   */  
$unifiedOrder = new UnifiedOrder($business, $order);
/**   * 第 4 步:生成支付配置文件   */  
$payment = new Payment($unifiedOrder);  
Javascript
var WXPayment = function() {      
if( typeof WeixinJSBridge === &#39;undefined&#39; ) {          
alert(&#39;请在微信在打开页面!&#39;);          
return false;      
}      
WeixinJSBridge.invoke(          &#39;getBrandWCPayRequest&#39;, <?php echo $payment->getConfig(); 
?>, 
function(res) {              
switch(res.err_msg) {                  
case &#39;get_brand_wcpay_request:cancel&#39;:                      
alert(&#39;用户取消支付!&#39;);                      
break;                  
case &#39;get_brand_wcpay_request:fail&#39;:                      
alert(&#39;支付失败!(&#39; res.err_desc &#39;)&#39;);                      
break;                  
case &#39;get_brand_wcpay_request:ok&#39;:                      
alert(&#39;支付成功!&#39;);                      
break;                  
default:                      
alert(JSON.stringify(res));                      
break;              
}          
}      
);  }  
HTML
<button type="button" onclick="WXPayment()">      
支付 ¥<?php 
echo ($order->total_fee / 100); 
?> 元  </button>

결제 알림

<?php
use Overtrue\Wechat\Payment\Notify;
$notify = new Notify(      APP_ID,      APP_KEY,      MCH_ID,      MCH_KEY  );
$transaction = $notify->verify();
if (!$transaction) {      $notify->reply(&#39;FAIL&#39;, &#39;verify transaction error&#39;);  }
// var_dump($transaction);
echo $notify->reply();

4. Lumen에서 사용

또한 laravel-wechat은 Lumen도 지원합니다. Composer를 사용하여 laravel-wechat을 설치한 후 bootstrap/app.php의 82번째 줄 주위에 다음 코드 줄을 추가해야 합니다:

$app->register(OvertrueLaravelWechatServiceProvider::class);

동시에 구성 ENV의 다음 옵션:

WECHAT_USE_ALIAS=false
  WECHAT_APPID=xxx
  WECHAT_SECRET=xxx
  WECHAT_TOKEN=xxx
  WECHAT_ENCODING_KEY=xxx

구성을 위해 config/wechat.php를 사용하는 데 익숙하다면 bootstrap/app.php의 19행 뒤에 추가하는 것을 기억하십시오:

$app->configure(&#39;wechat&#39;);

물론 laravel-wechat도 추가됩니다. 또한 더 많은 WeChat SDK 지원을 제공합니다.

관련 권장사항:

PHP Alipay 인터페이스 예제 튜토리얼

PHP는 Alipay를 예로 들어 RSA 서명 생성 주문 기능을 구현합니다.

PHP 초보자가 WeChat 결제 및 Alipay 결제 구현을 배울 수 있는 방법에 대한 관련 튜토리얼

위 내용은 Laravel WeChat 결제 개발 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.