paypal、webpay、 ios/android应用内支付的 实现方法

4
特辑2 支付 入门 PayPal、WebPay、 iOS/Android 应用内支付的 实现方法 Web 服务或智能手机应用程序中实现的支付,其本质上是关于资金的处理,所以开发者很容 易感觉惶恐不安,不明白自己应该知道什么、怎么做才算是万全之策。本特辑以在 Web 上最为广泛 使用的信用卡支付为核心,向大家介绍将信用卡支付整合进自己的网站或者智能手机应用所必需的知 识和方法。另外,在了解支付和信用卡基础知识并梳理了信息安全的相关知识后,还会介绍在世界范 围内使用的 PayPal iOS/Android 应用内支付,以及具备 RESTful Web API WebPay 具体的实现方法。 第1章 第2章 第3章 第4章 第5章 第6章 支付的基础知识 支付手段、第三方支付服务、支付时效 ●滨崎健吾 ………………………………………………………………………………………………………… 37 信用卡的基础知识 从信用卡卡号的编排规则到电子商务的相关法律 ●曾川景介 ………………………………………………………………………………………………………… 40 信用卡支付的信息安全 信息泄漏对策的要点和国际信息安全标准 PCI DSS ●久保渓 …………………………………………………………………………………………………………… 47 实现 PayPal 支付 跳转式标准版 Web 支付和嵌入式加强版 Web 支付 ●久保渓 …………………………………………………………………………………………………………… 52 实现 WebPay 支付 使用 RESTful Web API 实现信用卡支付 ●滨崎健吾 ………………………………………………………………………………………………………… 56 实现在 iOS/Android 应用内支付 In-App Purchase 和 Google Play In-app Billing ●曾川景介、滨崎健吾 ………………………………………………………………………………………… 62

Upload: others

Post on 27-Apr-2022

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PayPal、WebPay、 iOS/Android应用内支付的 实现方法

36 37

特辑2

支付入门 PayPal、WebPay、

iOS/Android应用内支付的实现方法

在Web服务或智能手机应用程序中实现的支付,其本质上是关于资金的处理,所以开发者很容

易感觉惶恐不安,不明白自己应该知道什么、怎么做才算是万全之策。本特辑以在Web上最为广泛

使用的信用卡支付为核心,向大家介绍将信用卡支付整合进自己的网站或者智能手机应用所必需的知

识和方法。另外,在了解支付和信用卡基础知识并梳理了信息安全的相关知识后,还会介绍在世界范

围内使用的PayPal和 iOS/Android应用内支付,以及具备RESTful Web API的WebPay具体的实现方法。

第 1章

第2章

第3章

第4章

第5章

第6章

支付的基础知识支付手段、第三方支付服务、支付时效

●滨崎健吾 ………………………………………………………………………………………………………… 37

信用卡的基础知识从信用卡卡号的编排规则到电子商务的相关法律

●曾川景介 ………………………………………………………………………………………………………… 40

信用卡支付的信息安全信息泄漏对策的要点和国际信息安全标准PCI DSS

●久保渓 …………………………………………………………………………………………………………… 47

实现PayPal支付跳转式标准版Web支付和嵌入式加强版Web支付

●久保渓 …………………………………………………………………………………………………………… 52

实现WebPay 支付使用RESTful Web API实现信用卡支付

●滨崎健吾 ………………………………………………………………………………………………………… 56

实现在iOS/Android应用内支付In-App Purchase和Google Play In-app Billing

●曾川景介、滨崎健吾 ………………………………………………………………………………………… 62

Page 2: PayPal、WebPay、 iOS/Android应用内支付的 实现方法

36 37

1支付的基础知识

支付手段、第三方支付服务、支付时效

引 言

这里所要讲的支付虽然统一称为Web服务

和应用程序的支付,但实际上提供给用户的支

付手段是多种多样的。而且,由于这类支付本

质上是关于资金的处理,所以无论是服务提供

者还是开发者,都会对于应该知道什么、怎么

做才算是万全之策感到惶恐不安,甚至实现支

付本身常常就会成为沉重的负担。

本特辑的作者们自己开发并运营了一个名

为WebPay A的信用卡第三方支付服务。基于这

些经验,在本次特辑中,我们将以在Web上使

用最多的、也是在Web服务和应用程序支付中

使用最多的信用卡支付为核心,向各位读者介

绍迅速引入信用卡支付所需要的知识和方法。

首先,本章并不局限于信用卡,而是介绍

支付的整体概念,例如都存在哪些支付手段、

支付的时机等。

支付手段

支付手段有如下几种。

信用卡

输入信用卡信息,由信用卡公司支付费用

A https://webpay.jp/

手机运营商支付

通过DOCOMO、au、软银等手机运营商

的认证,和手机话费合并支付费用

预付(使用代金券,电子货币)

可以在便利店等地方够买类似 iTunes Card这样的代金券。使用时,输入印在代金

券上的字符串来支付费用。使用像Suica、PASMO、Edy这类事先在卡内或者终端

充值的卡也包括在这种手段内

便利店支付

在设置于便利店的终端上打印账单或者

带着账单去便利店,在便利店的柜台支

付费用

货到付款

在商品送到的时候,由货物投递人代收

款项

银行转账、电子支付、挂号现金邮寄

使用各种方法直接支付费用

用户需要配合各种各样的支付手段来采取

相应的行动,因此我们在开发服务和应用程序时,

就要仔细考虑应该配合提供什么支付手段。例如,

在面向不大可能拥有信用卡的未成年用户开发

服务的时候,选择信用卡支付手段就不是一个

好的主意。

另外,后文中也会提到,在 iOS 和Android

中,支付手段的选择还会受到平台的约束。

第三方支付服务

试试在Web搜索中查找“第三方支付”就知

第 1章

支付的基础知识支付手段、第三方支付服务、支付时效

滨崎健吾 HAMASAKI Kengo译 /成勇 审读 /张荣晋WebPay股份有限公司 URL http://hmsk.me/ mail [email protected] GitHub hmsk Twitter @hmsk

Page 3: PayPal、WebPay、 iOS/Android应用内支付的 实现方法

38 39

特辑2 支付 入门PayPal、WebPay、iOS/Android应用内支付的实现方法

道,有很多支持上述支付手段的第三方支付服务。

自己开发的Web服务或应用程序很难直接和信

用卡公司或者便利店运营商签约,所以除了银

行转账和挂号现金邮寄等直接收费以外,基本

上都需要使用第三方支付服务。

不同的第三方支付服务所支持的支付手段

也不同。主要的第三方支付服务及其支持的支

付手段见表1。

不同的第三方支付服务,其支付手续费、

初始费用、月固定费等使用成本也是不同的。

主要信用卡第三方支付服务的收费情况我们将

在第2章说明。

还有,很多第三方支付服务并没有公开受

理支付处理这一部分的标准规范,因此使用服

务前的开发很难推进。

综上所述,我们必须斟酌以费用为首的各

种成本,结合要开发的服务和应用程序选择合

适的第三方支付服务。

iOS和Android的应用程序内支付

通过浏览器请求用户进行支付的Web应用

程序可以使用上面介绍的各种支付手段,但是

在 iOS和Android的应用程序内进行支付的话,

则不然。如表1所示,iOS的应用程序,只能使

用信用卡支付和 iTunes Card支付,而Android的

应用程序则只能使用信用卡支付和手机运营商

支付手段。

应用程序内支付虽然受到各自平台的限制,

但是另一方面,它可以比一般的第三方支付服

务更加轻松地处理全世界的货币。

另外,在 Android 应用程序上,手机运营

商支付机制等都已经完成封装,不用另外实现,

使用时几乎可以和信用卡支付采用一样的操作。

这对于仅使用信用卡支付的用户来说也具有一

定的吸引力。

iOS和Android应用程序内的支付将在第 6

章中详细说明。

支付时机

支付在什么时候进行、分几次进行也和服

务的设计有很深的关联。按照支付的时机,支

付大致可分成逐次(随时)支付、定期支付(订阅)

和按量支付这三种。

逐次(随时)支付

逐次支付是指在需要付款的时候才进行支

付。例如,购买达人出版社B的电子书、购买

LINEC应用内使用的虚拟货币时采用的就是这

种支付方式。

对于特定的信用卡信息只要发出支付请求,

基本上就可以完成支付处理。这样,开发服务

B http://tatsu-zine.com/C http://line.naver.jp/

表1 主要的第三方支付服务及其支持的支付手段

第三方支付服务 URL 支付手段

PayPal https://www.paypal.jp/ 信用卡支付

GMO Payment Gateway http://www.gmo-pg.com/信用卡支付、手机运营商支付、便利店支付、预付、货到付款等

Veritrans http://www.veritrans.co.jp/ 信用卡支付、便利店支付、预付等

econtext http://www.econtext.jp信用卡支付、手机运营商支付、便利店支付、预付等

WebPay https://webpay.jp/ 信用卡支付

iOS、OS X应用程序内支付(In App Purchase)

https://developer.apple.com/in-app-purchase/ 信用卡支付、预付(iTunes Card)

Android应用程序内支付(Google Play In-app Billing)

http://developer.android.com/google/play/billing 信用卡支付、手机运营商支付

Page 4: PayPal、WebPay、 iOS/Android应用内支付的 实现方法

38 39

1支付的基础知识

支付手段、第三方支付服务、支付时效

和应用程序时负担也会少一些。

在App Store和Google Play上购买应用时,

可以认为在下载的时候就执行了即时的支付处理。

这种情况下,在发布应用的时候指定价格即可,

不需要在应用程序中实现支付功能。

定期支付(订阅)

定期支付(订阅)是指以月固定费、年固定

费等形式定期进行支付。例如,在Cookpad D上

为了使用搜索人气菜谱等特殊功能,每个月都

要支付一笔费用,这种支付方式就是定期支付。

和逐次支付相比,定期支付需要更加严格

地管理用户的支付信息和更新周期。如果是信用

卡支付的话,在定期支付请求失败的时候,需要

加以处理,冻结收费服务、再次支付时重启服务,

将月度固定费用按天数折算等,像这样要注意的

事项很多,从而导致了开发成本的增加。

但是和逐次支付不同的是,定期支付可以

按照一定的周期要求支付使用费,而且如果用

户想要解除这个定期支付的话,就必须进行解

约操作,所以用户选择继续支付的情况比较多,

有利于长远利益。

按量支付

按量支付是指在一定的周期(例如以月为单

位)内结合时间、通信量等使用状态来计算金额

并进行支付。例如Amazon Web Services E等按

照服务器的使用时间或传输数据量来请求支付

使用费的服务采用的就是这种支付方式。

与支付相关的实现和定期支付(订阅)类似,

不过还需要结合实际的使用状态来计算金额。

信用卡支付——Web上最常用的支付手段

信用卡支付在日本国内的互联网支付中约

D http://cookpad.com/E http://aws.amazon.com/

占57.7% F,在用户进行直接支付的各种选择中,

它是最受欢迎的。

信用卡是基于国际标准发行的,所以成为

了在全世界收取款项的有效手段。另外,在美国,

信用卡是和生活息息相关的,和日本相比其在

Web上的使用率更高。所以,假如我们开发的

服务是要在美国推广的话,信用卡支付是必须

要选择的支付手段。

但是,和最受欢迎的支付手段相对的,就

是处理的信息也是最敏感的。在提供服务时,

信用卡号等个人信息的泄漏所造成的危害是很

大的风险。作为服务提供者,知道这些风险是

什么、信用卡的哪些信息该如何处理非常重要。

本特辑的结构

这里介绍一下本特辑后面的结构。

第2章总结了信用卡的基础知识,包括信用

卡是个怎样的存在,卡上记载的信息都意味了

什么等。

第3章结合保护信用卡及信用卡交易信息的

数据安全标准PCI DSS,详述了在处理信用卡信

息的时候该如何保护持卡人的个人信息。

第 4~6章介绍实际的实现示例。第 4章使

用PayPal、第 5章使用WebPay在Web服务中实

现信用卡支付。第 6章在 iOS和Android的应用

程序内实现支付。

本特辑的示例代码,可以在图灵社区的支

持页面G和GitHubH上获取。

如果在开发的Web服务和应用程序中实现

信用卡支付时,本次特辑的内容能够助你一臂

之力,那将是笔者莫大的荣幸。

F 出自总务省《信息通信白皮书平成24年版》 http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h24/

html/nc243140.htmlG 打开http://www.ituring.com.cn/book/1271,点击“随书下载”。H https://github.com/webpay/webdbpress76