我正在使用Stripe以及启用了sinatra和json的ruby脚本在iOS上为信用卡收费。该费用适用于iPhone 6模拟器,但不适用于运行9.3.5的iPad mini设备。
我尝试将baseURL字符串更改为我的IP地址,以便该应用程序可以连接到服务器htpp://192.168.1.11
,但仍然收到错误。我什至尝试过类似http://192.168.1.11:4567
的方法。如何获取物理应用程序以连接到服务器?
//original baseURL for the app
enum Constants {
...
static let baseURLString = "http://localhost:4567"
...
}
iPhone 6模拟器
iPad mini版本9.3.5
原始教程使用Swift 4,iOS 11,Xcode 9,但是我将部署目标和podfile更改为iOS9。
platform :ios, '9.0'
target 'RWPuppies' do
use_frameworks!
pod 'Alamofire', '~> 4.5'
pod 'AlamofireImage', '~> 3.3'
pod 'Stripe'
pod 'Cards'
end
Ruby脚本
#1
require 'sinatra'
require 'stripe'
require 'json'
#2
Stripe.api_key = 'YOUR_TEST_SECRET_KEY'
#3
get '/' do
status 200
return "RWPuppies back end has been set up correctly"
end
#4
post '/charge' do
#5
payload = params
if request.content_type.include? 'application/json' and params.empty?
payload = indifferent_params(JSON.parse(request.body.read))
end
begin
#6
charge = Stripe::Charge.create(
:amount => payload[:amount],
:currency => payload[:currency],
:source => payload[:token],
:description => payload[:description]
)
#7
rescue Stripe::StripeError => e
status 402
return "Error creating charge: #{e.message}"
end
#8
status 200
return "Charge successfully created"
end
已解决:
打开了我的Projects info.plist文件,并添加了一个名为NSAppTransportSecurity的密钥作为字典。添加了一个名为NSAllowsArbitraryLoads的子项作为布尔值,并将其值设置为YES How do I load an HTTP URL with App Transport Security enabled in iOS 9?
将baseURLString设置为http://192.168.1.11:4567
以ruby web.rb -o 0.0.0.0
的身份从终端运行脚本
Cannot access local Sinatra server from another computer on same network