|
開發金流時一定會遇到一些鳥問題
主要是伺服器是對方的
以下就是我遇到的問題,如圖
Flask,綠界,ecpay,模板,render_template
1. 到github 下載綠界的範例代碼
2. 把代碼放入CPanel Flask 下的目錄
範例 mvc-new/base 目錄下
打開 sample_create_order_ALL.py檔案
修改一下如下
- # -*- coding: utf-8 -*-
- from base import app
- from flask import render_template,render_template_string
- import importlib.util
- spec = importlib.util.spec_from_file_location(
- "ecpay_payment_sdk",
- "/home/flask/mvc-new/base/ecpay_payment_sdk.py"
- )
- module = importlib.util.module_from_spec(spec)
- spec.loader.exec_module(module)
- from datetime import datetime
- @app.route('/create_order_sample', methods=['POST'])
- def create_order_sample():
- order_params = {
- 'MerchantTradeNo': datetime.now().strftime("NO%Y%m%d%H%M%S"),
- 'StoreID': '',
- 'MerchantTradeDate': datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
- 'PaymentType': 'aio',
- 'TotalAmount': 2000,
- 'TradeDesc': '訂單測試',
- 'ItemName': '商品1#商品2',
- 'ReturnURL': 'https://www.ecpay.com.tw/return_url.php',
- 'ChoosePayment': 'ALL',
- 'ClientBackURL': 'https://www.ecpay.com.tw/client_back_url.php',
- 'ItemURL': 'https://www.ecpay.com.tw/item_url.php',
- 'Remark': '交易備註',
- 'ChooseSubPayment': '',
- 'OrderResultURL': 'https://www.ecpay.com.tw/order_result_url.php',
- 'NeedExtraPaidInfo': 'Y',
- 'DeviceSource': '',
- 'IgnorePayment': '',
- 'PlatformID': '',
- 'InvoiceMark': 'N',
- 'CustomField1': '',
- 'CustomField2': '',
- 'CustomField3': '',
- 'CustomField4': '',
- 'EncryptType': 1,
- }
- extend_params_1 = {
- 'ExpireDate': 7,
- 'PaymentInfoURL': 'https://www.ecpay.com.tw/payment_info_url.php',
- 'ClientRedirectURL': '',
- }
- extend_params_2 = {
- 'StoreExpireDate': 15,
- 'Desc_1': '',
- 'Desc_2': '',
- 'Desc_3': '',
- 'Desc_4': '',
- 'PaymentInfoURL': 'https://www.ecpay.com.tw/payment_info_url.php',
- 'ClientRedirectURL': '',
- }
- extend_params_3 = {
- 'BindingCard': 0,
- 'MerchantMemberID': '',
- }
- extend_params_4 = {
- 'Redeem': 'N',
- 'UnionPay': 0,
- }
- inv_params = {
- # 'RelateNumber': 'Tea0001', # 特店自訂編號
- # 'CustomerID': 'TEA_0000001', # 客戶編號
- # 'CustomerIdentifier': '53348111', # 統一編號
- # 'CustomerName': '客戶名稱',
- # 'CustomerAddr': '客戶地址',
- # 'CustomerPhone': '0912345678', # 客戶手機號碼
- # 'CustomerEmail': 'abc@ecpay.com.tw',
- # 'ClearanceMark': '2', # 通關方式
- # 'TaxType': '1', # 課稅類別
- # 'CarruerType': '', # 載具類別
- # 'CarruerNum': '', # 載具編號
- # 'Donation': '1', # 捐贈註記
- # 'LoveCode': '168001', # 捐贈碼
- # 'Print': '1',
- # 'InvoiceItemName': '測試商品1|測試商品2',
- # 'InvoiceItemCount': '2|3',
- # 'InvoiceItemWord': '個|包',
- # 'InvoiceItemPrice': '35|10',
- # 'InvoiceItemTaxType': '1|1',
- # 'InvoiceRemark': '測試商品1的說明|測試商品2的說明',
- # 'DelayDay': '0', # 延遲天數
- # 'InvType': '07', # 字軌類別
- }
- # 建立實體
- ecpay_payment_sdk = module.ECPayPaymentSdk(
- MerchantID='3002607',
- HashKey='pwFHCqoQZGmho4w6',
- HashIV='EkRm7iFT261dpevs'
- )
- # 合併延伸參數
- order_params.update(extend_params_1)
- order_params.update(extend_params_2)
- order_params.update(extend_params_3)
- order_params.update(extend_params_4)
- # 合併發票參數
- order_params.update(inv_params)
- try:
- # 產生綠界訂單所需參數
- final_order_params = ecpay_payment_sdk.create_order(order_params)
- # 產生 html 的 form 格式
- action_url = 'https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5' # 測試環境
- # action_url = 'https://payment.ecpay.com.tw/Cashier/AioCheckOut/V5' # 正式環境
- html = ecpay_payment_sdk.gen_html_post_form(action_url, final_order_params)
- print(html)
- except Exception as error:
- print('An exception happened: ' + str(error))
複製代碼
這時提交網頁會跑到/create_order_sample下
會出現錯誤找到 /var/log/apache2/error_log
- 錯誤代碼
- App 2809284 output: TypeError: The view function for 'create_order' did not return a valid response. The function either returned None or ended without a return statement.
- App 2809284 output: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
複製代碼 問了綠界,他說可能是編碼問題 (要轉成UTF-8)
結果測了半天,還是沒解開問題
最後google
- The view function for 'create_order' did not return a valid response.
複製代碼 再看了程式碼才發現,原來是模板沒有回傳
把上面
改成
就可以了
Flask,綠界,ecpay,模板,render_template
文章來源:NetYea 網頁設計
|
|