【问题标题】:call a paypal javascript function from swift 4从 swift 4 调用贝宝 javascript 函数
【发布时间】:2018-07-18 14:26:07
【问题描述】:

这是 paypal 支付的 java 脚本如何从 swift 4 调用这个以及如何将金额传递给这个脚本,现在支付的金额是硬编码的

paypal.Button.render({

                         env: 'sandbox', // sandbox | production

                         // PayPal Client IDs - replace with your own
                         // Create a PayPal app: https://developer.paypal.com/developer/applications/create
                         client: {
                         sandbox:    'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R',
                         production: '<insert production client id>'
                         },

                         // Show the buyer a 'Pay Now' button in the checkout flow
                         commit: true,


                         // payment() is called when the button is clicked
                         payment: function(data, actions) {

                         // Make a call to the REST api to create the payment
                         return actions.payment.create({
                                                       payment: {
                                                       transactions: [
                                                                      {
                                                                      amount: { total: '0.01', currency: 'USD' }
                                                                      }
                                                                      ]
                                                       }
                                                       });
                         },




                         // onAuthorize() is called when the buyer approves the payment
                         onAuthorize: function(data, actions) {

                         // Make a call to the REST api to execute the payment
                         return actions.payment.execute().then(function() {
                                                               window.alert('Payment Complete!');
                                                               });
                         }

                         }, '#paypal-button-container');

我试过的代码是:

 @IBAction func buttonActionPay(_ sender: UIButton) {

    let htmlPath = Bundle.main.path(forResource: "sampleHTMLCode", ofType: "html")

    let url = URL(fileURLWithPath: htmlPath!)
    let request = URLRequest(url: url)
    webView.load(request)

}

上面的javascript代码来自paypal开发者网站,是否需要修改代码。

【问题讨论】:

    标签: javascript ios paypal swift4


    【解决方案1】:

    只需像这样更改 javascript。

    <!DOCTYPE html>
    
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
            <script src="https://www.paypalobjects.com/api/checkout.js"></script>
    </head>
    
    <body>
        <div id="paypal-button-container"></div>
    
    
        <script>
    
           // y = 12;
    
         function bar(qq){
    
            var y = qq
    
    
    
    
            paypal.Button.render({
    
    
                                 env: 'sandbox', // sandbox | production
    
                                 // PayPal Client IDs - replace with your own
                                 // Create a PayPal app: https://developer.paypal.com/developer/applications/create
                                 client: {
                                 sandbox:    'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R',
                                 production: '<insert production client id>'
                                 },
    
                                 // Show the buyer a 'Pay Now' button in the checkout flow
                                 commit: true,
    
    
                                 // payment() is called when the button is clicked
                                 payment: function(data, actions) {
    
                                 // Make a call to the REST api to create the payment
                                 return actions.payment.create({
                                                               payment: {
                                                               transactions: [
                                                                              {
                                                                              amount: { total: y, currency: 'USD' }
                                                                              }
                                                                              ]
                                                               }
                                                               });
                                 },
    
    
                                 // onAuthorize() is called when the buyer approves the payment
                                 onAuthorize: function(data, actions) {
    
                                 // Make a call to the REST api to execute the payment
                                 return actions.payment.execute().then(function() {
                                                                       window.alert('Payment Complete!');
                                                                       });
                                 }
    
                                 }, '#paypal-button-container');
           }
    
    
                   </script>
        </body>
    

    Swift 代码是:

    import UIKit
       import WebKit
       import JavaScriptCore
    
    
         class ViewController: 
          UIViewController,WKUIDelegate,WKNavigationDelegate {
          var cont = String()
    
          var jsContext: JSContext!
    
    
             var webView: WKWebView
         required init(coder aDecoder: NSCoder) {
        self.webView = WKWebView(frame: CGRect.zero)
        super.init(coder: aDecoder)!
         }
         override func loadView() {
        super.loadView()
    
        let userContentController = WKUserContentController()
    
        let source = "bar('12');"
        let userScript = WKUserScript(source: source, injectionTime: 
        WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true)
        userContentController.addUserScript(userScript)
    
        let configuration = WKWebViewConfiguration()
        configuration.userContentController = userContentController
        self.webView = WKWebView(frame: self.view.frame, configuration: 
        configuration)
         }
    
        override func viewDidLoad() {
        super.viewDidLoad()
       ///
    
    
        view.addSubview(webView)
    
        webView.translatesAutoresizingMaskIntoConstraints = false
        let height = NSLayoutConstraint(item: webView, attribute: .height, 
        relatedBy: .equal, toItem: view, attribute: .height, multiplier: 1, 
        constant: 0)
        let width = NSLayoutConstraint(item: webView, attribute: .width, 
         relatedBy: .equal, toItem: view, attribute: .width, multiplier: 1, 
         constant: 0)
        view.addConstraints([height, width])
    
        let path = Bundle.main.path(forResource: "sampleHTMLCode", ofType: 
           "html")!
        let url = URL(fileURLWithPath: path)
    
        webView.load(URLRequest(url: url))
        webView.allowsBackForwardNavigationGestures = true
    
    
        ///
        webView.navigationDelegate = self
    
          }
    
    
    
      @IBAction func buttonActionPay(_ sender: UIButton) {
    
        let htmlPath = Bundle.main.path(forResource: "sampleHTMLCode", 
    ofType: "html")
    
        let url = URL(fileURLWithPath: htmlPath!)
        let request = URLRequest(url: url)
        webView.load(request)
    
         }
    
    
    
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2018-03-07
      • 2020-10-27
      • 1970-01-01
      • 2015-07-01
      • 2019-01-07
      • 2014-03-23
      • 2014-04-20
      相关资源
      最近更新 更多