위챗 페이

WeChat Pay는 중국의 인기 슈퍼앱인 WeChat에 통합된 디지털 지갑 역할을 합니다. 지난 몇 년 동안 국내외에서 중국 소비자와 소통하고자 하는 기업에게 필수적인 결제 솔루션으로 각광받고 있습니다. WeChat은 통합된 플랫폼 내에서 채팅, 제품 또는 서비스 검색, 결제를 원활하게 수행할 수 있는 편리함을 중국 쇼핑객에게 제공하면서 종합적인 생태계로 변모했습니다. 이러한 통합을 통해 쇼핑 경험은 한 곳에서 친구와 친근하게 대화하는 것처럼 쉬워졌습니다.

특징 #

고객 위치중국 소비자
화교
중국인 여행자
통화 처리CNY, GBP, USD, EUR, HKD
결제 통화GBP, EUR, USD, HKD
최소 거래 금액제한 없음
최대 거래 금액50,000 USD
환불
부분 환불
여러 차례 부분 환불
차지백

하위 제품 #

결제 사례제품결제 시나리오 설명
QR 코드웹 결제데스크톱 브라우저에서 결제 수단 판매자 결제로 WeChatPay를 선택하면 QR 코드가 표시됩니다. 그런 다음 구매자는 휴대폰에서 WeChat 앱을 열고 브라우저 페이지에 표시된 바코드를 스캔하여 결제를 완료합니다.
QR 코드빠른 결제판매자는 판매 시점에 단말기에 QR 코드를 표시할 수 있으며, 쇼핑객은 휴대폰에서 WeChat 앱을 열어 QR 코드를 스캔하여 결제를 완료할 수 있습니다.
모바일 H5 흐름H5 결제모바일 브라우저에서 쇼핑객이 판매자 결제 시 결제 수단으로 WeChatPay를 선택하면 브라우저에서 WeChatPay 앱으로 리디렉션되어 결제를 완료한 후 판매자 브라우저로 다시 리디렉션됩니다.
모바일 - 위챗 앱에서공식 계정일반적으로 중화권 시장에서 인기가 많은 판매자는 WeChat 소셜 사이트에 프로필 페이지를 구축하여 쇼핑객이 WeChat 소셜 사이트 환경 내에서 제품을 선택하고 결제를 완료하도록 유도하는 것을 고려할 수 있습니다.
모바일 - 위챗 앱에서미니 프로그램공식 계정의 또 다른 버전인 미니 프로그램은 판매자가 더 많은 사용자 지정이 가능하고 쇼핑객이 해당 환경에서 제품을 선택하고 결제를 완료할 수 있는 WeChat 소셜 사이트 내의 웹사이트와 같은 것입니다.

결제 흐름 #

QR 코드 #

pic_QR Code.png

모바일 H5 흐름 #

pic_Mobile H5 Flows.png

모바일 - 위챗 앱에서 #

pic_Mobile - In WeChat app.png

통합 방법 #

결제 방법 열거 값입니다: wechat_pay

Wechat Pay에는 두 가지 통합 방법이 있습니다.

  1. 다이렉트 API
  2. 결제
통합 방법위챗 페이 하위 프로덕션terminal_type 열거형 값
다이렉트 API웹 결제
다이렉트 API빠른 결제SCAN_CODE
다이렉트 APIH5 결제WAP
다이렉트 API공식 계정 결제공식 계정
다이렉트 API미니 프로그램미니 프로그램
통합 방법위챗 페이 하위 프로덕션terminal_type 열거형 값
결제웹 결제결제 시 단말기 유형을 식별할 필요가 없습니다. 결제 시 단말기에 따라 자동으로 QR 코드가 생성되거나 WeChat 앱으로 리디렉션됩니다.
결제H5 결제결제 시 단말기 유형을 식별할 필요가 없습니다. 결제 시 단말기에 따라 자동으로 QR 코드가 생성되거나 WeChat 앱으로 리디렉션됩니다.

다이렉트 API #

결제 인텐트는 고객으로부터 결제를 수금하려는 의도를 나타내며 결제 프로세스의 라이프사이클을 추적하는 객체입니다. 서버에서 결제 인텐트를 생성하고 수금할 금액과 지원되는 통화를 지정하세요.

결제 인텐트 생성 #

직접 API 통합의 경우, 결제 인텐트를 생성하고 단 한 단계로 URL을 가져올 수 있습니다. 다음은 결제 인텐트 생성 데모입니다:

  1. 웹 결제
  2. H5 결제
  3. 빠른 결제
  4. 공식 계정 결제

웹 결제 #

요청

{
    "amount":20,
    "currency":"CNY",
    "confirm":true,
    "payment_method_options":{
        "wechat_pay":{
            "terminal_type":"WEB",
            "os_type":"IOS",
            "client_ip":"192.168.0.1"
            }
    },
    "payment_method_data":{
        "type":"WECHAT_PAY"
    },
"return_url":"https://wooshpay.com"
}

응답

{
    "id": "pi_1666625039547498496",
    "object": "payment_intent",
    "created": 1686189348000,
    "livemode": false,
    "통화": "CNY",
    "금액": 20,
    "status": "requires_action",
    "client_secret": "pi_1666625039547498496_secret_qGj2VEg4khXSWkXvRI7Y3yZe",
    "next_action": {
        "type": "wechat_pay_display_qr_code",
        "wechat_pay_display_qr_code": {
            "image_data_url": "weixin://wxpay/bizpayurl?pr=lJhTByDzz"
        }
    },
    "payment_method_types": [
        "wechat_pay",
    ],
    "confirmation_method": "자동",
    "결제_방법_옵션": {
        "wechat_pay": {
            "terminal_type": "WEB",
            "os_type": "IOS",
            "client_ip": "192.168.0.1"
        }
    },
    "return_url": "https://wooshpay.com",
    "payment_method": "pm_1666625039430057984",
    "capture_method": "automatic"
}

The 이미지_데이터_URL 에서 위챗페이_디스플레이_QR_코드 에서 next_action 링크를 열면 판매자가 해당 QR 코드를 생성할 수 있습니다. 그런 다음 해당 QR 코드를 사용하여 충전합니다.

H5 결제 #

요청

{
    "금액": 20,
    "통화": "CNY",
    "confirm": true,
    "payment_method_options": {
        "wechat_pay": {
            "terminal_type": "WAP",
            "client_ip": "192.168.124.133" //고객의 모바일 IP
        }
    },
    "payment_method_data": {
        "type": "WECHAT_PAY"
    },
    "return_url": "yourwebsite"
}

응답

{
    "id": "pi_1666625208749916160",
    "object": "payment_intent",
    "created": 1686189389000,
    "livemode": false,
    "currency": "CNY",
    "amount": 20,
    "status": "requires_action",
    "client_secret": "pi_1666625208749916160_secret_BeEXcbvAQNUkrV9C6ZFjOamS",
    "next_action": {
        "type": "wechat_pay_redirect_to_web",
        "wechat_pay_redirect_to_web": {
            "url": "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx08095629694611f41b32df91d6ea160000&package=3449031350&redirect_url=https%3A%2F%2Fwooshpay.com"
        }
    },
    "payment_method_types": [
        "wechat_pay"
    ],
    "confirmation_method": "automatic",
    "payment_method_options": {
        "wechat_pay": {
            "terminal_type": "WAP",
            "os_type": "IOS",
            "client_ip": "172.31.5.62"
        }
    },
    "return_url": "https://wooshpay.com",
    "payment_method": "pm_1666625208624087040",
    "capture_method": "automatic"
}

The url 에서 WECHAT_PAY_REDIRECT_TO_WEB 에서 next_action 을 열 수 있으며, 링크에서 고객은 결제를 위해 위챗 앱으로 바로 이동하여 직접 return_url 결제 후

빠른 결제 #

요청

{
    "amount":10,
    "currency":"CNY",
    "confirm":true,
    "payment_method_options":{
        "wechat_pay":{
            "terminal_type":"SCAN_CODE",
            "os_type":"IOS",
            "client_ip":"192.168.0.1"
            }
    },
    "payment_method_data":{
        "type":"wechat_pay",
        "wechat_pay":{
            "payment_code":"132993614656096754"
        }
    },
    "return_url":"https://yourweb.com"
}

응답

{
    "id": "pi_1666627489012645888",
    "object": "payment_intent",
    "created": 1686189932000,
    "livemode": false,
    "통화": "CNY",
    "금액": 10,
    "status": "requires_action",
    "client_secret": "pi_1666627489012645888_secret_t6oeKYYGb9egt3koNMsntfSg",
    "payment_method_types": [
        "wechat_pay"
    ],
    "confirmation_method": "자동",
    "결제_방법_옵션": {
        "wechat_pay": {
            "terminal_type": "SCAN_CODE",
            "os_type": "IOS",
            "client_ip": "192.168.0.1"
        }
    },
    "return_url": "https://yourweb.com",
    "payment_method": "pm_1666627488878428160",
    "capture_method": "automatic"
}

비밀번호 없는 결제는 바로 결제가 가능하며, 그렇지 않은 경우 고객이 휴대폰에 비밀번호, 지문 등을 입력해야 결제할 수 있습니다.

공식 계정 결제 #

요청

{
    "금액": 20,
    "통화": "CNY",
    "confirm": true,
    "payment_method_options": {
        "wechat_pay": {
            "terminal_type": "official_account",
            "client_ip": "192.168.0.1",
            "openid": ""
        }
    },
    "payment_method_data": {
        "type": "WECHAT_PAY"
    }
}

응답

{
    "id": "pi_1666626536515567616",
    "object": "payment_intent",
    "created": 1686189705000,
    "livemode": false,
    "통화": "CNY",
    "금액": 20,
    "status": "requires_payment_method",
    "client_secret": "pi_1666626536515567616_secret_CcrukFKgxbPp7UEAxodLlNRD",
    "last_payment_error": {
        "code": "payment_method_provider_decline",
        "메시지": "서비스 오류입니다. 다시 시도해 주세요.",
        "payment_method": {
            "id": "pm_1666626536389738496",
            "object": "payment_method",
            "created": 1686189705000,
            "livemode": false,
            "type": "WECHAT_PAY",
            "청구_세부정보": {}
        },
        "decline_code": "invalid_request_error"
    },
    "payment_method_types": [
        "WECHAT_PAY"
    ],
    "confirmation_method": "자동",
    "결제_방법_옵션": {
        "wechat_pay": {
            "openid": "",
            "terminal_type": "공식 계정",
            "client_ip": "192.168.0.1"
        }
    },
    "payment_method": "pm_1666626536389738496",
    "capture_method": "automatic"
}

WECHAT_PAY_공식_계정_파라미터 에서 next_action 에는 프런트엔드에서 사용해야 하는 몇 가지 매개변수가 포함되어 있습니다. 다음은 매개변수 사용 방법에 대한 예시입니다. js 예제

function onBridgeReady(){
 WeixinJSBridge.invoke(
   'getBrandWCPayRequest', {
     "appId":"wx7a154c094f74e84f",      
     "timeStamp":"1682239457",        
     "nonceStr":"kLRl3fI6FiP8PXxNNAiytwuQBdoCWXvZ",     
     "package":"prepay_id=wx23164417189051acf8825c57d275230000",     
     "signType":"MD5",     
     "paySign":"703868ed93842f83c9dff4d80d0cad67"  
    },
    function(res){     
       if(res.err_msg == "get_brand_wcpay_request:ok" ) {}     // Using the above method to judge the front-end return, the WeChat team solemnly reminds: res.err_msg will return ok after the user's payment is successful, but it does not guarantee that it is absolutely reliable. 
       }
   ); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
    document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
    document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
    document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
} 

미니 프로그램 #

요청

{
    "금액": 20,
    "통화": "GBP",
    "confirm": true,
    "payment_method_options": {
        "wechat_pay": {
            "terminal_type": "mini_program",
            "client_ip": "192.168.0.1",
            "openid": "ojt**********QnCY"
        }
    },
    "payment_method_data": {
        "type": "WECHAT_PAY"
    }
}

응답

{
    "id": "pi_1684807723566235648",
    "object": "payment_intent",
    "created": 1690524438000,
    "livemode": true,
    "currency": "GBP",
    "금액": 20,
    "status": "requires_action",
    "client_secret": "pi_1684807723566235648_secret_V3rhLjnidzwNnc7UomZJzzxc",
    "next_action": {
        "type": "wechat_pay_mini_program_params",
        "wechat_pay_mini_program_params": {
            "appId": "***********",
            "timeStamp": "1690524439",
            "nonceStr": "VVdQaFzG9LjOSNyGNLFbt7NZAn2oE87z",
            "signType": "MD5",
            "paySign": "9d0a90a35935d71d7a0f5f33689030fe",
            "package": "prepay_id=wx281407195596079e2b5253415099630000"
        }
    },
    "payment_method_types": [
        "WECHAT_PAY",
    ],
    "confirmation_method": "자동",
    "결제_방법_옵션": {
        "wechat_pay": {
            "openid": "**********",
            "terminal_type": "mini_program",
            "client_ip": "192.168.0.1"
        }
    },
    "payment_method": "pm_1684807723448795136",
    "capture_method": "automatic"
}

결제 #

WooshPay에서 호스팅하는 결제를 통해 WeChat Pay를 사용할 수도 있습니다. 결제를 지원하려면 결제 세션이 다음 조건을 모두 충족해야 합니다:

  • 모든 품목의 가격은 동일한 통화로 표시되어야 합니다. 서로 다른 통화로 된 품목이 있는 경우 각 통화에 대해 별도의 결제 세션을 생성합니다.
  • 일회성 줄 항목만 사용할 수 있습니다.

결제 수단으로 위챗페이 사용 설정하기

새 결제 세션을 생성할 때는 다음을 수행해야 합니다:

다음 목록에 Wechat Pay를 추가합니다. 결제 방법 유형. 모든 라인 항목 동일한 통화를 사용합니다.

세션 만들기 #

요청

{
    "cancel_url": "https://wooshpay.com",
    "mode": "결제",
    "success_url": "https://wooshpay.com",
    "payment_method_types": [
        "wechat_pay"
    ],
    "line_items": [
        {
            "price_data": {
                "currency": "CNY",
                "단위_금액": 100,
                "product_data": {
                    "name": "펑리",
                    "url": "www.baidu.com"
                }
            },
            "수량": 1
        }
    ]
}

응답

{
    "id": "cs_1666627733867724800",
    "object": "checkout.session",
    "created": 1686189991000,
    "livemode": false,
    "통화": "CNY",
    "customer": "",
    "mode": "결제",
    "status": "open",
    "url": "https://checkouttest.wooshpay.com/pay/cs_test_1666627733867724800?key=pk_test_NTE1OTU5NzQ3NTQ2MTM5ODkzNzcxOktFZ0xlam1KbUxUb2gyUUNqWVVoaGpDSjE2NjkzNDUwMDgxMTE=",
    "cancel_url": "https://wooshpay.com",
    "line_items": {
        "object": "목록",
        "데이터": [
            {
                "id": "li_1666627733993553920",
                "object": "item",
                "통화": "CNY",
                "설명": "펑리",
                "price": {
                    "id": "price_1666627734022914048",
                    "object": "가격",
                    "created": 1686189991000,
                    "livemode": false,
                    "active": true,
                    "통화": "CNY",
                    "product": {
                        "id": "prod_1666627734064857088",
                        "object": "제품",
                        "created": 1686189991000,
                        "livemode": false,
                        "active": true,
                        "name": "fengli",
                        "url": "www.baidu.com",
                        "updated": 1686189991000
                    },
                    "type": "one_time",
                    "단위_금액": 100,
                    "billing_scheme": "per_unit"
                },
                "수량": 1,
                "amount_subtotal": 100,
                "amount_total": 100
            }
        ]
    },
    "payment_intent": "pi_1666627734450733056",
    "payment_method_types": [
        "wechat_pay"
    ],
    "payment_status": "미결제",
    "success_url": "https://wooshpay.com",
    "amount_subtotal": 100,
    "금액_총액": 100,
    "청구지_주소_수집": "auto",
    "expires_at": 1686276390865,
    "payment_link": "",
    "client_secret": "pi_1666627734450733056_secret_jajX5Fe4Qlp6VGEm0ftP1wcZ"
}

URL을 통해 결제 카운터에 액세스하고 WeChat 결제를 선택할 수 있습니다. 클라이언트가 웹 페이지인 경우 QR 코드가 생성되며 코드를 스캔하여 결제할 수 있습니다. 클라이언트가 모바일 단말기인 경우 결제를 위해 WeChat 앱으로 바로 이동합니다.

다음 단계 #

필요에 따라 통합에 더 많은 기능을 추가할 수 있습니다.

웹훅 만들기 #

WooshPay 계정에서 이벤트를 수신하여 연동이 자동으로 반응을 트리거할 수 있도록 합니다. 활성화된 이벤트와 URL에 주로 초점을 맞춘 웹훅을 생성합니다.

환불 생성 #

환불을 생성하여 고객에게 금액을 상환합니다. 부분 환불도 수행할 수 있지만 모든 결제 방법에서 부분 환불을 지원하는 것은 아닙니다. 부분 환불은 원래 거래 금액의 일부만 환불하는 것입니다.

어떤 느낌인가요?
Updated on 8월 9, 2023