検索
ホームページphp教程php手册PayPal网站付款标准版(for PHP),paypal标准版

PayPal网站付款标准版(for PHP),paypal标准版

简单整理一下PHP项目整合PayPal支付功能。

一、表单的构建:

<span><</span><span>form </span><span>method</span><span>="post"</span><span> name</span><span>="form"</span><span> action</span><span>="https://www.paypal.com/cgi-bin/webscr"</span><span>></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="rm"</span><span> value</span><span>="2"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="cmd"</span><span> value</span><span>="_xclick"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="business"</span><span> value</span><span>="商家账号"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="return"</span><span> value</span><span>="返回网址"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="cancel_return"</span><span> value</span><span>="取消返回网址"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="notify_url"</span><span> value</span><span>="用于接收PayPal发送的即时付款通知的URL,必须是有效的URL"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="item_name"</span><span> value</span><span>="物品名称"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="item_number"</span><span> value</span><span>="可用于跟踪购买或捐赠的传递变量,在付款完成时传回给您"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="amount"</span><span> value</span><span>="物品的价格(购物车中所有物品的总价格"</span><span>/></span>
<span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="currency_code"</span><span> value</span><span>="币种"</span><span>/></span>
<span></</span><span>form</span><span>></span>

二、IPN验证部分

<?<span>php
</span><span>class</span><span> paypal {
  </span><span>var</span> <span>$ipn_data</span> = <span>array</span>();         <span>//</span><span> array contains the POST values for IPN</span>
  <span>var</span> <span>$fields</span> = <span>array</span>();           <span>//</span><span> PayPal接受到客户的付款后,Paypal会向网站POST回客户提交的表单信息,<br />                     //  必须将收到的POST信息对原样返回给PayPal进行验证,<br />                     //  内容有:item_name=iPhone 6,quantity=1,amount=499,currency_code=USD等所有表单信息,<br />                     // 在调用验证IPN之前事先需要初始化好</span>
  <span>var</span> <span>$paypal_url</span> = 'https://www.paypal.com/cgi-bin/webscr';<span>//</span><span>sandbox:https://www.sandbox.paypal.com/cgi-bin/webscr</span>
  <span>
  </span><span>function</span> validate_ipn() {<span>//</span><span>验证IPN
      // parse the paypal URL</span>
      <span>$url_par</span>=<span>parse_url</span>(<span>$this</span>-><span>paypal_url);
      </span><span>//</span><span> generate the post string from the _POST vars aswell as load the
      // _POST vars into an arry so we can play with them from the calling
      // script.</span>
      <span>$post_str</span> = ''<span>;
      </span><span>foreach</span> (<span>$_POST</span> <span>as</span> <span>$field</span>=><span>$value</span><span>) {
        </span><span>$this</span>->ipn_data["<span>$field</span>"] = <span>$value</span><span>;
        </span><span>$post_str</span> .= <span>$field</span>.'='.<span>urlencode</span>(<span>stripslashes</span>(<span>$value</span>)).'&'<span>;
      }
      </span><span>$post_str</span>.="cmd=_notify-validate"; <span>//</span><span> append ipn command
      // open the connection to paypal</span>
      <span>$fp</span> = <span>fsockopen</span>(<span>$url_par</span>[host],"80",<span>$errnum</span>,<span>$errstr</span>,30<span>);
      </span><span>if</span>(!<span>$fp</span><span>) {
        </span><span>//</span><span> could not open the connection.</span>
        <span>return</span> <span>false</span><span>;
      } </span><span>else</span><span> {
        </span><span>//</span><span> Post the data back to paypal</span>
        <span>fputs</span>(<span>$fp</span>, "POST ".<span>$url_par</span>[path]." HTTP/1.1\r\n"<span>);
        </span><span>fputs</span>(<span>$fp</span>, "Host: ".<span>$url_par</span>[host]."\r\n"<span>);
        </span><span>fputs</span>(<span>$fp</span>, "Content-type: application/x-www-form-urlencoded\r\n"<span>);
        </span><span>fputs</span>(<span>$fp</span>, "Content-length: ".<span>strlen</span>(<span>$post_str</span>)."\r\n"<span>);
        </span><span>fputs</span>(<span>$fp</span>, "Connection: close\r\n\r\n"<span>);
        </span><span>fputs</span>(<span>$fp</span>, <span>$post_str</span> . "\r\n\r\n"<span>);
        </span><span>//</span><span> loop through the response from the server and append to variable</span>
        <span>while</span>(!<span>feof</span>(<span>$fp</span><span>)) {
          </span><span>$this</span>->validate_ipn_response .= <span>fgets</span>(<span>$fp</span>, 1024<span>);
        }
        </span><span>fclose</span>(<span>$fp</span>); <span>//</span><span> close connection</span>
<span>     }
    </span><span>if</span> (<span>eregi</span>("VERIFIED",<span>$this</span>-><span>validate_ipn_response)) {
      </span><span>return</span> <span>true</span><span>;
    } </span><span>else</span><span> {
      </span><span>return</span> <span>false</span><span>;
    }
  }
}
</span>?>

即时付款通知(IPN)示意图如下:

 

1) 客户点击“付款”按钮向您的账户付款;

2) PayPal 接受到客户的付款后,向您的服务器指定的 URL 通过 POST 方式发送 IPN;

3) 在您的服务器收到 IPN 之后,您必须将收到的 POST 信息对原样返回给 PayPal 进行验证,PayPal 通过此方法帮您防范欺骗或“中间人”攻击;(对IPN信息的验证过程我们称之为通知确认)

4) PayPal 返回验证信息,通过验证为 VERIFIED,不通过则为 INVALD;

5) 根据验证信息处理付款明细。

相关资料:

开发者:https://developer.paypal.com/
即时付款通知:https://www.paypal-biz.com/development/documentation/PayPal_IPN&PDT_Guide_V1.0.pdf
paypal标准版:https://www.paypal-biz.com/development/documentation/PayPal_WPS_Guide_CN_V2.0.pdf 

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
i站是什么i站是什么Sep 26, 2022 pm 04:32 PM

i站是名叫“iwara”的网站,又称“爱弹幕”,是一家弹幕视频分享网站,主要分享动漫资讯、番剧、漫画小说、游戏等资源,可以说是一家二次元文化圈网站。i站里的漫画资源非常丰富,且基本都是免费的,很多网上热议漫画、最新的漫画包括日韩漫画都可以在i站观看。

使用PHP和PayPal实现在线支付使用PHP和PayPal实现在线支付May 11, 2023 pm 03:37 PM

随着互联网的迅猛发展,越来越多的企业选择将产品和服务线上销售,这使得在线支付成为企业的一大需求。而PayPal作为世界领先的在线支付平台,也成为了许多企业的首选。本文将介绍如何使用PHP和PayPal实现在线支付。我们将分为以下几个步骤:创建PayPal账号和应用集成PayPalSDK获取付款Token处理付款处理付款确认创建PayPal账号和应用要使用P

paypal无法付款的原因是什么paypal无法付款的原因是什么Sep 01, 2023 pm 05:00 PM

paypal无法付款的原因是账户余额不足、付款方式被限制、交易被风控系统拦截、收款方账户问题、网络连接问题以及用户账户异常等。详细介绍:1、账户余额不足,可以通过银行转账或信用卡充值来增加账户余额;2、付款方式被限制,查看付款设置并确保所选的付款方式没有受到限制;3、交易被风控系统拦截,联系PayPal客服,提供相关信息以证明交易的合法性,并请求解除付款限制等等。

itch.io是什么网站itch.io是什么网站Sep 07, 2022 am 11:47 AM

“itch.io”是一个专注于独立游戏内容的数字商店网站;该网站是由程序员出身并且尝试过游戏开发的“Leaf Corcoran”创立,开发者可以在这里上传自己的游戏售卖,玩家可以在这里找到自己喜欢的产品。

a站和b站的区别是什么a站和b站的区别是什么Sep 16, 2022 am 11:41 AM

区别:1、a站全称叫“acfun”,b站全称叫“bilibili弹幕网”。2、a站的内容比较综合,主要是以视频为载体,逐步发展成基于原作进行二次创作的一种形式;而B站更偏向于acg,更有针对性的内容带来的是数量大但是范围更狭窄的受众群体。3、A站用户群体年龄稍稍偏大,热情有余行动力不足;B站用户普遍年龄偏小,戾气较重但集群性很强。

GCash launches PayPal's stable coin, allowing Filipinos to trade cryptocurrency protected from price volatilityGCash launches PayPal's stable coin, allowing Filipinos to trade cryptocurrency protected from price volatilityJul 31, 2024 am 06:36 AM

GCash on Tuesday said PayPal USD (PYUSD) tokens could now be traded via GCrypto, an in-app feature powered by the Philippine Digital Asset Exchange, at “low transaction fees.”

后缀为org的是什么网站后缀为org的是什么网站Oct 28, 2022 am 11:18 AM

后缀为org的域名为组织机构网站或团体网站。org全称Organizations,是组织、团体的意思,它是互联网的通用顶级域之一,适用于各类组织机构(包括非盈利团体)。“.org”作为全球第三大国际顶级域名,文化教育、医药、工业、行业协会、网络联盟,大型跨国企业以及各类其他网站都很重视保护它;而且org域名作网站权重高,各大搜索引擎对它很友好,做网站拉流量SEO优化有巨大优势。

paypal无法付款是什么原因paypal无法付款是什么原因Oct 16, 2023 pm 03:23 PM

paypal无法付款是因为付款方式、账户余额、Paypal余额、付款信息、网络问题、Paypal系统、商家和浏览器等问题造成的。详细介绍:1、付款方式,请确使用的付款方式已经添加到Paypal账户中;2、账户余额,确保Paypal账户余额足够支付订单金额;3、Paypal余额,查看账户状态,了解是否存在异常情况;4、付款信息,确保输入的付款信息正确无误,如信用卡号、到期日期等。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。