贝宝php支付接口,php做贝宝(paypal)支付接口

事实上,paypal可以说分两个 :

国际的这个只支付 美元 收付 ! 而中国的这个支持 人民币 收付 !

这个先清楚了 !

流程思路:

事实上贝宝帐号上直接就可以得到一个支付接口的:

如下:

< input type="image" src=\'#\'" border="0" alt="贝宝— 最安全便捷的在线支付方式!">

< input type="hidden" value="_cart">

< input type="hidden" value="">

< input type="hidden" value="asss">

< input type="hidden" value="df">

< input type="hidden" value="10.00">

< input type="hidden" value="0">

< input type="hidden" value="1">

< input type="hidden" value="CNY">

< input type="hidden" value="1">

< input type="hidden" value="kgs">

< input type="hidden" value="PP-ShopCartBF">

< /form>

直接使用这种代码有些不方便! 要一个个添加才可以, 不过想一想, 这段代码, 也可以动态生成的, 用php,asp都可以,只要里面授的一些值改变一下,你的商品的支付代码就可以通过读取数据库来生成了,也不用一个个来写入了!!

我是这样写的:

读取数据库:rs 这个大家应该都知道的吧

"> '你的paypal帐号

"> '你的网站上的购物车上的订单号

'USD 美元 ! CNY 人民币 !

"> '产品价格

theurl=Left(theurl,InstrRev(theurl,"/"))

response.write theurl&"inc/paypalreturn.asp"

%>">

< input type="submit" value="Use Paypal Payment">

< /form>

这个支付肯定是可以的? 至于是否支付成功, 做一个认证然后更改订单状态 !

这个认证就是在paypalreturn.asp这个页里来实现:

代码如下 :

paypalreturn.asp:

mainpath="paypal.mdb"

Set conn = Server.CreateObject("ADODB.Connection")

connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(mainpath)

conn.Open connstr

Function viate(itemnumber,paymentid,payamount,payeremail)

set rs=server.CreateObject("adodb.recordset")

sql="select * from orders where ordernum='"&itemnumber&"'" '这里是订单表 如果会员支付成功, 更改订单状态为已付款 !

rs.open sql,conn,1,3

If Not(rs.bof Or rs.eof) Then

rs("orderline")="3"

rs("paymentid")=paymentid

rs("payamount")=payamount

rs("payeremail")=payeremail

rs("paydate")=Now()

rs.update

Else

response.write ""

End If

rs.close

Set rs=Nothing

End Function

function urldecode(encodestr) '这个函数是对paypal返回值的urldecode解码的

newstr=""

havechar=false

lastchar=""

for i=1 to len(encodestr)

char_c=mid(encodestr,i,1)

if char_c="+" then

newstr=newstr & " "

elseif char_c="%" then

next_1_c=mid(encodestr,i+1,2)

next_1_num=cint("&H" & next_1_c)

if havechar then

havechar=false

newstr=newstr & chr(cint("&H" & lastchar & next_1_c))

else

if abs(next_1_num)<=127 then

newstr=newstr & chr(next_1_num)

else

havechar=true

lastchar=next_1_c

end if

end if

i=i+2

else

newstr=newstr & char_c

end if

next

urldecode=newstr

end Function

str1=Trim(request.querystring("tx"))

str2="&at=RDqubRmDD5AWgXJh5q2HMHKmcetP4Q8Ulj9AaPIx0B1l3f9aQiv9EPN1084" '这里是Paypal身份标记 获取方法

"

paypalurl=paypalurl&str

'response.write "
"&paypalurl&"
"&"
"&"
"

Set objHttp=Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")

objHttp.setOption 2, 13056

objHttp.open "POST",paypalurl,False,"",""

objHttp.send()

ResponseTxt = objHttp.ResponseText '示例下面有写

Set objHttp=Nothing

'-------------------------------------------------核对取得值

ResponseTxt=UrlDecode(ResponseTxt) '将返回值解码并赋给 responsetxt

If Mid(ResponseTxt,1,7) = "SUCCESS" Then '取得返回值的状态, sucess表示支付成功 ! Fail 表示支付失败 ! 返回值只有这两种情况 !

ResponseTxt = Mid(ResponseTxt,9) '取得除了前9个字符的返回值,并返回给responsetxt

sParts = Split(ResponseTxt, vbLf) '将返回值以vbLf(在vb里面这是回车的意思)分开,并赋给一个数组sParts

iParts = UBound(sParts) - 1 '对这个数组分离取值, 后面的应该都可以看得懂的吧!

ReDim sResults(iParts, 1)

For i = 0 To iParts

aParts = Split(sParts(i), "=")

sKey = aParts(0)

sValue = aParts(1)

sResults(i, 0) = sKey

sResults(i, 1) = sValue

Select Case sKey

Case "first_name"

firstName = sValue

Case "last_name"

lastName = sValue

Case "item_name"

itemName = sValue

Case "mc_gross"

mcGross = sValue

Case "mc_currency"

mcCurrency = sValue

Case "txn_id"

liushuihao = Trim(sValue)

Case "payer_email"

payeremail=Trim(sValue)

End Select

Next

Call viate(itemName,liushuihao,mcGross,payeremail) '这里调用viate()这个function 进行认证, 并对这个订单状态进行更新 !

Msg="Pay for success! Please wait for delivery! "&"\n \n Your Order Number: "&itemName&" !"

Else

Msg="Sorry ! Your operating error! Please contact website administrator !!"

End If

response.write "" '支付完毕返回 用户信息页 !

%>

ResponseTxt 示例:

SUCCESS mc_gross=44.00 protection_eligibility=Eligible address_status=confirmed payer_id=TMTNG8HATR5Y6 tax=0.00 address_street=1+Main+St payment_date=07%3A32%3A55+Dec+22%2C+2008+PST payment_status=Completed charset=windows-1252 address_zip=95131 first_name=Test mc_fee=1.58 address_country_code=US address_name=Test+User custom= payer_status=verified business=q2_1227410340_biz%40163.com address_country=United+States address_city=San+Jose quantity=1 payer_email=q1_1227410229_per%40163.com contact_phone= txn_id=7U833557W75672524 payment_type=instant last_name=User address_state=CA receiver_email=q2_1227410340_biz%40163.com payment_fee=1.58 receiver_id=5Q2AS9DBJGWLC txn_type=web_accept item_name=20081222225300 mc_currency=USD item_number= residence_country=US handling_amount=0.00 transaction_subject=20081222225300 payment_gross=44.00 shipping=0.00

说明一下: 可能你的paypal帐号也没钱来做测试,所在paypal想的还是很周到的, 做一个与paypal一样功能的二级域名的网站:

接口:https://www.sandbox.paypal.com/cgi-bin/webscr

在这里注册一个帐号后, 在里面可以设置两个测试帐号, 这两个测试帐号里的钱是用不完的, 你可以拿来做测试 ! 相关资料: 查看

注:

Paypal的提交时的字段与返回的字段含义

’========================================================

’mc_gross 交易收入

’address_status 地址信息状态

’paypal_address_id Paypal地址信息ID

’payer_id 付款人的Paypal ID

’tax 税收

’address_street 通信地址

’payment_date 交易时间

’payment_status 交易状态

’charset 语言编码

’address_zip 邮编

’first_name 付款人姓氏

’address_country_code 国别

’address_name 收件人姓名

’custom 自定义值

’payer_status 付款人账户状态

’business 收款人Paypal账户

’address_country 通信地址国家

’address_city 通信地址城市

’quantity 货物数量

’payer_email 付款人email

’txn_id 交易ID

’payment_type 交易类型

’last_name 付款人名

’address_state 通信地址省份

’receiver_email 收款人email

’address_owner 尚未公布/正式启用

’receiver_id 收款人ID

’ebay_address_id 易趣用户地址ID

’txn_type 交易通告方式

’item_name 货品名称

’mc_currency 货币种类

’item_number 货品编号

’payment_gross 交易总额[只适用于美元情况]

’shipping 运送费

’======================================================== ’主要参数: ’add:一次只能购买单种商品 ’upload:可以购买多种商品 ’购物车 ’ ’卖家的帐户 ’ ’商品名 ’ ’商品编号 ’ ’商品价格 ’ ’商品数量-针对每一种商品 ’ ’货币类型 CNY:人民币,USD:美元 ’ ’取消交易并要返回的位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值