[PayPal] ASP 결제 연동 > 기술자료 | 해피정닷컴

[PayPal] ASP 결제 연동 > 기술자료

본문 바로가기

사이트 내 전체검색

[PayPal] ASP 결제 연동 > 기술자료

전자결제 [PayPal] ASP 결제 연동

페이지 정보


본문

PayPal 결제연동입니다.

1. paypal_pay.asp 
<%@ Language=VBScript %>
<%
    ' 페이팔 계정 정보
    my_paypal_email = "paypal@happyjung.com"
    
    ' 내 도메인 정보
    return_page = "https://www.happyjung.com/test/pay_insert.asp"
    notify_page = "https://www.happyjung.com/test/paypal_notify.asp"
    cancel_page = "https://www.happyjung.com/test/paypal_cancel.asp"
    
    ' 내 상품 정보
    ' GET방식으로 받는다면 item_price = Request.QueryString("item_price") 이런 식으로
    ' POST방식으로 받는다면 item_price = Request.Form("item_price") 이런 식으로
    item_price = request("price")  '  가격
    item_name = request("product")  '  제품명
    item_quantity = "1"  ' 수량
    item_cod = request("oid")  '  주문번호
    currency_type = "USD"  ' 결제단위
    
    ' 페이팔 페이지 call 부분
    url = "https://www.paypal.com/xclick/"
    url = url & "?business=" & my_paypal_email
    url = url & "&return=" & return_page
    url = url & "&notify_url=" & notify_page
    url = url & "&cancel_return=" & cancel_page
    url = url & "&quantity=" & item_quantity
    url = url & "&item_name=" & replace(item_name," ","%20")
    url = url & "&item_number=" & item_cod
    url = url & "&amount=" & item_price
    url = url & "&no_shipping=1"
    url = url & "&no_note=0"
    url = url & "&currency_code=" & currency_type
    response.redirect url    
%>


2. paypal_notify.asp
<%@LANGUAGE="VBScript"%>
<%
dim addr1, city, company, country, email, orderdate
dim orderid, prodid, qty, state, tot, trackingid
dim ordername, zip, payment_status, ret, msg, str
dim connString, conn, objHttp, SQL

' email 정보
const myEmail = "myemail@mydomain.com"
const myEmailLogin = "mylogin"
const myEmailPassword = "mypassword"
const mySMTPServer = "smtp.mydomain.com"
const myDomain = "http://www.mydoamin.com"

' 데이터베이스 정보
MyDBServer   = "localhost"  ' 서버주소
MyDBname     = "네임"  ' 디비네임
MyDBUser     = "아이디"   ' 디비 아이디
MyDBPassword = "비밀번호"  ' 디비 비밀번호

' MS-ACCESS
'const myDatabasePath = "/database"
'const connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=%database%;Jet OLEDB:Database Password=;"
' MS-SQL
const connString = "Provider=SQLOLEDB;Data Source=MyDBServer;Initial Catalog=MyDBname;User ID=MyDBUser;Password=MyDBPassword;"
' ORACLE
'const connString = "Provider=MSDAORA;Data Source=MyDBServer;User ID=MyDBUser;Password=MyDBPassword;"
' MySQL
'const connString = "Provider=MySQLProv.2.5;Data Source=MyDBServer;UID=MyDBUser;PWD=MyDBPassword"

' 링크 파라미터를 가져오는 부분 (retrtieve link parameters)
addr1 = request("address_street")                                ' 주문자 정보 - 주소
city = request("address_city")                                    ' 주문자 정보 - 도시
company = request("payer_business_name")                        ' 주문자 정보 - 회사
country = request("address_country")                            ' 주문자 정보 - 국가
email = request("payer_email")                                    ' 주문자 정보 -  email
orderdate = request("payment_date")                                ' 주문일
orderid = request("txn_id")                                        ' 상품 주문 id (product order id)
prodid = request("item_number")                                    ' 상품의 id (product id)
qty = request("quantity")                                        ' 주문 수량 (order product quantity)
state = request("address_state")                                ' 주문자 정보 - state(주)
tot = request("mc_gross")                                        ' 상품의 총 가격 (product total price)
trackingid = request("txn_id")                                    ' order trackin id
ordername = request("last_name") & " " & request("first_name")    ' 주문자 이름
zip = request("address_zip")                                    ' 주문자 정보 - 우편번호 (zip)
payment_status = request("payment_status")                        ' 주문 상태 (payment status)

' html 이메일 보내기 (send html email)
function SendEmail(byval emailaddr, byval message)
    on error resume next
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
    Set Flds = iConf.Fields

    schema = "http://schemas.microsoft.com/cdo/configuration/"
    Flds.Item(schema & "sendusing") = 2
    Flds.Item(schema & "smtpserver") = mySMTPServer
    Flds.Item(schema & "smtpserverport") = 25
    Flds.Item(schema & "sendusername") = myEmailLogin
    Flds.Item(schema & "sendpassword") = myEmailPassword
    Flds.Item(schema & "smtpauthenticate") = 1
    Flds.Update

    With iMsg
        .To = emailaddr
        .From = myEmail
        .Subject = "PayPal Payment"
        .HTMLBody = message
        .Sender = myDomain
        .HTMLBody = message
        Set .Configuration = iConf
        SendEmail = .Send
    End With
    on error goto 0
end function

' 페이팔 결재 확인 (PayPal verification)
set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
if err.number <> 0 then set objHttp = Server.CreateObject("Microsoft.XMLHTTP")
str = Request.Form & "&cmd=_notify-validate"
objHttp.open "POST", "https://www.paypal.com/cgi-bin/webscr", false
objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHttp.Send str
if objHttp.status <> 200 then
    set objHttp = nothing
    Response.Redirect "paypal_error.asp"
end if
ret = objHttp.responseText
set objHttp = nothing

' 고객 정보와 관리 메시지를 보낸다. (send administrative message with customer informations)
msg = "<b>Customer Informations from PayPal</b><br><br>"
msg = msg & "       Name: " & ordername & "<br>"
msg = msg & "    Company: " & company & "<br>"
msg = msg & "  Address 1: " & addr1 & "<br>"
msg = msg & "       City: " & city & "<br>"
msg = msg & "    Country: " & country & "<br>"
msg = msg & "      State: " & state & "<br>"
msg = msg & "        Zip: " & zip & "<br>"
msg = msg & "      Email: " & email & "<br>"
msg = msg & " Order Date: " & orderdate & "<br>"
msg = msg & "   Order ID: " & orderid & "<br>"
msg = msg & "Tracking ID: " & trackingid & "<br>"
msg = msg & " Product ID: " & prodid & "<br>"
msg = msg & "   Quantity: " & qty & "<br>"
msg = msg & "      Total: " & tot & "<br>"
msg = msg & "     Status: " & payment_status & "<br>"
SendEmail myEmail, msg

' 통지 유효성 검사 (Check notification validation)
if (ret = "VERIFIED") then

    ' 주문이 유효한지 검사 (다음중에 해당이 없으면 에러메시지를 보낸다.)
    if instr("CANCELED_REVERSAL COMPLETED DENIED FAILED PENDING REFUNDED REVERSED PROCESSED",ucase(payment_status))=0 then
        Response.Redirect "paypal_error.asp" 
    end if

    ' 데이터베이스 open
    set conn = CreateObject("ADODB.Connection")
    
    ' MS-ACCESS
    'conn.Open replace(connString,"%database%",Server.MapPath(myDatabasePath & "/customer.mdb")),"Admin"
    
    ' 그외
    conn.Open connString
    
    if err.number <> 0 then
        set conn = nothing
        Response.Redirect "paypal_error.asp"
    end if
    
    ' 주문정보 업데이트
    sql = "update 테이블 set transaction_card = '"& trackingid &"' where oid = '"& orderid &"' "
    'response.write(sql)
    'response.End()
    set rs = conn.execute(sql) 
    
'    ' 테이블 open
'    set rs = Server.CreateObject("ADODB.Recordset")
'    rs.Open "Customer", conn, 2, 3
'    
'    ' 주문이 이미 DB에 있는지 확인
'    rs.Find "orderid=" & orderid
'    if rs.EOF then
'    
'        ' 없다면 새로운 결재 정보를 삽입한다.
'        conn.BeginTrans
'        rs.AddNew
'        rs("addr1") = addr1
'        rs("city") = city
'        rs("company") = company
'        rs("country") = country
'        rs("orderdate") = orderdate
'        rs("email") = lcase(email)
'        rs("orderid") = orderid
'        rs("prodid") = prodid
'        rs("qty") = qty
'        rs("state") = state
'        rs("tot") = tot
'        rs("trackingid") = trackingid
'        rs("name") = ordername
'        rs("zip") = zip
'        rs("status") = payment_status
'        rs.Update 
'
'        ' 에러가 있다면...........
'        if err.number <> 0 then
'            ' 결재 취소
'            conn.RollbackTrans 
'            
'            ' 테이블 닫는다.
'            rs.Close
'            set rs = nothing
'            
'            ' DB닫는다.
'            conn.Close
'            set conn = nothing
'            
'            ' 에러메시지 표시하는 페이지로 리디렉트
'            Response.Redirect "paypal_error.asp"
'        end if
'        
'        ' 에러가 없다면 거래확인
'        conn.CommitTrans 
'    end if
    
    ' 테이블 닫고
    rs.Close
    set rs = nothing
    
    ' DB도 닫고
    conn.Close
    set conn = nothing

    ' 지불의 무효 또는 환불(invalid payment or refunded) (다음중에 하나에 걸리면 그건 에러니까.......에러메시지를 뿌린다.)
    if bexist and instr("CANCELED_REVERSAL DENIED FAILED REFUNDED REVERSED", ucase(payment_status))>0 then
        Response.Redirect "paypal_error.asp"
    end if

    ' 해결되지 못한 주문이 있는가(not pending order)
    if ucase(payment_status) <> "PENDING" then
    
        ' 고객에게 확인 메일을 발송한다.
        msg = "<b>고객님은 " & myDomain & "에서 결제하셨습니다.<br><br><br>"
        msg = msg & "고객님께,<br>"
        msg = msg & "주문이 잘 이루어 졌음을 알립니다.<br>"
        'msg = msg & "If you need further help, please contact us at <a href=""mailto:" & myEmail & """>" & myEmail & "</a><br><br>"
        msg = msg & "감사합니다.<br>"
        SendEmail email, msg
    end if
else
    ' 고객에게 에러 메일을 발송한다.
    msg = "<b>고객님이 " & myDomain & "에서 결제 처리하는데 있어 오류가 발생했습니다.<br><br><br>"
    msg = msg & "고객님께,<br>"
    msg = msg & "고객님의 결제를 처리하는 과정에 문제가 발생했습니다. 고객님의 <a href=""www.paypal.com"" target=""_blank"">PayPal</a> 계정을 확인해 주시기 바랍니다.<br>"
    msg = msg & "도움이 필요하시면 <a href=""mailto:" & myEmail & """>" & myEmail & "</a>로 문의해주시기 바랍니다.<br><br>"
    msg = msg & "감사합니다.<br>"
    SendEmail email, msg
end if
%>

<html>
<body bgcolor="#ffffff">
<center>
    <table border="0" width="80%">
        <tr>
            <td align="left"><%=msg%></td>
        </tr>
    </table>
</center>
</body>
</html>



3. paypal_error.asp
<%@ Language=VBScript %>
<html>
<body bgcolor="#ffffff">
<center>
    <table border="0" width="80%">
        <tr>
            <td align="left">
                <b>페이팔을 통한 결제</b><br>
                <br>
                고객님께,<br>
                결제 처리중에 오류가 발생했습니다.
                저희에게 연락을 취해주시기 바랍니다.<br>
                <br>
                감사합니다.
            </td>
        </tr>
    </table>
</center>
</body>
</html>



4. paypal_cancel.asp
<%@ Language=VBScript %>
<html>
<body bgcolor="#ffffff">
<center>
    <table border="0" width="80%">
        <tr>
            <td align="left">
                <b>페이팔을 통한 결제</b><br>
                <br>
                고객님께,<br>
                결제 처리중에 오류가 발생했거나 취소되었습니다.
                고객님의 <a href="https://www.paypal.com" target="_blank">페이팔</a> 계정을 확인해 주시기 바라며,
                도움이 필요하시면 연락을 취해주시기 바랍니다.<br>
                <br>
                감사합니다.
            </td>
        </tr>
    </table>
</center>
</body>
</html>


참고자료
http://ozahir.tistory.com/902 
 

댓글목록

등록된 댓글이 없습니다.


Total 70건 2 페이지
  • RSS
기술자료 목록
50
전자결제   15681  2017-03-15 19:38 ~ 2020-03-31 15:05  
열람
전자결제   29628  2017-03-15 19:24  
48
전자결제   17993  2017-03-14 12:11  
47
전자결제   17535  2016-11-13 15:27 ~ 2019-01-11 18:09  
46
전자결제   27822  2016-03-11 18:59 ~ 2016-03-14 00:00  
45
전자결제   62848  2015-12-30 22:20  
44
전자결제   26397  2013-09-02 14:14 ~ 2014-09-12 00:00  
43
전자결제   46939  2013-07-04 15:33 ~ 2017-11-06 04:14  
42
전자결제   17454  2013-02-02 18:21  
41
전자결제   28229  2012-05-12 15:15  
40
전자결제   18665  2012-05-12 14:47  
39
전자결제   16164  2012-05-02 23:28 ~ 2014-01-10 00:00  
38
전자결제   31475  2012-04-26 00:36  
37
전자결제   13339  2012-04-16 04:35 ~ 2015-03-18 00:00  
36
전자결제   23853  2012-04-09 23:39 ~ 2021-11-19 11:19  
35
전자결제   14669  2012-03-20 20:32  
34
전자결제   15910  2012-03-20 20:09  
33
전자결제   18418  2012-03-20 20:08 ~ 2017-03-10 00:00  
32
전자결제   12270  2012-03-02 14:34  
31
전자결제   18242  2011-11-04 16:22 ~ 2011-11-05 00:00  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.