위챗 애플릿 미니 프로그램 개발 PHP: WeChat Mini 프로그램 WeChat 결제 서버 통합 예시 상세 설명

PHP: WeChat Mini 프로그램 WeChat 결제 서버 통합 예시 상세 설명

Jan 10, 2017 am 09:49 AM

WeChat 미니 프로그램 WeChat 결제 서버 세트

이론적으로 WeChat 결제 통합 작업은 미니 프로그램 측에서 완료될 수 있습니다. 미니 프로그램 js에는 네트워크 액세스 기능이 있기 때문입니다. 보안상의 이유로 중요한 키는 노출되지 않으며 이미 만들어진 공식 PHP 데모를 사용하여 더 많은 노력을 절약할 수 있습니다. 따라서 서명을 완료하고 서버 측에서 요청을 시작하면 애플릿은 wx.requestPayment( OBJECT) 인터페이스.

전체 통합 프로세스는 JSAPI 및 APP와 유사합니다. 먼저 통일된 방식으로 주문한 다음 반환된 결과를 사용하여 결제를 요청합니다.

총 3단계:

1. 애플릿은 wx.login에서 반환된 코드를 openid로 교환합니다. 2. 서버는 WeChat에 주문을 합니다. 3. 애플릿은 결제를 시작합니다

이것들을 미리 준비하세요:

APPID = 'wx426b3015555a46be';
MCHID = '1900009851';
KEY = '8934e7d15453e97507ef794cf7b0519d';
APPSECRET = '7813490da6f1265e4901ffb80afaa36f';
로그인 후 복사

PHP SDK, 다운로드 링크는 글 마지막에 있습니다

1번째와 4번째 항목은 언제 미니 프로그램 신청 2번째와 3번째 항목은 위챗 결제 신청 시 획득한 것입니다. 3번째와 4번째 항목은 비슷해 보이지만 실제로는 두 가지 항목을 혼동하면 서명이 실패하게 됩니다.

WeChat에서 주문하고 prepay_id 받기

1. 컨트롤러를 만들고 WxPay.Api.php 클래스를 가져옵니다.

<?php
require_once __DIR__ . &#39;/BaseController.php&#39;;
require_once __DIR__ . &#39;/../third_party/wxpay/WxPay.Api.php&#39;;
 
class WXPay extends BaseController {
  function index() {
  }
}
로그인 후 복사

index.php/wxpay

를 통해 접근 요청을 할 수 있습니다. 2. WxPay.Config.php

구성 파일을 수정하고 해당 키를 직접 적용하도록 변경하세요

3. 인덱스 방식 구현

function index() {
//     初始化值对象
    $input = new WxPayUnifiedOrder();
//     文档提及的参数规范:商家名称-销售商品类目
    $input->SetBody("灵动商城-手机");
//     订单号应该是由小程序端传给服务端的,在用户下单时即生成,demo中取值是一个生成的时间戳
    $input->SetOut_trade_no(&#39;123123123&#39;);
//     费用应该是由小程序端传给服务端的,在用户下单时告知服务端应付金额,demo中取值是1,即1分钱
    $input->SetTotal_fee("1");
    $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
    $input->SetTrade_type("JSAPI");
//     由小程序端传给服务端
    $input->SetOpenid($this->input->post(&#39;openId&#39;));
//     向微信统一下单,并返回order,它是一个array数组
    $order = WxPayApi::unifiedOrder($input);
//     json化返回给小程序端
    header("Content-Type: application/json");
    echo json_encode($order);
  }
로그인 후 복사

참고 1: 문서에 언급된 nonce_str은 제출되지 않고 SDK에서 자동으로 채워집니다.

소스는 WxPay.Api.php 라인 55

$inputObj->SetNonce_str(self::getNonceStr());//随机字符串
로그인 후 복사

설명 2: 서명은 setSign에도 친절하게 제공되었습니다. 소스는 MakeSign의 WxPay.Data.php 라인 111에 있습니다. ()

/**
  * 生成签名
  * @return 签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
  */
 public function MakeSign()
 {
   //签名步骤一:按字典序排序参数
   ksort($this->values);
   $string = $this->ToUrlParams();
   //签名步骤二:在string后加入KEY
   $string = $string . "&key=".WxPayConfig::KEY;
   //签名步骤三:MD5加密
   $string = md5($string);
   //签名步骤四:所有字符转为大写
   $result = strtoupper($string);
   return $result;
 }
로그인 후 복사

4. 미니 프로그램의 로그인 인터페이스를 호출하여 openid를 가져옵니다

WeChat에 로그인 요청을 하고 코드를 가져온 다음 openId를 대신하여 코드를 제출하세요

wx.login({
     success: function(res) {
      if (res.code) {
       //发起网络请求
       wx.request({
        url: &#39;https://api.weixin.qq.com/sns/jscode2session?appid=wx9114b997bd86f***&secret=d27551c7803cf16015e536b192******&js_code=&#39;+res.code+&#39;&grant_type=authorization_code&#39;,
        data: {
         code: res.code
        },
        success: function (response) {
          console.log(response);
        }
       })
      } else {
       console.log(&#39;获取用户登录态失败!&#39; + res.errMsg)
      }
     }
    });
로그인 후 복사

콘솔에서 openid를 성공적으로 획득한 것을 확인할 수 있습니다. 이제 서버에 전달하는 일만 남았습니다. 서버측에서는 $this->input->post('openId ') 수집을 기다리고 있습니다.

5. 미니 프로그램은 통합 주문을 위해 https://lendoo.leanapp.cn/index.php/WXPay에 대한 요청을 시작합니다.

//统一下单接口对接
      wx.request({
        url: &#39;https://lendoo.leanapp.cn/index.php/WXPay&#39;,
        data: {
          openId: openId
        },
        success: function (response) {
          console.log(response);
 
        },
            header: {
        &#39;content-type&#39;: &#39;application/x-www-form-urlencoded&#39;
    },
      });
로그인 후 복사

https://lendoo.leanapp.cn이 이미 화이트리스트에 있는 경우 다음 결과는

{
 "appid": "wx9114b997bd86f8ed",
 "mch_id": "1414142302",
 "nonce_str": "eEICgYFuGqxFRK6f",
 "prepay_id": "wx201701022235141fc713b8f80137935406",
 "result_code": "SUCCESS",
 "return_code": "SUCCESS",
 "return_msg": "OK",
 "sign": "63E60C8CD90394FB50E612D085F5362C",
 "trade_type": "JSAPI"
}
로그인 후 복사

입니다.

6. 미니 프로그램 결제 API

// 发起支付
var appId = response.data.appid;
var timeStamp = (Date.parse(new Date()) / 1000).toString();
var pkg = &#39;prepay_id=&#39; + response.data.prepay_id;
var nonceStr = response.data.nonce_str;
var paySign = md5.hex_md5(&#39;appId=&#39;+appId+&#39;&nonceStr=&#39;+nonceStr+&#39;&package=&#39;+pkg+&#39;&signType=MD5&timeStamp=&#39;+timeStamp+"&key=d27551c7803cf16***e536b192d5d03b").toUpperCase();
console.log(paySign);
console.log(appId);
wx.requestPayment({
  &#39;timeStamp&#39;: timeStamp,
  &#39;nonceStr&#39;: nonceStr,
  &#39;package&#39;: pkg,
  &#39;signType&#39;: &#39;MD5&#39;,
  &#39;paySign&#39;: paySign,
  &#39;success&#39;:function(res){
    console.log(&#39;success&#39;);
    console.log(res);
  }
});
로그인 후 복사

를 호출하여 시뮬레이터를 테스트하면 스캔을 위한 QR 코드가 나타납니다

결과는 오류입니다.

errMsg:"requestPayment:fail"
err_code:2
err_desc:"支付验证签名失败"
로그인 후 복사

키를 서명에 추가해야 합니다! ! ! 'appId='+appId+'&nonceStr='+nonceStr+'&package='+pkg+'&signType=MD5&timeStamp='+timeStamp+"&key=d27551c7803cf16*e536b192d5d03b"완료되었습니다.

그런데 문서에 키에 대한 언급이 없습니다

결제 성공 스크린샷

PHP:微信小程序 微信支付服务端集成实例详解及源码下载

추가 PHP: WeChat 미니 프로그램의 위챗 결제 서버 통합 예시와 소스코드 다운로드에 대한 자세한 설명은 PHP 중국어 홈페이지에서 관련 글을 주목해주세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)