标签: payum

实施Payum/Laravel定期付款

我有一些问题试图让这个工作,我已经成功实现了checkout express(或似乎),但我的系统需要订阅选项,遵循此示例.

现在,我的问题是,在Laravel你不能简单地放一些随机文件,所以我试图以正确的方式做到这一点,遗憾的是,没有关于库的类和方法的文档.

我在控制器中创建了一些功能(我不知道这是不是正确的方法)我现在面临的问题是尝试createRecurringPayment()来应用所需的定期付款金额,这是我猜的最后一步.

谢谢你的帮助.

  • 应用程序/控制器/ PaypalController.php

    public function prepareExpressCheckout(){
        $storage = $this->getPayum()->getStorage('Payum\Core\Model\ArrayObject');
        $details = $storage->createModel();
        $details['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD';
        $details['PAYMENTREQUEST_0_AMT'] = 1.23;
        $storage->updateModel($details);
        $captureToken = $this->getTokenFactory()->createCaptureToken('paypal_es', $details, 'payment_done');
        $details['RETURNURL'] = $captureToken->getTargetUrl();
        $details['CANCELURL'] = $captureToken->getTargetUrl();
        $storage->updateModel($details);
        return \Redirect::to($captureToken->getTargetUrl());
    }
    
    public function prepareSubscribe(){
        $storage = $this->getPayum()->getStorage('Payum\Core\Model\ArrayObject');
        $details = $storage->createModel();
    
        $details['PAYMENTREQUEST_0_AMT'] = 0;
        $details['L_BILLINGTYPE0'] = Api::BILLINGTYPE_RECURRING_PAYMENTS;
        $details['L_BILLINGAGREEMENTDESCRIPTION0'] = "Suscripción por X meses";
        $details['NOSHIPPING'] = 1;
    
        $storage->updateModel($details);
        $captureToken = $this->getTokenFactory()->createCaptureToken('paypal_es', $details, 'payment_done');
        $storage->updateModel($details);
    
        return \Redirect::to($captureToken->getTargetUrl());
    }
    
    public function createRecurringPayment(){
        $payum_token = Input::get('payum_token'); …
    Run Code Online (Sandbox Code Playgroud)

php paypal laravel payum

16
推荐指数
1
解决办法
2719
查看次数

Omnipay和Payum之间的区别

我正在为我的网络应用寻找付款解决方案.我看到有像条纹(用于信用卡)或PayPal插件的API可以处理某些付费方法.

然后我看到有些库可以处理各种付费方式,如Payum(https://github.com/Payum/Payum)或Omnipay(https://github.com/thephpleague/omnipay).

如果我理解正确,它们都是相同类型的库:它们都以标准化的方式处理各种方法的付款.然而,我没有找到两者之间的任何比较,但解决了Payum如何包括OmniPay.所以我很困惑.因此我的问题:

Omnipay是否涵盖与Payum相同的目的.如果是,哪一个有什么优势.如果不是,他们正在实施的付款流程的哪些部分.

paypal omnipay payum

12
推荐指数
1
解决办法
3238
查看次数

如何在使用Sylius 0.16和Payum实施非现场支付网关时完成订单

我一直在努力探讨如何使用Sylius(sylius/sylius-standard,v0.16)实现经典的离线支付网关.

到目前为止,我在bundle的build()方法中得到了这个:

public function build(ContainerBuilder $container)
{
    /** @var PayumExtension $payum */
    $payum = $container->getExtension('payum');
    $payum->addGatewayFactory(new PayWayOffsiteGatewayFactory());
}
Run Code Online (Sandbox Code Playgroud)

这是我的config.yml:

sylius_payment:
    gateways:
        payway_offsite: PayWay

payum:
    gateways:
        payway_offsite:
            payway_offsite:
                secret_key: %tcompayway.secret_key%
                shop_id:    %tcompayway.shop_id%
                username:   %tcompayway.username%
                password:   %tcompayway.password%
                sandbox:    %tcompayway.sandbox%
Run Code Online (Sandbox Code Playgroud)

%compayway.*%字段配置正常,跳过此部分.然后我在PayWayOffsiteGatewayFactory类中得到了这个:

class PayWayOffsiteGatewayFactory extends AbstractGatewayFactory
{
    /**
     * {@inheritdoc}
     */
    public function getName()
    {
        return 'payway_offsite';
    }

    /**
     * {@inheritdoc}
     */
    public function addConfiguration(ArrayNodeDefinition $builder)
    {
        parent::addConfiguration($builder);

        $builder->children()
            ->scalarNode('secret_key')->isRequired()->cannotBeEmpty()->end()
            ->scalarNode('shop_id')->isRequired()->cannotBeEmpty()->end()
            ->scalarNode('username')->isRequired()->cannotBeEmpty()->end()
            ->scalarNode('password')->isRequired()->cannotBeEmpty()->end()
            ->booleanNode('sandbox')->defaultTrue()->end()
            ->end();
    }

    /**
     * {@inheritDoc}
     */
    protected function getPayumGatewayFactoryClass()
    { …
Run Code Online (Sandbox Code Playgroud)

php payment-gateway sylius payum

7
推荐指数
1
解决办法
638
查看次数

覆盖Payum Stripe Bundle模板

我正在尝试自定义StripeBundle的模板,分别是结帐模板vendor\payum\stripe\Payum\Stripe\Resources\views\Action\obtain_checkout_token.html.twig.

这是因为我希望Stripe弹出窗口显示在与付费对象相同的页面中,而不是在单个按钮的单独页面上.说,我想支付产品费用,我在结帐页面按"付款",并希望条纹弹出窗口出现在那里.

我看了一下另一个类似的问题,但我似乎无法让它运作起来.我已尝试app/Resources使用PayumStripeBundle,Payum,Payum/Stripe中的每个文件夹名称组合,但它们似乎都没有覆盖使用过的模板.

bundle的结构也很奇怪,因为它的命名空间是Payum\Bundle\PayumBundle,但是不是包含模板的bundle的Stripe组件在另一个文件夹中.

这个值设置在这里,所以也许Symfony永远不会在文件夹中找到它?

文件夹结构应该如何app/Resources,如果它以这种方式工作?或者,如果这是另一种方式.

php symfony payum

6
推荐指数
1
解决办法
507
查看次数

如何添加paypal pro(omnipay网关)到sylius

我觉得我已经阅读了很多想要帮助添加网关的人,但我似乎没有找到任何解决方案,一旦提问者找到了答案就分享了.我知道有人建议查看Payum Bundle文档,但由于我无法弄清楚Sylius究竟是如何与Payum Bundle集成的,所以我无法从payum文档中获得太多帮助.有人能够帮助解释让PayPal Pro在sylius应用程序中运行所需的内容吗?

我已将此添加到配置文件中:

payum:
    contexts:
        paypal_pro:
            omnipay:
                type: PayPal_Pro
                options:
                    username:  %paypal.username%
                    password:  %paypal.password%
                    signature: %paypal.signature%
                    testMode:  %paypal.test_mode%
            storages:
                Sylius\Component\Core\Model\Order:
                    doctrine:
                        driver: orm
                Sylius\Component\Core\Model\Payment:
                    doctrine:
                        driver: orm
Run Code Online (Sandbox Code Playgroud)

这在我的services.yml文件中:

sylius.payum.paypal.action.capture_payment_using_credit_card:
    class: %sylius.payum.paypal.action.capture_payment_using_credit_card.class%
    tags:
        - { name: payum.action, factory: omnipay }
Run Code Online (Sandbox Code Playgroud)

对于CapturePaymentUsingCreditCardAction类,我只是复制了Sylius的Stripe一个.我认为这就足够了,因为Stripe据说也可以开箱即用.当我输入假信用卡信息(我们处于沙箱模式)时,我只是在重定向到付款方式选择页面后收到"未知付款错误"的Flash消息.根据我从阅读此线程的理解,状态由状态机自动管理.我简单地添加了一个PaymentStatusAction(从Dummy类复制并var_dumping详细信息),但这没有任何帮助.

另外,有人能够解释是否需要ExecuteSameRequestWithDetailsAction?它看起来几乎与CapturePaymentUsingCreditCardAction相同.

paypal paypal-sandbox sylius omnipay payum

5
推荐指数
0
解决办法
722
查看次数

Payum Bundle 的配置如何工作?

我是 Payum 的新手,我正在尝试创建一个新的支付网关。但是我无法弄清楚配置值如何与我创建的文件(操作/工厂等)相关。

这是我到目前为止所拥有的;

payum:
    security:
        token_storage:
            Path\To\PaymentSecurityToken:
                doctrine:
                    driver: orm
    contexts:
        xxx:
            yyyy:
                api:
                    options:
                        sandbox: true
        storages:
            Path\To\Payment:
                doctrine:
                    driver: orm
Run Code Online (Sandbox Code Playgroud)

我不明白我应该放入xxxyyy 的内容。无论我尝试什么价值观,我仍然不明白。我不断收到以下错误。

InvalidConfigurationException: Unrecognized options "yyy" under "payum.contexts.xxx"
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这些值应该是什么以及我设置的值如何与网关相关以及需要在哪里,以便配置实际上与网关代码中的某些内容相匹配?

提前致谢:)

configuration symfony payum

5
推荐指数
1
解决办法
2584
查看次数

Payum自定义网关

我想使用带有payum的新网关,但我感到很困惑.

我有一个事务的流程图,我知道如何实现它,但我不知道如何以payum方式实现它. 在此输入图像描述

我想要的是,有人告诉我:

  • 我需要多少Payum动作?
  • 我需要多少个控制器动作?
  • 我是否需要新的gatewayFoctory或新网关或两者兼而有之?
  • afterUrl和taregtUrl有什么不同?
  • 在Docs中,我们有一个名为"model"的对象!它的目的是什么?

php symfony payum

5
推荐指数
1
解决办法
1103
查看次数

Payum - PaymentDetails对象在完成的操作中所在的位置

我完成了aciton,不知道如何获得paymentDetails对象...

这是手册:http: //payum.forma-dev.com/documentation/0.8/PayumBundle/purchase_done_action

我尝试从http://payum.forma-dev.com/documentation/0.8/PayumBundle/simple_purchase_examples/paypal_express_checkout之前的步骤获取对象PaymentDetails

UPDATE1

public function doneAction(){

    $request = $this->getRequest();

    /**
     * @var $token PayumSecurityToken
     */
    $token = $this->get('payum.security.http_request_verifier')->verify($request);

    /**
     * @var $details PaymentDetails
     */
    $details = $token->getDetails();


    var_dump($details);
Run Code Online (Sandbox Code Playgroud)

object(Payum\Core\Model\Identificator)[345]
  protected 'class' => string 'ed\partnerBundle\Entity\PaymentDetails' (length=38)
  protected 'id' => int 1
Run Code Online (Sandbox Code Playgroud)

UPDATE2

 $details = unserialize($token->getDetails());

ContextErrorException: Notice: unserialize(): Error at offset 0 of 40 bytes in /home/grek/public_html/edpartner/src/ed/partnerBundle/Controller/PaymentController.php line 110
Run Code Online (Sandbox Code Playgroud)

php symfony payum

0
推荐指数
1
解决办法
1397
查看次数

在集成到android中时,PayUMoney支付网关中出现"发生了一些错误"

我已经验证了PayUMoney的帐户.在沙盒模式下单击paynow按钮时,它显示"发生了一些错误".我用过pnp sdk.

此代码用于onnlick on paynow按钮.

payNowButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            userAddress = address_line1.get(0) + "," + address_line2.get(0) + "," + address_pincode.get(0)
                    + "," + address_taluka + "," + address_district + "," + address_state;
            if (payment_type.equals("online")) {
                launchPayUMoneyFlow();
            } else if (payment_type.equals("cod")) {
                launchNormalFlow();
            }

        }
    });
Run Code Online (Sandbox Code Playgroud)

这是哈希计算功能

public static String hashCal(String str) {
    byte[] hashseq = str.getBytes();
    StringBuilder hexString = new StringBuilder();
    try {
        MessageDigest algorithm = MessageDigest.getInstance("SHA-512");
        algorithm.reset();
        algorithm.update(hashseq);
        byte messageDigest[] = algorithm.digest(); …
Run Code Online (Sandbox Code Playgroud)

android payum payu payumoney

0
推荐指数
1
解决办法
5874
查看次数