我们讲了,通过八图片平台,可以生成一个带有二维码的图片链接,扫码支付后就会跳转到一个指定的网页。有人可能会问,这个支付后跳转网页的功能有什么用呢?用处可大了,比如,我可以在网页上放置软件,视频,或者一些下载资源等等,然后用户扫码支付之后,就可以跳转过去看到了,相当于自动的出售虚拟资源了,自动成交。网页如果自己不会建的话,可以用第三方的网页,比如有道笔记,腾讯文档等,都是有固定网址的,都可以设置成跳转后的网页。
上一次讲的是通过八图片平台的api接口,生成这样一个可以支付后跳转的图片链接,但是需要平台进行审核,审核通过之后才能显示,还要等,所以有些不太方便。这次主要是实现,不用经过平台审核,生成可以直接显示出来的图片链接。
当然,如果你不需要用api,也可以登录他们平台,直接上传图片并设置跳转的网址,手动生成二维码的图片链接,也是可以的。我这里主要是记录用api自动生成。因为用程序自动生成,才可以更方便的将这个功能集成到我自己的系统里。
我们首先打开八图片的api接口文档,看一下免审核上传图片接口的介绍:
上面说明,要先设置网页地址和支付地址,那我就下载一个他们的demo源码,然后直接配置就行了。我就先选择易支付的源码,源码下载地址:https://www.8tupian.com/interface/4.html
为什么要用易支付?因为易支付的平台比较多,随便找一个就可以直接测试了。但是如果真正使用的时候,还是建议找一个可靠的易支付平台,因为网上的易支付平台太多了,参差不齐,一定要擦亮双眼。
下载好源码之后,打开里面配置说明,然后按照步骤进行配置:
先上传源码,然后配置epay.config.php中的参数:
最后在八图片的api接口页面,设置好网页地址和支付地址:
设置好之后,就可以直接用api上传了。不过接口地址和上次的不一样,这次免审核的接口地址是:
参数和返回值都是一样的:
参数1:act,由于用的模式三,所以固定为up3
参数2:pic,你要设置的图片的网络地址(这个图片有什么用呢?因为支付二维码会附着在这张图片的右下角,所以一定要设置一张图片)
参数3:texturl,支付后需要跳转的网址
参数4:price,图片价格,用户需要支付多少钱,才能跳转到网址
参数5:pid,商户的pid(在八图片的api接口页面获取)
参数6:key,商户的秘钥key(在八图片的api接口页面获取)
返回值:json格式,code为0,表示成功,其他值是失败。
我以“支付后跳转到百度首页”为例,用php实现了调用方法:
<?php
$pid = {你的商户id};
$key = {你的商户key};
$url = "http://web.8tupian.com/api/c.php?act=up3&pic=https://img-blog.csdnimg.cn/9aec9e1fd0f4404897e61a8a9d5aff23.png&texturl=http://www.baidu.com&price=100&pid=" . $pid . "&key=" . $key;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$ret = json_decode($response, true);
if ($ret['code'] != 0)
{
//失败了,打印出失败原因
echo $ret['msg'];
die (0);
}
else
{
//成功了,打印出生成的图片的网络地址
echo $ret['picurl'];
die (0);
}
?>
调用成功后,会返回一个图片链接,打开可以直接显示出来。
同样,调用api接口的速度不宜过快,两次调用之间最好加上一个时间间隔,如下:
sleep(1000);
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这