> 위챗 애플릿 > 위챗 개발 > WeChat 스캔 코드 결제 모드

WeChat 스캔 코드 결제 모드

PHPz
풀어 주다: 2017-04-04 11:30:11
원래의
6897명이 탐색했습니다.

WeChat 스캔 코드 결제(모드 1)


WeChat 스캔 코드 결제 시 발생하는 문제

  • 네이티브 결제 URL 매개변수 오류

  • 콜백인터페이스URL에 콜백이 있지만 매개변수를 수신할 수 없습니다

  • 판매자 백엔드 반환된 데이터 필드 구조가 잘못되었습니다

  • 판매자 주문 정보를 가져오는 시간 초과 또는 판매자가 반환한 httpcode가 200이 아닙니다

문제 해결

  • 기본 결제 URL 매개변수 오류
    이 오류는 일반적으로 QR 코드 URL을 얻은 후 WeChat에서 QR 코드를 생성하고 스캔할 때 발생합니다. 이런 문제가 있는 경우

를 확인해주세요. 1. QR코드 생성에 필요한 매개변수 목록의 매개변수에 오류가 있는지 여부(대소문자 구분)
2. 매개변수에 서명합니다. 당시의 서명 알고리즘을 수정합니다. 서명 검증 도구


다음은 QR 코드 URL을 생성하는 코드입니다

/**
 * 
 * @author Javen
 * 2016年5月14日
 * 扫码支付获取二维码URL(模式一)
 */
public String getCodeUrl(){
    String url="weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXX&time_stamp=XXXXX&nonce_str=XXXXX";
    String product_id="001";
    String timeStamp=Long.toString(System.currentTimeMillis() / 1000);
    String nonceStr=Long.toString(System.currentTimeMillis());
    Map<String, String> packageParams = new HashMap<String, String>();
    packageParams.put("appid", appid);
    packageParams.put("mch_id", partner);
    packageParams.put("product_id",product_id);
    packageParams.put("time_stamp", timeStamp);
    packageParams.put("nonce_str", nonceStr);
    String packageSign = PaymentKit.createSign(packageParams, paternerKey);
    return StringUtils.replace(url, "XXXXX", packageSign,appid,partner,product_id,timeStamp,nonceStr);
}
로그인 후 복사
  • 콜백 인터페이스 URL에 콜백이 있지만

    Enumeration en=getParaNames();

      while (en.hasMoreElements()) {
          Object o= en.nextElement();
          System.out.println(o.toString()+"="+getPara(o.toString()));
      }
    로그인 후 복사

매개변수가 수신되지 않습니다. 위 코드의 출력은 모두 NULL

공식 문서 설명이 명확하지 않아서 다들 콜백 요청에 있는 productid, user's openid 등의 매개변수가 일반과 같다고 생각하시겠지만 실제로 이 콜백에서 반환되는 매개변수는 XML입력 스트림

HttpServletRequest request = getRequest();
         /**
         * 获取用户扫描二维码后,微信返回的信息
         */
        InputStream inStream = request.getInputStream();
        ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = inStream.read(buffer)) != -1) {
            outSteam.write(buffer, 0, len);
        }
        outSteam.close();
        inStream.close();
        String result  = new String(outSteam.toByteArray(),"utf-8");
로그인 후 복사

이며, 결과는


<입니다. ![CDATA[SUCCESS]]>
< ;return_msg>

< ;![CDATA[1322117501]]>



<![CDATA[wx2 01605151311568e801d50fb0555050106]] <</prepay_id><br><trade_type><![CDATA[NATIVE]]></trade_type ><br><code_url>![CDATA[weixin://wxpay/bizpayurl?pr =Gj3ZF2b]]</code_url><br></xml></p> <p>반환된 return_code result_code가 SUCCESS가 아닌 경우 콜백 인터페이스가 데이터를 반환하지 않거나 반환된 데이터가 불법인 경우 다음 오류가 발생합니다. </p> <ul class=" list-paddingleft-2"> <li><p>판매자의 백엔드에서 반환된 데이터 필드 구조가 불법입니다(반환된 데이터 패킷 형식 가 올바르지 않음)</p></li> <li><p>판매자 주문 정보 획득 또는 판매자 반품 시간 초과 httpcode가 200이 아닙니다(반환된 데이터 패킷 없음) </p></li> </ul> <p> 해당되는 경우 위에 문제가 없으면 판매자의 백엔드 시스템이 prepay_id를 WeChat 결제 시스템에 반환합니다. 다음은 세부 코드입니다.</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">/**  * @author Javen  * 2016年5月14日  * 扫码支付回调(模式一)  */

로그인 후 복사

public void wxpay(){
>                              사용   with 사용 ' s 코드 사용

위 내용은 WeChat 스캔 코드 결제 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿