> 백엔드 개발 > PHP 튜토리얼 > WeChat Payment_php 기술을 개발하기 위해 PHP를 사용하는 과정에 대한 간략한 토론

WeChat Payment_php 기술을 개발하기 위해 PHP를 사용하는 과정에 대한 간략한 토론

WBOY
풀어 주다: 2016-05-16 20:07:10
원래의
1317명이 탐색했습니다.

다음은 PHP 언어를 예로 들어 WeChat 결제 개발 과정을 설명합니다.

1. 주문 정보 받기

2. 주문 정보 및 결제 관련 계정을 기반으로 사인을 생성하고 결제 매개변수를 생성합니다

3. 결제 매개변수 정보를 WeChat 서버에 게시하고 반품 정보를 받습니다

4. 반환된 정보를 바탕으로 해당 결제 코드(WeChat 내) 또는 결제 QR 코드(WeChat 내 아님)를 생성하여 결제를 완료합니다.

다음은 단계별 설명입니다.

1. WeChat 결제와 관련된 세 가지 필수 주문 매개변수가 있습니다. 즉, body(제품 이름 또는 주문 설명), out_trade_no(일반적으로 주문 번호) 및 total_fee(주문 금액, 단위 "센트", 단위에 주의하세요) ), 다양한 애플리케이션에서 가장 먼저 해야 할 일은 결제 매개변수 생성을 준비하기 위해 관련 정보를 얻는 것입니다.

2. 기타 필수 결제 매개변수에는 appid(WeChat appid), mch_id(신청이 성공한 후 알림), device_info(웹과 WeChat 측의 매개변수가 동일하며 대문자 "WEB"임), trade_type(다음에 따름)이 있습니다. 이 값은 다양한 사용 시나리오에서도 다릅니다. WeChat 외부에서는 "NATIVE"이고 WeChat 내부에서는 "JSAPI"입니다. nonce_str(32비트 임의 문자열), spbill_create_ip(결제를 시작하는 터미널 IP, 즉 서버 IP) ), inform_url(결제 콜백 주소, WeChat 서버에서 결제 완료 여부를 웹사이트에 알리고, 주문 상태를 수정함), 서명(서명), 그리고 trade_type이 JSAPI인 경우 openid를 추가로 설명해야 합니다. 필수 매개변수입니다.

서명 알고리즘은 서명 단계가 번거로워서 오류가 발생하기 쉽습니다. 사실 가장 중요한 것은 서명에 서명이 참여하지 않는다는 것입니다

A: 로그인을 제외하고 1과 2에서 언급한 매개변수를 배열 배열로 할당하고 사전순으로 정렬합니다. 실제로 키 값은 A-Z 순서로 정렬됩니다.

B: 배열을 k1=v1&k2=v2&...kN=vN 형식의 문자열로 변환합니다

C: 이 문자열(WeChat 결제 판매자 백엔드에서 사용자가 설정) 뒤에 KEY 값을 추가합니다. 이제 문자열 = k1=v1&k2=v2&...kN=vN&key=KEY입니다.

D:문자열 = md5(문자열)

E: 부호 = strtoupper(문자열)

이 시점에서 기호가 생성됩니다.

새로운 배열을 생성하려면 배열 배열에 기호를 추가하세요. 이 배열을 XML로 변환합니다. 이로써 위챗 결제를 위한 매개변수 준비 작업이 완료되었습니다.

3. POST를 사용하여 2에서 생성된 XML을 WeChat(https://api.mch.weixin.qq.com/pay/unifiedorder)으로 보내 반환된 XML 정보를 얻고, 쉬운 조작을 위해 정보를 배열 형식으로 변환합니다. 반환되는 XML 정보는 다음과 같습니다.

<xml>
 <return_code><![CDATA[SUCCESS]]></return_code>
 <return_msg><![CDATA[OK]]></return_msg>
 <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
 <mch_id><![CDATA[10000100]]></mch_id>
 <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
 <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
 <result_code><![CDATA[SUCCESS]]></result_code>
 <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
 <trade_type><![CDATA[JSAPI]]></trade_type>
</xml> 

로그인 후 복사


trade_type==native 결제인 경우 WeChat 스캔 코드 결제 주소인 code_url이라는 추가 매개변수가 있습니다.

4. 결제 과정은 다음과 같습니다.

trade_type==native인 경우 몇 가지 방법을 사용하여 code_url을 QR 코드로 변환하고 WeChat을 사용하여 코드를 스캔하면 됩니다. WeChat 내에서 클릭하여 결제하는 경우 관련 항목을 호출해야 합니다. WeChat js-sdk 이 단계 가장 중요한 것은 json 형식의 문자열을 생성하는 것입니다.

먼저 json 문자열을 변환하는 array_jsapi를 생성합니다.

A: 이 배열의 매개변수에는 appId, timeStamp, nonceStr, package, signType이 포함됩니다(기본값은 "MD5"). 위 배열과 경우가 다르다는 점에 유의하세요.

B: 이 배열을 사용하여 paySign 매개변수를 생성합니다. 서명 방법은 위와 동일합니다.

C: array_jsapi 배열에 paySign 매개변수를 추가합니다.

D: json_encode를 사용하여 배열을 js_string 문자열로 형식화합니다.

위 작업 완료 후 위챗 내에서 결제가 가능합니다.

다음은 관련 결제에 대한 샘플 코드입니다.

<script type='text/javascript'>
         function jsApiCall()
     {
      WeixinJSBridge.invoke(
       'getBrandWCPayRequest',
       $js_string,
       function(res){
        WeixinJSBridge.log(res.err_msg);
         if(res.err_msg=='get_brand_wcpay_request:ok')
         {
          alert('支付成功');
         }
         else
         {
          alert('支付失败');
         }
       }
      );
     }
     function callpay()
     {
      if (typeof WeixinJSBridge == 'undefined'){
       if( document.addEventListener ){
        document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
       }else if (document.attachEvent){
        document.attachEvent('WeixinJSBridgeReady', jsApiCall); 
        document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
       }
      }else{
       jsApiCall();
      }
     }
    </script> 



로그인 후 복사

코드의 js_string은 우리가 생성한 문자열입니다.

결제를 시작하려면 HTML 코드에서 callpay() 함수를 호출하세요.

이렇게 위챗페이 결제작업이 완료되었습니다.

다음은 주문 결제가 성공한 후 사용자에게 올바른 상태를 표시하는 콜백 작업입니다.

결제가 완료된 후 WeChat은 POST 요청을 통해 결제 결과를 웹사이트 서버에 피드백합니다. 웹사이트 서버는 POST 정보를 획득하고 결제 성공 여부에 따라 주문 정보 수정 여부를 결정합니다.

A: POST 매개변수에서 기호를 제거하고 값을 기록합니다.

B: 나머지 매개변수 서명

C: 서명 결과를 POST의 서명과 비교하십시오. 서명이 동일하면 결제 결과에 따라 주문 상태가 수정되었음을 의미합니다.

E: WeChat에 XML 정보를 반환하여 웹사이트가 알림을 수신했음을 WeChat이 알 수 있도록 하고 WeChat이 POST를 다시 푸시하지 못하도록 합니다.

<xml>
 <return_code><![CDATA[SUCCESS]]></return_code>
 <return_msg><![CDATA[OK]]></return_msg>
</xml> 



로그인 후 복사

실패한 경우 반품

<xml>
 <return_code><![CDATA[FAIL]]></return_code>
 <return_msg><![CDATA[失败原因]]></return_msg>
</xml> 

로그인 후 복사

이 시점에서 WeChat Payment의 전체 개발 과정이 소개됩니다.

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