实现支付宝支付的准备工作:
1.与支付宝签约,成为支付宝商家
签名完成后,支付宝会向我们提供一些必要的数据
商户编号:
账户ID:支付宝账户
签订合同需要营业执照
2. 获取支付相关的私钥和秘钥。这两件事都是为了数据安全。
以上这些事情只要合同签订成功就可以看到。
3.下载支付宝的SDK
下载地址:
以上部分是准备工作,从这里开始整合
4、下载后,打开客户端Demo—>iOS SDK Demo,解压,打开机箱,运行程序。
可能会出现错误说YES,只要搜索到它并将其更改为NO,然后清除并运行即可。
5.解压Demo中的SDK并解压以下文件
,.h,.m,Util,.a,.a,.
将这些文件放入一个文件夹中,然后将它们添加到项目中。 .h和.m这两个文件可以添加也可以不添加。
添加进去编译发现错误
5.1 添加.pch 文件。打开项目—>右键—>iOS—>—>PCH文件—>选择第一个选项—然后在新创建的PCH文件中添加#。
PCH 文件现在无法使用。您需要添加 PCH 文件。点击项目—>—>右侧搜索pref—> .0
将第二个选项后面的NO改为YES,直接复制第三个选项路径中的项目名称。
比如我这里的项目名称是:01支付宝集成
将此名称复制到路径中,双击该选项会出现一个白框,将名称粘贴到这个白框中,然后
后面是/.pch,填写完毕后输入应该是01支付宝集成/.pch
01支付宝整合项目名称
即项目名/.pch的格式
到这里第一步就完成了
5.2 导入相应的依赖库。其中大部分不需要进口,但为了安全起见,我们全部进口。
点击支付宝的Demo,点击项目->->第三个Link即可查看官方导入的依赖库
然后我们也导入对应的依赖库,点击+号添加对应的依赖库。
注意,以后有些库的后缀名已经从libc++改过来了。到 libc++.tbd。
这里附上需要添加的依赖库的截图。
也就是说,注意不要以为添加库的时候就没有了。后缀名只是更改了。
5.3 添加对应的库后,编译时会出错,提示#This file is not 。
因为以后导入会出现问题。之前导入没有问题。只需配置一下即可。
因为在导入.a文件时,它找不到里面的头文件,也就是说它找不到.a文件中的头文件,也就意味着它找不到文件路径。如何配置呢?配置它并指定它。只是路径
点击项目->然后在右侧搜索S。双击第二个选项后,点击左下角的+号,然后填写$()/01支付宝集成/支付宝SDK。
注意
01 支付宝集成成为您的项目名称
SDK是您导入的 SDK文件夹的名称。
然后清除一个并再次运行
5.4 除了上面提到的依赖库之外,还需要一个框架,支付宝的SDK框架。在支付宝的示例程序中,有一个名为.右键show in找到这个框架,然后复制它,然后点击你项目中的支付宝SDK文件。显示,粘贴。进入目录,此时项目中不会显示这个框架,然后点击支付宝SDK文件名,右键添加文件到“”文件目录就会打开, SDK(你自己的支付宝SDK的名称)文件夹是我们刚刚导入的文件夹名称)->选择.,点击右下角的add,然后添加。当你想使用它时,只需导入头文件即可
# 你可以使用它
到这一步,就意味着支付宝已经融入到项目中了,完成!
1.使用官方Demo
需要配置的基本信息:
打开“.m”文件并编辑以下三个参数。
2.将支付宝集成到自己的项目中
1. 开始。为了方便快速开发,将.zip文件解压。和 。
将Demo中的以下文件复制到自己的工程文件夹中,并导入到工程项目中。
2. 在“链接方式”选项卡中,添加以下依赖项:
3、如果您的应用是基于9.0编译的,那么为了适应iOS 9.0中App(ATS)的HTTP限制,您需要对支付宝的请求地址进行例外处理,并在应用的相应信息中添加以下配置。列表。
4、需要支付功能的.m中
#".h"#".h"##".h"
根据您的APP,您可以修改以下参数:
3、注意事项
1.缺少头文件
如果发生这种情况,请添加:
##
消除错误
2. '/asn1.h'文件不存在
解决方法如下:在你的目录下添加支付宝SDK(路径),即“ ”只需设置$()/项目名即可。
3、使用支付宝客户端支付后,无法返回原APP系统。
(1) 在.m文件中,
#
- (BOOL):( *)应用程序 :( *)网址 :( *)
[[ ]
:网址
:^(*){
(@" = %@",);//返回支付结果//【由于跳转到支付宝客户端支付的过程中,商户APP很可能被系统在后台杀掉,所以支付接口会被无效的。请让商户处理返回的回调结果,处理逻辑与该方法相同】}];;
(2)点击项目名称,点击“信息”选项卡,在“URL”选项中点击“+”,在“URL”中输入您的APP标识,如:“”。 “”来自以下代码:
付款代码中:
此处输入的 URL 用于测试演示。实际商户APP需单独填写。建议对商家的APP有一定的认同度。一定不能与其他商户应用重复,否则支付宝可能会返回,导致无法正确跳回商户应用。
4、可能出现的错误:
1:支付宝交易订单处理失败
注意:支付宝的金额只能精确到分,所以不能使用小数点后两位以上的浮点数。
所以:应该使用 %.2f
2:支付宝支付失败:4000
检查订单的各个参数,例如订单ID错误地写成了浮点类型。
3:其他
检查各种参数和公钥等。
交互过程
这个流程和支付宝的流程类似。如果你明白的话,其实是一样的。
微信支付流程
首先需要明确一下流程:
用户使用APP客户端选择产品、下订单。
商户客户端(即你制作的APP)将用户的商品数据传输至商户服务器,请求生成支付订单。
商户后台调用统一下单接口向微信服务器发送请求。微信服务器生成预付费订单并返回给商户后台。
商户后端将此返回给商户客户端。
用户点击确认付款。此时商户客户端调用SDK打开微信客户端,进行微信支付。
微信客户端向微信服务器发起支付请求,并返回支付结果(该参数用于两者之间的交互。微信服务器需要验证微信客户端传递的参数与第三步生成的ID是否一致) )。
用户输入支付密码后,微信客户端提交支付授权,与微信服务器交互,完成支付。
微信服务器向微信客户端发送支付结果提示,并异步向商户服务器发送支付结果通知。
商户客户端通过支付结果回调接口查询支付结果,并向后台检查支付结果是否正确,后台返回支付结果。
商户客户端显示支付结果,完成订单,发货。
虽然看起来有点多,但是理解起来并不复杂。这和我们平时用手机买东西是一样的。我们的客户需要做的就是
启动微信客户端发起支付
显示付款结果
整合过程
首先是下载SDK。
微信SDK下载
建议下载头文件和示例看一下。 (吐槽,官方的例子太丑了,看得我头晕!评论不多……鄙视他们)
导入微信支付SDK库
只需导入上面下载的iOS头文件和库并下载SDK包即可。我这里的是SDK1.6.2。然后需要链接到依赖库。在 —> —> 链接方式 — 单击 + 号 -> 搜索您需要的内容。系统库。
。
libz 待定
.0.待定
。
。
设置网址
注册微信平台APP时,会给出一个唯一的识别标识符()。这一点在APP开发步骤中都有明确的说明。您需要填写网址。
网址
注册于
如下:
- (布尔):(*) :(*) {
// 为了 。
/**
* 使用微信终端注册ID。这里一般的建议是写成宏,这样方便维护。 @“测试演示”不需要使用。这里的ID是假的,需要更改以及里面的URL Type。
*/
[ :@"" :@"测试演示"];
是的;
处理微信启动时通过URL传递的数据
//前两种方法已被iOS9弃用。如果是.2在线的话,就会出现无法进入微信的回调方法。这就是原因。本来不想写这两个老方法,但是在官方demo上看到这两个之后,我决定也写下来。 。 。 。
//保留9.0之前的方法,以适应较低版本。
- (BOOL):( *) :( *)url{
[:网址:自己];
- (BOOL):( *) :( *)url :( *) :(id){
[:网址:自我];
//9.0之后的方法
- (BOOL):( *)应用程序 :( *)网址 :( *){
//这里判断发起的请求是否是微信支付。如果是的话,使用该方法调出微信客户端的支付页面(://pay前面的字符串是你的,)
[:网址:自我];
//微信SDK自带的方法,处理微信客户端操作完成后返回程序后的回调方法,并显示支付结果。
-(无效) :(*)resp
//启动微信支付
* = [ :@:%d, 分别];
if([resp :[ ]]){
//支付返回结果。实际支付结果需要在微信服务器上查询。
(分别){
案例0:
=@支付结果:成功! ;
案例1:
= @支付结果:失败! ;
案例2:
= @用户已退出支付! ;
:
= [ :@支付结果:失败! = %d, = %@, 分别, 分别];
最重要的就在这里! !
在调用微信支付之前,您需要进行下单、签收等操作,以获取微信支付所需的参数。为了提高安全性,下单和签名操作通常在后台完成。如果您在前台进行,如果您的信息被捕获并更改,您将不高兴。 。 。 。 。
所需参数包括:(商户号)、(预付订单ID)、(参与签名的随机字符串)、(参与签名的时间戳)、sign(签名字符串)。
使用点击支付控制器中的核心代码调用微信客户端支付。这些参数都是在后台传递给你的。添加了注释,应该很容易理解。
# 标记微信支付方式
- (空白){
//需要创建这个支付对象
*请求= [[]初始化];
//由用户微信ID组成的唯一标识符,用于验证微信用户
要求。 =@“”;
// 商户ID,注册时给定
要求。 =@“”;
// 预付订单是后台与微信服务器交互后,由微信服务器传给你的服务器,你的服务器传给你。
要求。 =@“”;
// 根据财付通文档填写的数据和签名
//这是特殊的并且是固定的。只能是req。 = 标志=
要求。 =@“”;
// 随机编码,为了防止重复,在后台生成
要求。 =@“”;
// 这是一个时间戳,也是后台生成的,用于验证支付。
* = @"";
要求。 = .;
// 这个签名也是在后台完成的
req.sign = @"";
//向微信发送请求并等待微信返回
[:要求];
这个JSON中的数据(上面的参数)就是后端需要传递给你的。至于怎么去,后台也有文档,让他看一下吧~~~
“”:“”,
“”:“”,
"": "标志=",
“”:“”,
“”:“”,
“”:“”,
“符号”: ””
统一订单API
打开支付界面
此时,如果不出意外,您应该可以正常付款了。过程是最重要的。一旦你理解了它,你就会知道该怎么做。强烈建议有需要的朋友先理清思路,不要急于下手。
PS:本文中签名是在后台完成的。如果你需要在你的客户端上做,可以参考这篇文章和这篇文章。他们的签名是在客户端上完成的,并且写得更详细。 。
可能出现的问题
1.如果支付完成后您还停留在微信上,请检查以下设置。
2、微信客户端可以打开,但是打开后中间只有一个白色的“确定按钮”。点击后会返回给客户端。如果是这种情况,应该是参数有问题,参数已经过期或者不是真实的ID。代码没有问题。特别注意的是,微信需要两次签名,两次~~~~
3.如果友盟是在APP中使用或者用于分享,则不需要导入SDK,否则会出现一些奇怪的问题,比如打不开手机微信客户端、微信客户端网页、打不开等打开微信客户端网页。但转眼就过去了。 。 。这基本上都是因为共享SDK已经包含了微信的SDK。所以如果出现奇怪的错误,检查一下两者是否有冲突!
4、微信支付的单位是积分。受过骗的人都知道这一点。 。 。 。为什么,
如果集成过程中遇到任何问题,可以一起讨论。我会把这些记录下来,如有错误请指出!谢谢!