Интеграция Payumoney в ионном с inappbrowser

Я пытаюсь интегрировать Payumoney в браузере приложения. мой код payubiz.html

<form name="sendParam" method="post" action="https://secure.payu.in/_payment">
    <!--<form name="sendParam" method="post" action="https://test.payu.in/_payment">-->
        <input type="hidden" name="key" value="tryrddd" />
        <input type="hidden" name="txnid" value="mdt24opk" />
        <input type="hidden" name="amount" value="10" />
        <input type="hidden" name="productinfo" value="test" />
        <input type="hidden" name="firstname" value="s" />
        <input type="hidden" name="email" value="s@gmail.com" />
        <input type="hidden" name="phone" value="34353454" />
        <input type="hidden" name="surl" value="https://payu.herokuapp.com/success" />
        <input type="hidden" name="Furl" value="https://payu.herokuapp.com/failure" />
                   <input type="hidden" name="Hash" value="a07135ceb6d26f45454544545543435454354360c0b1f0290b" />

    <input type="hidden" name="service_provider" value="payu_paisa" />

        <input type="submit" value="enter" style="position: absolute; left: -9999px" />
    </form> 

мой файл JS

  function iabLoadStart(event) {

}

  function iabLoadStop(event) {
if (event.url.match("https://payu.herokuapp.com/success")) {
    console.log(iabRef);
    iabRef.executeScript({
        code: "document.body.innerHTML"
    }, function (values) {
        //incase values[0] contains result string
        var a = getValue(values[0], 'mihpayid');
        var b = getValue(values[0], 'status');
        var c = getValue(values[0], 'unmappedstatus');
        console.log(a + b + c);

    });
iabRef.close();

}

    function getValue(source, key) {
var pattern = key + '=(\\w+)(&amp;)?';
var expr = new RegExp(pattern);
var result = source.match(expr);
return result[1];

}

 function iabLoadError(event) {
alert(event.type + ' - ' + event.message);

}

function iabClose(event) {
iabRef.close();
iabre = cordova.InAppBrowser.close();
iabRef.removeEventListener('loadstart', iabLoadStart);
iabRef.removeEventListener('loadstop', iabLoadStop);
iabRef.removeEventListener('loaderror', iabLoadError);
iabRef.removeEventListener('exit', iabClose);

}

function onDeviceReadyTest() {
iabre = cordova.InAppBrowser.open('payuBiz.html', '_blank', 'location=no');
iabRef.addEventListener('loadstart', iabLoadStart);
iabRef.addEventListener('loadstop', iabLoadStop);
iabRef.addEventListener('loaderror', iabLoadError);
iabRef.addEventListener('exit', iabClose);

}

давая фиксированные значения из я могу подключиться к Payumoney. Мое требование - мне нужно передать динамическую электронную почту и телефон, а также сумму и хэш, которые поступают из ионного приложения. Как я могу изменить значения в открытом inappbrowser.

1 ответ

Я закончил с Angularjs:

Используйте директиву:

.directive('dynamicFormAction', function() {
return {
    restrict: 'A',
    scope: {
        'dynamicFormAction': '='
    },
    link: function(scope, el, attrs) {
        scope.$watch('dynamicFormAction', function (action) {
            el[0].action = action;
        });
    }
};
});

html: здесь я использую вышеупомянутую директиву Dynamic-form-action.

<form ng-submit="placeorderwithpayment(checkout,guest)" method="post" action="" dynamic-form-action="customAction" id="payuid">
<input type="text" ng-model="paymentdata.txnid"  name="txnid" class="hidden">
<input type="text" ng-model="paymentdata.key"  name="key" class="hidden" >
<input type="text" ng-model="paymentdata.amount"  name="amount" class="hidden">       
<input type="text" ng-model="paymentdata.productinfo"  name="productinfo" class="hidden" >
<input type="text" ng-model="paymentdata.firstname" name="firstname" class="hidden">
<input type="email" ng-model="paymentdata.email"  name="email"  class="hidden">
<input type="text" ng-model="paymentdata.phone"  name="phone" class="hidden">         
 <input type="text" ng-model="paymentdata.hash" name="hash" class="hidden">
<input type="text" ng-model="paymentdata.surl"  name="surl" class="hidden">
<input type="text" ng-model="paymentdata.furl"  name="furl" class="hidden">
<input type="text" ng-model="paymentdata.service_provider"  name="service_provider" class="hidden">

 <button type="submit" class="button btn-proceed-checkout"><span>Place Order</span></button>

Js: передача всех параметров с объектом checkout, объектом userinfo

$scope.placeorderwithpayment=function(checkout){
$rootScope.paymentdata.txnid=Math.floor(100000000000+(Math.random()*900000000000));
$rootScope.paymentdata.salt="HseUIoSb"
$rootScope.paymentdata.key="WHlKGc";
$rootScope.paymentdata.amount=checkout.grandtotal;
$rootScope.paymentdata.productinfo=$rootScope.checkout
  // your username
$rootScope.paymentdata.firstname=$rootScope.userinfo.name;
 // your Email
$rootScope.paymentdata.email=$rootScope.userinfo.email
 // your Contact Number
$rootScope.paymentdata.phone=$rootScope.userinfo.contactno;
// success page
$rootScope.paymentdata.surl="http://localhost/foodzard/success.php"
// Failure page
$rootScope.paymentdata.furl="http://localhost/foodzard/failure.php"
$rootScope.paymentdata.service_provider="payu_paisa"
var string = $rootScope.paymentdata.key + '|' + $rootScope.paymentdata.txnid + '|' + $rootScope.paymentdata.amount + '|' + $rootScope.paymentdata.productinfo + '|' + $rootScope.paymentdata.firstname + '|' + $rootScope.paymentdata.email + '|||||||||||' + $rootScope.paymentdata.salt;
 $rootScope.paymentdata.hash = $scope.SHA512(string);
$rootScope.customAction = 'postform.php'; 
 }

Payumoney принимает только код Sha512 $scope.SHA512(строка) Вызов метода placeorder с методом оплаты:

You can Generate hash code   
$scope.SHA512=function(string){

------------
------------
 }

Затем, наконец, страница оплаты будет успешно перенаправлена:

Другие вопросы по тегам