创建PostFinance付款请求

时间:2020-07-22 12:58:10

标签: php concrete5

PHP: Can anyone help me how to create a payment request using wysow repository?

我找到了此链接,但没有任何解决方案。我正在使用Concrete5的社区商店,并试图创建PostFinance付款程序包/附加程序。我在/packages/community_store_postfinance/src/CommunityStore/Payment/Methods/CommunityStorePostfinance/CommunityStorePostfinancePaymentMethod.php文件(这是GitHub中示例的副本)中具有以下代码:

$passphrase = new Passphrase($shaInSecret);
$shaComposer = new AllParametersShaComposer($passphrase);

$ecommercePaymentRequest = new EcommercePaymentRequest($shaComposer);

// Set various params:
$ecommercePaymentRequest->setPspid($postfinancePsid);
$ecommercePaymentRequest->setOrderid($custmerOrder->getOrderId());
$ecommercePaymentRequest->setPostFinanceUri(EcommercePaymentRequest::TEST);

$ecommercePaymentRequest->setAmount((Int)$amount);
$ecommercePaymentRequest->setCurrency('CHF');
$ecommercePaymentRequest->setCustomername($customerName);
$ecommercePaymentRequest->setOwnerAddress($address);
$ecommercePaymentRequest->validate();

$formGenerator = new SimpleFormGenerator;
$paymentForm = $formGenerator->render($ecommercePaymentRequest);
// I then pass this to my redirect view
$this->set('paymentForm', $paymentForm);

我已调试并按照PostFinance的要求创建了表格,并且看起来正确无误,并且我重定向到了PostFinance付款确认页面,但没有任何详细信息传递给PostFinance。我只是想知道我是否错过了某些内容,还是应该在请求中自动添加其他内容?任何见解将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

重定向时,$this->set()设置的值将丢失。您需要将其设置为会话。或者,您可以在要重定向到的方法中进行表单生成(可以在此方法中从上面调用代码,但是除了重定向之外,您还需要返回生成的表单)。

但是我认为还有其他问题:$this->set()通常是来自控制器(页面控制器,块控制器等)的方法。但是您正在src文件夹的类中使用它。 另一个问题似乎是路径:packages/community_store/postfinance/src/CommunityStore/Payment/Methods。应该不是packages/postfinance/src/CommunityStore/Payment/Methods,因为软件包名称是postfinance而不是community_store

答案 1 :(得分:0)

以防万一其他人想知道我的解决方案,这对我来说是一个愚蠢的错误,因为我要做的只是func testLoadData() { let expectation = expectation(description: "wait for isViewLoaded set to true") let sut = Controller() let mockView = View() mockView.setController(controller: sut) controller.loadData { expectation.fulfill() } waitForExpectation(timeout: 5, handler: nil) XCTAssertTrue(mockView.isViewLoaded, "isViewLoaded equals to true") } return,这解决了我的问题并将表格成功发送给后金融。

尽管现在我有一个问题,无法获得PostFinance后端生成的签名来匹配PostFinance Signature not matching