我在iOS应用程序上遇到了条带集成问题。
据美国国防部称,
1) iOS应用程序需要首先生成令牌,并将该令牌传递给自己服务器上的php库
import UIKit import Stripe class ViewController: UIViewController, STPPaymentCardTextFieldDelegate { let paymentTextField = STPPaymentCardTextField() override func viewDidLoad() { super.viewDidLoad() Stripe.setDefaultPublishableKey("pk_test_xxxxxxxxxxxxxxxxxxxxx") // Do any additional setup after loading the view, typically from a nib. paymentTextField.frame = CGRectMake(15, 15, CGRectGetWidth(self.view.frame) - 30, 44) paymentTextField.delegate = self view.addSubview(paymentTextField) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func save(sender: AnyObject) { if let card:STPCardParams = paymentTextField.cardParams { STPAPIClient.sharedClient().createTokenWithCard(card) { (token, error) -> Void in if let error = error { print(error) } else if let token = token { self.createBackendChargeWithToken(token) { status in } } } } } func createBackendChargeWithToken(token: STPToken, completion: PKPaymentAuthorizationStatus -> ()) { let url = NSURL(string: "http://localhost:7777/myproject/index.php/rest/stripe/submit")! let request = NSMutableURLRequest(URL: url) request.HTTPMethod = "POST" let body = "stripeToken=\(token.tokenId)" print(body) request.HTTPBody = body.dataUsingEncoding(NSUTF8StringEncoding) let configuration = NSURLSessionConfiguration.ephemeralSessionConfiguration() let session = NSURLSession(configuration: configuration) print(request) let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in if error != nil { completion(PKPaymentAuthorizationStatus.Failure) print("Fail to charge") } else { completion(PKPaymentAuthorizationStatus.Success) print("Successfully Charegd") print(PKPaymentAuthorizationStatus.Success) } } task.resume() } }
2) php lib按如下方式执行以剥离API
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxx"); if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { $token = $_POST['stripeToken']; $charge = \Stripe\Charge::create(array( "amount" => 5000, // amount in cents, so need to multiply with 100 .. $amount * 100 "currency" => "usd", "source" => $token, "description" => "Test Order From iOS" )); }
3) 工作正常,我可以在Stripe Dashboard上收到付款交易。
4) 但当我切换到另一个条带帐户(如客户端帐户)时,我需要更改可发布密钥(来自移动应用)和密钥(来自服务器端)对吗?
5)更改新密钥后,付款无法在条纹仪表板接收任何更多。这里是日志消息从条纹。
{error: { type: "invalid_request_error" message: "Stripe no longer supports API requests made with TLS 1.0. Please initiate HTTPS connections with TLS 1.2 or later. You can learn more about this at https://stripe.com/blog/upgrading-tls."} }
错误状态为401
我的问题是,当切换API(可发布)时,为什么应用程序不工作
答案在错误对象提供的消息中给出;您的PHP(或堆栈中的其他层)没有配置为通过具有足够高版本的协议(它指示最低版本为1.2,这已经是非常古老——1.0几年前就被证明是易碎的)...这将是非常不安全的,所以当然是不允许的。
这可能与Stripe帐户无关,但堆栈(LAMP)配置发生了变化。
或者,如果您实际上只是在完全相同的文件上来回更改文本,并且仅在一个帐户上出现此错误,那么帐户的状态可能会有所不同;我记得几周/几个月前,我必须通过仪表板启动一个突破性的更新。
很可能一个帐户执行了此更新,而另一个没有;因此使用不同的API版本具有不同的安全要求
针对 J2EE 体系,Hibernate 有如下几个集成的方面: 容器管理的数据源(Container-managed datasources): Hibernate 能使用通过容器管理,并由 JNDI 提供的 JDBC 连接。通常,特别是当处理多个数据源的分布式事务的时候,由一个 JTA 兼容的 TransactionManager 和一个 ResourceManager 来处理事务管理(CMT
我正在试用一个简单的示例。我能够运行服务器应用程序和客户端应用程序来彼此通信。我现在需要了解一个教程,说明两个客户机如何通过服务器相互通信。 我怎么能这么做?有人能给我指出一个好的教程或者解释如何在Java中实现这一点吗
问题内容: 我正在编写一个Java包,该包将由另一种语言(matlab)调用。如果我的matlab进程结束,我希望Java进程继续运行。每当MATLAB重新启动时,它都应该能够与现有的运行过程进行通信。因此,我认为我需要让Java应用程序通过客户端/服务器模型中的套接字进行通信。我设想具有一组简单的功能: startServer(主机,端口) runCommand(服务器,命令…) stopSer
我使用ESAPI jar进行验证。当我调用isValidInput(Context,input.trim(),ValidateConstant时。APLHA_NUMERIC_TYPE,最大长度,真);或isValidInput(上下文,输入,ValidateConstant.NUMERIC_TYPE,maxLength,true);并且输入错误,带有单独的字符。然后它抛出一些像 当我单独执行程序时
10.9. 与特定应用服务器集成 一般来说,Spring的事务抽象与应用服务器是无关的。另外,使用Spring的JtaTransactionManager 类时,一种可选的方式是通过JNDI查询获得JTA UserTransaction 和 TransactionManager 对象,其中后者可以被设置为自动探测,这时针对不同的应用服务器有不同的方式。能够直接访问 TransactionManag
我正在Android平板电脑上创建一个应用程序,需要扫描条形码并获得结果。我使用的平板电脑有内置扫描仪和摄像头。 我曾尝试使用Zstar Lib,但这使用平板电脑上的摄像头,而不是调用扫描仪。 如何从我的应用程序中找到直接调用扫描仪所需的实际意图? 平板电脑上预装了一个条形码实用程序应用程序,有一个用于捕获条形码数据的基本屏幕,我想我可能应该在我的应用程序中通过Intent来调用它。但是,我如何知